Sobes.tech
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:

  1. 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.
  2. 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.
  3. 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.