Middle — Senior
Как да проведем кръстосана проверка върху времеви редове?
sobes.tech AI
Отговор от AI
Крос-валидацията на времеви редове се различава от класическата, тъй като данните имат времева зависимост и не могат просто да се разбъркват случайно.
Основни подходи:
-
Time Series Split (променливо окно)
- Данните се разделят на последователни времеви блокове.
- На всяка стъпка моделът се обучава върху данните до определен момент и се тества върху следващия времеви интервал.
- Пример: обучаване на месеците 1-3, тест на 4; след това обучение на 1-4, тест на 5 и т.н.
-
Walk-forward validation (напредваща валидизация)
- Подобно на Time Series Split, но моделът се преобучава на всяка стъпка, добавяйки нови данни.
-
Блокирана крос-валидация (Blocked cross-validation)
- Данните се разделят на блокове, като се избягва изтичане на информация между трениране и тест.
Пример в Python с sklearn:
from sklearn.model_selection import TimeSeriesSplit
import numpy as np
X = np.arange(100).reshape(-1, 1) # Примерни данни
y = np.sin(X).ravel()
tscv = TimeSeriesSplit(n_splits=5)
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]
# Обучение на X_train, y_train
# Оценка на X_test, y_test
Важно е да се запази хронологичният ред, за да не се използват бъдещи данни за обучение.