Middle — Senior
Jak provést křížovou validaci na časových řadách?
sobes.tech AI
Odpověď od AI
Křížová validace časových řad se liší od klasické, protože data mají časovou závislost a nelze je jednoduše zamíchat náhodně.
Hlavní přístupy:
-
Time Series Split (posuvné okno)
- Data jsou rozdělena do po sobě jdoucích časových bloků.
- V každém kroku se model trénuje na datech do určitého okamžiku a testuje na následujícím časovém intervalu.
- Příklad: trénink na měsících 1-3, test na 4; pak trénink na 1-4, test na 5 atd.
-
Walk-forward validation (validace krok za krokem)
- Podobná jako Time Series Split, ale model se při každém kroku znovu trénuje s přidáním nových dat.
-
Blokovaná křížová validace (Blocked cross-validation)
- Data jsou rozdělena do bloků, čímž se předchází úniku informací mezi tréninkem a testem.
Příklad v Pythonu s použitím sklearn:
from sklearn.model_selection import TimeSeriesSplit
import numpy as np
X = np.arange(100).reshape(-1, 1) # Příkladová data
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]
# Trénování modelu na X_train, y_train
# Vyhodnocení na X_test, y_test
Je důležité zachovat časovou posloupnost, aby se nepoužívala budoucí data při tréninku modelu.