В чем разница между оценками в RFECV и GridSearchCV? - PullRequest
0 голосов
/ 27 октября 2019

Я пытаюсь запустить RFECV, чтобы выбрать лучшие функции, и GridSearchCV, чтобы получить лучшие гиперпараметры. Мой код выглядит следующим образом:

params = {'estimator__C': [1e-4, 1e4]}
estimator = LogisticRegression(random_state=123)
selector = RFECV(estimator, step=1, cv=5, scoring='recall')
clf = GridSearchCV(selector, params, cv=5)
clf.fit(X_train, y_train)

Когда я включаю одну и ту же метрику оценки в GridSearchCV, я получаю разные лучшие функции, n_features и параметры из cv_results. Почему это происходит и какой из этих подходов является правильным?

params = {'estimator__C': [1e-4, 1e4]}
estimator = LogisticRegression(random_state=123)
selector = RFECV(estimator, step=1, cv=5, scoring='recall')
clf = GridSearchCV(selector, params, cv=5, scoring='recall')
clf.fit(X_train, y_train)

1 Ответ

1 голос
/ 27 октября 2019

Почему это происходит

Во втором случае, когда вы не укажете явно, scoring, GridSearchCV будет использовать оценку по умолчанию для используемой оценки, здесьLogisticRegression;из документов :

оценка: строка, вызываемая, список / кортеж, dict или None, по умолчанию: нет

[...]

Если Нет, используется метод оценки оценщика.

И что это за оценка для LogisticRegression? Снова из документов :

оценка (self, X, y, sample_weight = None)

Возвращает среднюю точность данных и данных теста.

Итак, в первом случае для детали GridSearchCV вы получите параметры, которые максимизируют точность ,в то время как во втором те, которые максимизируют , вспоминают . В принципе, параметры, которые максимизируют эти две разные метрики, не обязательно должны быть одинаковыми (они, конечно, могут быть, но они вполне могут не быть, как здесь).

Какой из этих подходов является правильным?

Технически говоря, оба подхода верны;Единственный, кто может ответить на этот вопрос - это вы сами, и это связано с тем, какая метрика предпочтительнее для вашей бизнес проблемы.

Тем не менее, первый подход, по общему признанию, выглядит довольно странно -почему вы хотите оптимизировать для двух разных метрик во время RFECV и GridSearchCV? По крайней мере, в принципе, было бы гораздо разумнее оптимизировать все в соответствии с выбранной вами метрикой.

Опять же, имейте в виду, что все эти методы на самом деле являются ad hoc подходами, без особой теории. позади них;конечный судья - эксперимент. Итак, если вы заинтересованы, скажем, в максимизации точности вашей окончательной модели, но вы обнаружите, что промежуточный этап RFECV, который пытается максимизировать отзыв, дает лучшую общую точность в конце, вы вполне можете просто пойти наэто ...

...