Какие ограничения есть при кросс-валидации моделей с временной компонентой
Что проверяют
Понимаете ли вы, что случайное перемешивание в кросс-валидации на данных со временем даёт модели подсмотреть будущее и завышает метрику. Следом обычно просят описать схему валидации для конкретной задачи, например прогноза спроса на неделю вперёд, и назвать, откуда ещё может утечь информация.
Как отвечать
Главное ограничение: обучение всегда на прошлом, проверка на будущем. Обычный KFold с shuffle=True здесь не подходит. Дальше по пунктам:
- схема разбиения:
TimeSeriesSplitиз scikit-learn строит расширяющееся окно, каждая тестовая часть идёт после обучающей.max_train_sizeпревращает его в скользящее окно, если старые данные устаревают; - зазор: параметр
gapвыкидывает наблюдения между обучением и тестом. Он нужен, когда цель или признаки считаются по окну, например продажи за 7 дней вперёд, иначе соседние точки перекрываются. В финансах тот же приём называют purging и embargo; - горизонт:
test_sizeдолжен соответствовать горизонту прогноза в проде; - признаки: лаги, скользящие средние, нормировка и target encoding считаются только по данным до точки прогноза, а препроцессинг обучается внутри фолда через
Pipeline; - несколько рядов: если магазинов или товаров много, режут по датам сразу для всех, а не по рядам.
Назовите и цену. Фолдов немного, ранние обучаются на короткой истории, поэтому оценка шумная. Среднее по фолдам скрывает дрейф, полезно смотреть метрику по каждому. Гиперпараметры подбирают на фолдах, а финальную проверку делают на самом свежем отложенном периоде, который в подборе не участвовал.
Где спотыкаются
Считают, что TimeSeriesSplit сам исключает утечку. Он лишь соблюдает порядок строк, а признак, посчитанный по всему датасету, всё равно несёт будущее.
Забывают про задержку данных. В проде вчерашние продажи могут приходить через двое суток, а в валидации модель видит их сразу.
Не сравнивают модель с базовым прогнозом. Сезонный наивный прогноз на временных рядах часто оказывается сильным соперником, и без него непонятно, чего стоит итоговая метрика.