Sobes.tech
Middle — Senior

Kako sprovesti unakrsnu validaciju na vremenskim serijama?

sobes.tech АИ

Одговор од АИ

Кros-validacija na vremenskim serijama razlikuje se od klasične, jer podaci imaju vremensku zavisnost i ne mogu se jednostavno mešati nasumično.

Glavni pristupi:

  1. Time Series Split (klizno okno)

    • Podaci se dele na uzastopne vremenske blokove.
    • Na svakom koraku, model se trenira na podacima do određenog trenutka i testira na sledećem vremenskom intervalu.
    • Primer: trenirati na mesecima 1-3, testirati na 4; zatim trenirati na 1-4, testirati na 5 itd.
  2. Walk-forward validacija

    • Slično Time Series Split, ali model se ponovo trenira na svakom koraku, dodajući nove podatke.
  3. Blokirana kros-validacija (Blocked cross-validation)

    • Podaci se dele na blokove, izbegavajući curenje informacija između treninga i testa.

Primer u Pythonu koristeći sklearn:

from sklearn.model_selection import TimeSeriesSplit
import numpy as np

X = np.arange(100).reshape(-1, 1)  # Primer podataka
 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]
    # Trenirati model na X_train, y_train
    # Evaluirati na X_test, y_test

Važno je održavati hronološki red, kako ne bi koristili buduće podatke za obuku modela.