Использование OneClassSVM с GridSearchCV

Я пытаюсь выполнить функцию GridSearchCV на OneClassSVM, но я не могу найти правильный метод оценки для OCSVM. Из того, что я собрал, что-то вроде OneClassSVM.score не существует, поэтому у него нет функции оценки по умолчанию, необходимой в GridSearchCV. К сожалению, никакие методы оценки из документации также не работают, потому что они предназначены для контролируемого ML, а OCSVM - это неконтролируемый метод.

Есть ли способ выполнить GridSearch (или что-то подобное, позволяя мне настроить модель с правильными параметрами) на OneClassSVM??

Вот мой код для GridSearchCV

nus = [0.001, 0.01, 0.1, 1]
gammas = [0.001, 0.01, 0.1, 1]
tuned_parameters = {'kernel' : ['rbf'], 'gamma' : gammas, 'nu': nus}
grid_search = GridSearchCV(svm.OneClassSVM(), tuned_parameters, 
scoring="??????????????????????", n_jobs=4)
grid_search.fit(X_train)

Да, я знаю, что.fit принимает только один параметр, но так как это неконтролируемый метод, у меня нет Y, чтобы поместить его туда. Спасибо вам за помощь.

0 ответов

Я знаю, что это поздний ответ, но, надеюсь, он кому-нибудь пригодится. Для настройки параметров вам необходимо иметь правильные метки (outlier/inliner). Затем, когда у вас есть правильные параметры, вы можете использовать OneClassSVM без присмотра.

Таким образом, оценочная функция для этого подхода может быть, например:

  • f1
  • точность
  • отзыв

Код для проверки точности и отзыва баллов:

scores = ['precision', 'recall']
for score in scores:
    clf = GridSearchCV(svm.OneClassSVM(), tuned_parameters, cv=10,
                           scoring='%s_macro' % score, return_train_score=True)

    clf.fit(X_train, y_train)

    resultDf = pd.DataFrame(clf.cv_results_)
    print(resultDf[["mean_test_score", "std_test_score", "params"]].sort_values(by=["mean_test_score"], ascending=False).head())

    print("Best parameters set found on development set:")
    print()
    print(clf.best_params_)

Вот ссылка с примером использования ElipticEnvelope (еще один алгоритм обнаружения аномалий) с GridSearchCV: https://sdsawtelle.github.io/blog/output/week9-anomaly-andrew-ng-machine-learning-with-python.html

Здесь вы можете найти пример использования точности и оценки отзыва с алгоритмом классификации: https://scikit-learn.org/stable/auto_examples/model_selection/plot_grid_search_digits.html

Другие вопросы по тегам