Procedura: convalida incrociata con dati di serie temporali |  di Haden Pelletier |  Dicembre 2023

 | Intelligenza-Artificiale

Quando si tratta di dati di serie temporali, è necessario eseguire la convalida incrociata in modo diverso

Convalida incrociata k-fold standard. Immagine dell’autore

Convalida incrociata è una parte importante dell’addestramento e della valutazione di un modello ML. Ti consente di ottenere una stima del rendimento di un modello addestrato sui nuovi dati.

La maggior parte delle persone che imparano a eseguire la convalida incrociata imparano prima a conoscere Approccio K-fold. Lo so. Nella convalida incrociata K-fold, il set di dati viene suddiviso casualmente in n volte (solitamente 5). Nel corso di 5 iterazioni, il modello viene addestrato su 4 delle 5 pieghe mentre la restante 1 funge da set di test per valutare le prestazioni. Questo viene ripetuto finché tutte e 5 le pieghe non sono state utilizzate come set di prova in un determinato momento. Alla fine, avrai 5 punteggi di errore che, calcolati insieme la media, ti daranno il punteggio di convalida incrociata.

Ma ecco il problema: questo metodo funziona davvero solo per serie non temporali/dati non sequenziali. Se l’ordine dei dati è importante in qualche modo o se alcuni punti dati dipendono dai valori precedenti, non è possibile utilizzare la convalida incrociata K-fold.

Il motivo è abbastanza semplice. Se dividi i dati in 4 pieghe di allenamento e 1 piega di test utilizzando KFold, l’ordine dei dati sarà casuale. Pertanto, i punti dati che una volta precedevano altri punti dati possono finire nel set di test, quindi, quando si arriva al dunque, utilizzerai i dati futuri per prevedere il passato.

Questo è un grande no-no.

Il modo in cui testare il modello in fase di sviluppo dovrebbe imitare il modo in cui verrà eseguito nell’ambiente di produzione.

Se utilizzerai i dati passati per prevedere i dati futuri quando il modello entrerà in produzione (come faresti con le serie temporali), dovresti testare il tuo modello in fase di sviluppo allo stesso modo.

È qui che entra in gioco TimeSeriesSplit. TimeSeriesSplit, una classe di scikit-learn, è una “variazione di KFold” autodefinita.

Nella kesima suddivisione, restituisce le prime k pieghe come set di treni e la (k+1)esima piega come set di prova.

Le principali differenze tra TimeSeriesSplit e KFold sono:

  • In TimeSeriesSplit, il set di dati di addestramento aumenta gradualmente di dimensioni, mentre in…

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *