Middle — Senior
Come eseguire la validazione incrociata sulle serie temporali?
sobes.tech AI
Risposta dell'AI
La validazione incrociata su serie temporali differisce da quella classica, poiché i dati hanno una dipendenza temporale e non possono essere semplicemente mescolati casualmente.
Approcci principali:
-
Time Series Split (finestra mobile)
- I dati vengono suddivisi in blocchi temporali sequenziali.
- Ad ogni passo, il modello viene addestrato sui dati fino a un certo momento e testato sul prossimo intervallo temporale.
- Esempio: addestrare sui mesi 1-3, testare sul 4; poi addestrare su 1-4, test sul 5, ecc.
-
Validazione a passo avanti (Walk-forward validation)
- Simile a Time Series Split, ma il modello viene riaddestrato ad ogni passo aggiungendo nuovi dati.
-
Validazione incrociata a blocchi (Blocked cross-validation)
- I dati vengono divisi in blocchi, evitando perdite di informazione tra training e test.
Esempio in Python usando sklearn:
from sklearn.model_selection import TimeSeriesSplit
import numpy as np
X = np.arange(100).reshape(-1, 1) # Dati di esempio
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]
# Addestrare il modello con X_train, y_train
# Valutare su X_test, y_test
È importante mantenere l’ordine cronologico per non usare dati futuri nell’addestramento del modello.