Как реализовать тестирование ходьбы в sklearn?
В sklearn GridSearchCV может взять конвейер в качестве параметра, чтобы найти лучшую оценку с помощью перекрестной проверки. Однако обычная перекрестная проверка такова: ![введите описание изображения здесь]()
чтобы перекрестно проверять данные временных рядов, данные обучения и тестирования часто разделяются следующим образом: ![enter изображение здесь]()
То есть, данные тестирования всегда должны быть впереди данных обучения.
Моя мысль:
-
Напишите мой собственный класс версии k-fold и передайте его в GridSearchCV, чтобы я мог наслаждаться удобством конвейера. Проблема состоит в том, что представляется трудно позволить GridSearchCV использовать указанные индексы обучения и тестирования данных.
-
Напишите новый класс GridSearchWalkForwardTest, который похож на GridSearchCV, я изучаю исходный код grid_search.py и считаю, что это немного сложно.
Любое предложение приветствуется.
Ответы
Ответ 1
Мое мнение таково, что вы должны попытаться реализовать свой собственный GridSearchWalkForwardTest. Однажды я использовал GridSearch для обучения и реализовал один и тот же GridSearch, и я не получил таких же результатов, хотя я должен.
В конце я использовал свою собственную функцию. У вас больше контроля над учебным и тестовым набором, и у вас больше контроля над параметрами, которые вы тренируете.
Ответ 2
Я думаю, вы могли бы использовать Time Series Split вместо своей собственной реализации или в качестве основы для реализации CV, который точно так же, как вы его описываете.
После копания немного похоже, что кто-то добавил max_train_size в TimeSeriesSplit в этот PR, который, похоже, делает то, что вы хотите.