Использование 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