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

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