Sobes.tech
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:

  1. 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.
  2. Validazione a passo avanti (Walk-forward validation)

    • Simile a Time Series Split, ma il modello viene riaddestrato ad ogni passo aggiungendo nuovi dati.
  3. 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.