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:
-
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.
-
Walk-forward validation (žingsnis po žingsnio validacija)
- Panaši į Time Series Split, bet modelis kiekviename žingsnyje yra permokomas, pridedant naujus duomenis.
-
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.