Обычный KFold на временных данных легко даёт утечку из будущего: модель обучается на данных, которые хронологически находятся после validation. Метрики красивые, прод — уже нет.
from sklearn.model_selection import TimeSeriesSplit
tscv = TimeSeriesSplit(n_splits=5, gap=24)
for train_idx, val_idx in tscv.split(X):
X_tr, X_val = X[train_idx], X[val_idx]
— скейлеры и энкодеры fit только на train каждого фолда;
— lag и rolling не должны использовать будущие значения;
— gap выбирайте с учётом горизонта прогноза и способа формирования признаков.
Если после этого метрика упала — возможно, вы наконец увидели реальное качество модели.
📍 Навигация: Вакансии • Задачи • Собесы
