#python #scikit-learn #cross-validation #gridsearchcv
#python #scikit-учиться #перекрестная проверка #gridsearchcv
Вопрос:
У меня проблема с классификацией двоичных временных рядов.
Поскольку это временной ряд, я не могу использовать только train_test_split
свои данные. Итак, я использовал объект tscv = TimeSeriesSplit()
из этой ссылки и получил что-то вроде этого:
Я вижу из GridSearchCV и cross_val_score, что я могу передать в качестве параметра свою стратегию разделения cv = tscv
. Но мой вопрос в том, в чем разница между GridSearchCV
и coss_val_score
? Использования одного из них достаточно для обучения / тестирования моей модели? или я должен использовать оба? Сначала GridSearchCV
, чтобы получить лучшие гиперпараметры, а затем cross_val_score
?
Комментарии:
1. По сути, они выполняют одни и те же задания, но по-разному. Фактически,
GridSearchCV
он сам используетcross_val_score
для поиска оптимизированной комбинации параметров. Известно, что GridSearch является очень медленным методом настройки ваших гиперпараметров, и вам гораздо лучше придерживатьсяRandomSearchCV
или более продвинутых байесовских методов оптимизации гиперпараметров
Ответ №1:
Поиск по сетке — это метод оценки моделей с использованием различных настроек гиперпараметров (значения которых вы определяете заранее). Вы GridSearch
можете использовать перекрестную проверку (следовательно, GridSearchCV
существует), чтобы получить окончательную оценку для различных настроек параметров вашей модели. После обучения и оценки (после завершения поиска по сетке) вы можете взглянуть на параметры, с которыми ваша модель работала лучше всего (взглянув на атрибут best_params_dict
). Таким образом, поиск по сетке — это, по сути, стратегия перебора, при которой вы запускаете модель со всеми возможными комбинациями гиперпараметров. При coss_val_score
этом вы не выполняете поиск по сетке (вы не используете стратегию, упомянутую выше, со всеми предопределенными параметрами), но вы получаете результат после перекрестной проверки. Надеюсь, теперь это понятно.