Ответ
Time series cross-validation (CV) — это метод оценки моделей для временных рядов, который сохраняет их временной порядок. В отличие от стандартной k-fold CV, где данные перемешиваются, здесь обучающая и тестовая выборки разделяются последовательно, что предотвращает утечку данных из будущего (data leakage).
Основные подходы:
- Rolling Window (скользящее окно): Фиксированный размер обучающего окна, которое перемещается по временной оси.
- Expanding Window (расширяющееся окно): Обучающее окно начинается с фиксированного размера и постепенно увеличивается, включая все предыдущие данные.
Пример с TimeSeriesSplit из scikit-learn:
from sklearn.model_selection import TimeSeriesSplit
import numpy as np
# Пример данных временного ряда
X = np.array([[i] for i in range(10)])
y = np.array([i for i in range(10)])
tscv = TimeSeriesSplit(n_splits=3)
for train_index, test_index in tscv.split(X):
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
print(f"Train: {train_index}, Test: {test_index}")
Ключевые особенности:
- Имитирует реальный процесс прогнозирования, где модель обучается на прошлых данных для предсказания будущих.
- Критически важен для корректной оценки моделей прогнозирования (forecasting).
- Позволяет оценить, как качество модели меняется со временем.