Несоответствие между best_score_ и наивысшим средним_test_score в cv_results_ HalvingGridSearchCVPython

Программы на Python
Ответить
Гость
 Несоответствие между best_score_ и наивысшим средним_test_score в cv_results_ HalvingGridSearchCV

Сообщение Гость »

Проблема
Я использую HalvingGridSearchCV в scikit-learn для настройки гиперпараметров модели XGBoost в конвейере imbalanced-learn. Я заметил, что best_score_ (и, следовательно, best_params_) не совпадает с самым высоким mean_test_score в cv_results_. Это несоответствие вызывает у меня недоумение, тем более что в некоторых случаях оно может быть существенным; Изначально я ожидал, что best_score_ будет соответствовать самому высокому значению среднего_test_score из cv_results_, поскольку этот показатель обычно представляет собой наиболее эффективную модель.

Разумно ли рассматривать модель с самым высоким средним_test_score в cv_results_ как допустимый выбор для развертывания вместо best_estimator_? Какие компромиссы следует учитывать?

Поскольку я не могу предоставить полный конвейер или данные, я делюсь соответствующими частями кода:

из imblearn.ensemble import BalancedBagingClassifier из импорта imblearn FunctionSampler из imblearn.pipeline конвейер импорта из xgboost импортировать XGBClassifier из sklearn.model_selection импорт TimeSeriesSplit # данные Х, у = ... модель = Конвейер([ ('выборка', FunctionSampler( ... )), ('классификация', BalancedBagingClassifier( base_estimator=XGBClassifier( eval_metric='aucpr', use_label_encoder=False) )) ]) параметры = { 'classification__base_estimator__max_length': [3, 5, 7, 10], 'classification__base_estimator__gamma': [0., 1e-4, 1e-2, 0.1, 1.] } cv = TimeSeriesSplit (n_splits = 5) clf = HalvingGridSearchCV( оценщик = модель, param_grid=параметры, скоринг = 'average_precision', коэффициент=3, мин_ресурсы=2500, резюме = резюме, подробный = 1, ремонт = Истина, ) clf.fit(X, y) Результаты: [*]Лучший результат: 0,3516, лучшие параметры: max_глубина = 10, гамма = 1. [*]Наивысший средний балл теста: 0,4006, соответствующие параметры: max_глубина = 7, гамма = 0,1. Комбинация параметров, соответствующая предположительно лучшему результату, иногда даже не входит в пятерку самых высоких средних результатов тестов.
Подводя итог: [*]Почему best_score_ и самый высокий средний_test_score в cv_results_ могут не совпадать, и существуют ли конкретные критерии или механизмы в HalvingGridSearchCV или XGboost, которые объясняют это это? [*]Как мне следует интерпретировать это несоответствие при выборе лучшей модели для развертывания? Рассматривая модель с самым высоким значениемmean_test_score из cv_results_ в качестве альтернативы best_estimator_, какие компромиссы мне следует учитывать?
Будем очень признательны за любую информацию. Хотя я не могу делиться реальными данными, я могу предоставить дополнительные фрагменты кода или подробности для контекста. Спасибо!
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»