Sobes.tech
Middle — Senior

Kaip atlikti kryžminę validaciją laiko eilutėse?

sobes.tech AI

Atsakymas iš AI

Laiko eilių kryžminė validacija skiriasi nuo klasikinės, nes duomenys turi laiko priklausomybę ir jų paprasčiausiai negalima atsitiktinai maišyti.

Pagrindiniai požiūriai:

  1. Time Series Split (slankus langas)

    • Duomenys yra padalijami į nuoseklius laiko blokus.
    • Kiekviename žingsnyje modelis mokomas naudoti duomenis iki tam tikro momento ir testuojamas kitame laiko intervale.
    • Pavyzdys: mokymas mėnesiais 1-3, testavimas 4; tada mokymas 1-4, testavimas 5 ir t.t.
  2. Walk-forward validation (žingsnis po žingsnio validacija)

    • Panaši į Time Series Split, bet modelis kiekviename žingsnyje yra permokomas, pridedant naujus duomenis.
  3. Blokuota kryžminė validacija (Blocked cross-validation)

    • Duomenys yra padalijami į blokus, siekiant išvengti informacijos nutekėjimo tarp mokymo ir testavimo etapų.

Python pavyzdys naudojant sklearn:

from sklearn.model_selection import TimeSeriesSplit
import numpy as np

X = np.arange(100).reshape(-1, 1)  # Pavyzdiniai duomenys
 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]
    # Mokyti modelį su X_train, y_train
    # Vertinti su X_test, y_test

Svarbu išlaikyti chronologinę tvarką, kad nebūtų naudojami būsimieji duomenys mokymui.