Что такое time series кросс-валидация?

«Что такое time series кросс-валидация?» — вопрос из категории Временные ряды, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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).
  • Позволяет оценить, как качество модели меняется со временем.