Passa ai contenuti principali

Forecasting


I modelli di reti neurali specializzati per la previsione di serie temporali si stanno diffondendo rapidamente in numerosi settori, dalla finanza alla geofisica, dalla medicina all’industria.
Questo post vuole suggerisce un esperimento controllato di forecasting alla portata anche dei newbie della programmazione Python per il Machine Learning, volto a predire l’andamento futuro di una serie rumorosa a comportamento periodico (sinusoide) mediante una rete neurale ricorrente di tipo GRU (Gated Recurrent Unit). 
I dati per l'addestramento sono costituiti da una serie temporale di 500 punti ricavati dalla relazione:

y=sin(x)+ϵ

dove x l'istante di campionamento in un intervallo pari a quattro periodi della funzione sinusoidale, mentre ϵ rappresenta il rumore gaussiano additivo a media zero e deviazione standard 0.1.
Questo approccio consente di simulare una situazione realistica in cui i dati sono affetti da errori accidentali di misura.

Preprocessing e Dataset
Il prepocessing consiste nel suddividere la serie temporale in sotto-sequenze (finestre mobili) di lunghezza 20, utilizzate come input per la rete. Per ciascuna finestra, l’obiettivo di previsione è rappresentato dal punto immediatamente successivo nella sequenza. In altre parole, la rete apprende la mappatura: 

[yt​,yt+1​,…,yt+19​]→yt+20​​

Il dataset è stato suddiviso in mini-batch per l’addestramento tramite un DataLoader

Architettura e addestramento della rete neurale
La rete implementa una GRU a singolo layer con 32 unità nascoste, seguita da un layer fully connected per la stima dell’output scalare. L’ottimizzazione è affidata all’algoritmo Adam con una learning rate di 0.01. 
La funzione di perdita utilizzata è la Mean Squared Error (MSE). 
L’addestramento si è protratto per 100 epoche.

Forecasting autoregressivo
Terminato l’addestramento, è stato eseguito un test di forecasting autoregressivo.
Partendo da una finestra reale di 20 punti estratti dalla parte finale della serie (mai vista dalla rete), la GRU ha predetto in sequenza 60 valori futuri, ciascuno utilizzando come input la finestra ottenuta dai valori precedenti, in parte reali e in parte generati dalla stessa rete.

Risultati
Nel grafico risultante (vedi figura):
  • La serie originale (rumorosa) è riportata in blu chiaro.

  • I valori futuri reali (“ground truth”) sono evidenziati in verde.

  • I punti previsti dalla GRU sono tracciati in rosso tratteggiato.

  • La linea verticale grigia indica il punto di inizio della previsione.

La curva predetta dalla rete segue con buona approssimazione la forma della funzione seno, mantenendo la periodicità e mostrando capacità di adattamento al rumore dei dati. La precisione resta elevata per vari step predetti, mentre si osserva una fisiologica perdita di aderenza con l’aumentare dell’orizzonte di previsione, effetto noto del forecasting autoregressivo (“error propagation”).

Conclusioni
L’esperimento dimostra che anche una rete GRU di modeste dimensioni è in grado di apprendere la dinamica periodica di un'onda sinusoidale affetta da rumore e di estendere tale conoscenza oltre il dominio di training. 
La previsione autoregressiva evidenzia sia la robustezza del modello, sia i limiti intrinseci dovuti all’accumulo di errore, tipico nelle sequenze generate artificialmente a partire dalle stime precedenti.
In scenari reali, la qualità della previsione dipende dalla quantità e dalla qualità dei dati di input, dalla lunghezza della finestra osservata, dalla struttura della rete e dalla quantità di rumore presente.
Ulteriori miglioramenti si potrebbero ottenere ricorrendo a modelli più profondi, strategie di ensemble, o utilizzando architetture transformer specifiche per il time series forecasting.

In figura, il forecasting di una sinusoide rumorosa.
(Blu: serie storica, Verde: valori reali futuri, Rosso tratteggiato: previsione GRU, linea grigia: start della previsione)




Post popolari in questo blog

Salmoni, scarpette, cetrioli e altro

Tutto il testo contenuto in questa pagina è stato pensato e scritto dall'autore del blog.   1. Come il salmone 2. Ooops! 3. Le scarpette hi-tech 4. Equivoci contemporanei 5. I saccenti 6. Medaglie di legno 7. La festività del Nulla 8. Gli aggiornamenti elettronici del Libro dell'Apocalisse 9. Dubbi ne ho 10. La maieutica del vulcaniano 11. Un piacevole vasetto di miele 12. Povere sfere 13. Caos comune mezzo gaudio 14. La fontana senza volti 15. Il piromane super beffardo 16. Boom di serpenti 17. Sistemi in via di degradazione 18. Il gatto nero 19. Alain Delon è ancora vivo? 20. Per sempre con i cani 21. Eventi imprevedibili 22. I robot sottomessi 23. Lady Gaga e Bruno Mars incantano 24. Definizioni mancate 25. Il mio nemico drone 26. Errore di valutazione 27. Ringraziamenti 28. Cari cetrioli, vi scrivo 29. Boom di detective 30. Gli UFO trascurati 31. Il grande salto delle rane 32. La malattia artificiale 33. Homo consumens 34. Lacune informatiche 35. Sei troppo! 36. ...

Generatore Markmap HD

Pagina per il download di  Memento Lite Generatore Markmap Avanzato - Specifiche per l'utente finale Scopo principale: l'applicazione “Generatore Markmap Avanzato” permette agli utenti di trasformare testo scritto in formato Markdown in mappe mentali interattive. Offre funzionalità per creare, visualizzare, salvare, modificare, gestire ed esportare queste mappe mentali in vari formati. Interfaccia utente: l'interfaccia è strutturata nelle seguenti sezioni principali: Link al blog esterno: un link “🌐 Visita il Blog: Pensieri d'assestamento” che apre il blog associato in una nuova scheda. Intestazione (Header): Titolo: “Generatore Markmap Avanzato”. Sottotitolo: “Trasforma, salva e condividi il tuo testo Markdown in mappe mentali interattive”. Area Principale dei Contenuti: divisa in due pannelli affiancati (o impilati su schermi piccoli): Pannello di Input (Editor Markdown): Titolo: “✏️ Editor Markdown”. Area di Testo: un campo multiriga dove l...

Neural Tic-Tac-Toe Lab

Questo articolo presenta l'implementazione di una rete neurale specializzata nel gioco del tris (tic-tac-toe), addestrata mediante una metodologia innovativa basata sull'enumerazione completa degli stati di gioco. L'approccio supera le limitazioni dei metodi tradizionali di campionamento casuale, garantendo una copertura totale dello spazio delle configurazioni possibili. Struttura della rete neurale La rete implementata utilizza un'architettura feed-forward compatta con 9 neuroni di input, 16 neuroni nel layer nascosto e 9 neuroni di output. I neuroni di input ricevono la rappresentazione numerica dello stato della board (-1, 0, 1 per ciascuna delle 9 caselle), mentre i neuroni di output producono valutazioni numeriche per ogni possibile mossa. Il layer nascosto utilizza 16 neuroni con funzione di attivazione relu per introdurre capacità di apprendimento non-lineare. La rete contiene complessivamente 297 parametri: 144 pesi per le connessioni input-hidden, 16 bi...