Quando si tratta di dati di serie temporali, è necessario eseguire la convalida incrociata in modo diverso
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