Middle — Senior
Ako vykonať krížovú validáciu na časových radoch?
sobes.tech AI
Odpoveď od AI
Kros-validácia časových radov sa líši od klasickej, pretože údaje majú časovú závislosť a nemôžu sa jednoducho zamiešať náhodne.
Hlavné prístupy:
-
Time Series Split (posuvné okno)
- Údaje sa rozdelia na po sebe idúce časové bloky.
- Pri každom kroku sa model trénuje na údajoch do určitého momentu a testuje sa na nasledujúcom časovom intervale.
- Príklad: trénovať na mesiacoch 1-3, test na 4; potom trénovať na 1-4, test na 5 a tak ďalej.
-
Walk-forward validácia
- Podobná ako Time Series Split, ale model sa pri každom kroku znovu trénuje s pridávaním nových údajov.
-
Blokovaná krížová validácia (Blocked cross-validation)
- Údaje sa rozdelia na bloky, čím sa zabráni úniku informácií medzi tréningom a testom.
Príklad v Pythone s použitím sklearn:
from sklearn.model_selection import TimeSeriesSplit
import numpy as np
X = np.arange(100).reshape(-1, 1) # Príkladové údaje
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énovať model na X_train, y_train
# Vyhodnotiť na X_test, y_test
Je dôležité zachovať časový poriadok, aby sa nepoužívali budúce údaje na tréning modelu.