Middle — Senior
Cum se face validarea încrucișată pe serii temporale?
sobes.tech AI
Răspuns de la AI
Validarea încrucișată pe serii temporale diferă de cea clasică, deoarece datele au o dependență temporală și nu pot fi amestecate pur și simplu aleatoriu.
Abordări principale:
-
Time Series Split (fereastră glisantă)
- Datele sunt împărțite în blocuri temporale secvențiale.
- La fiecare pas, modelul este antrenat pe datele până la un anumit moment și testat pe intervalul de timp următor.
- Exemplu: antrenare pe luni 1-3, testare pe 4; apoi antrenare pe 1-4, testare pe 5 etc.
-
Validare în avans (Walk-forward validation)
- Similar cu Time Series Split, dar modelul este re-antrenat la fiecare pas, adăugând noi date.
-
Validare încrucișată blocată (Blocked cross-validation)
- Datele sunt împărțite în blocuri, evitând scurgerea de informații între antrenament și test.
Exemplu în Python cu sklearn:
from sklearn.model_selection import TimeSeriesSplit
import numpy as np
X = np.arange(100).reshape(-1, 1) # Date de exemplu
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]
# Antrenează modelul pe X_train, y_train
# Evaluează pe X_test, y_test
Este important să păstrezi ordinea cronologică pentru a nu folosi date viitoare pentru antrenarea modelului.