Costruire una pipeline completa di previsione temporale richiede un'ampia gamma di strumenti, modelli e tecniche, e il framework TimeCopilot offre una piattaforma coesa dove possiamo integrare modelli statistici, modelli di base (foundation models) e strumenti di rilevamento automatico di anomalie. In questo tutorial, esploreremo la costruzione di una pipeline completa di previsione passo per passo utilizzando dati reali dei passeggeri aerei uniti a una serie sintetica con anomalie.
Instalare TimeCopilot e Pinnare le Versioni Compatibili di NumPy e SciPy
Per preparare l’ambiente, installiamo TimeCopilot, UtilsForecast e Matplotlib:
- Il comandi di pip assicurano l'installazione delle versioni compatibili, evitando conflitti binari.
- Usiamo la forzatura per far caricare correttamente le nuove versioni e forziamo il riavvio del runtime Colab.
Questo passo garantisce una base stabile per lo sviluppo e l'analisi futuri.
Caricare i Dati sui Passeggeri Aerei e Costruire un Pannello di Serie Storiche con Anomalie Sintetiche
Iniziamo a caricare i dati e costruiamo quindi una serie temporale sintetica a partire da un modello stagionale e aggiungendo anomalie deliberate:
- Carichiamo i dati da un file CSV su S3.
- Costruiamo una serie sintetica con un modello stagionale, disturbo gaussiano e aggiungiamo punti anomali in posizioni specifiche.
- Combiniamo le due serie per formare un pannello di dati.
Con la definizione del numero di passi di previsione (H=12 mesi) e frequenza (FREQ=MS, monthly start), impostiamo le condizioni di previsione del modello.
Configurare Modelli Statistici, Prophet e Modelli di Base
TimeCopilot supporta un’ampia varietà di modelli di previsione:
- Modelli statistici inclusi sono: SeasonalNaive, AutoETS, AutoARIMA, Theta.
- Modelli Prophet, un'algoritmo basato su cicli stagionali e tendenze.
- Modelli di base come Chronos e opzionalmente TimesFM in base alla disponibilità del GPU.
Inizializziamo infine TimeCopilotForecaster passando la lista configurata per gestire tutti i modelli in modo uniforme.
Eseguire Validazione Crociata con Spostamento e Classificare i Modelli per RMSE
Il framework consente l'uso di validazione con finestre scorrevoli per valutare la capacità predittiva di ogni modello:
- Creiamo un dataframe di risultati per ogni finestra di valutazione.
- Calcoliamo metriche come MAE, RMSE e MAPE per ogni serie.
- Classifichiamo i modelli in base al lower mean RMSE per identificare il modello più performante.
Questo passo è fondamentale per ottenere una valutazione oggettiva e comparare la capacità predittiva di diversi modelli.
Generare Previsioni Probabilistiche con Intervalli di Confidenza
Una volta individuato il modello con prestazioni massime, generiamo previsioni probabilistiche a 12 mesi con intervalli al 80% e 95%:
- Utilizziamo la funzione forecast() di TimeCopilot per costruire le previsioni.
- Definiamo una funzione di plotting per visualizzare la storia e la previsione.
- Applichiamo la funzione ad ogni serie per confrontare il modello con la realtà.
Questo tipo di previsioni offre una rappresentazione visiva e quantitativa dell’incertezza associata ai modelli di forecasting.
Rilevare Anomalie nel Pannello Previsionale
TimeCopilot fornisce una funzionalità opzionale per rilevare anomalie su serie storiche:
- Applichiamo la detect_anomalies() passando la frequenza e il livello di confidenza.
- Costruiamo una tabella con i punti flaggati da almeno un modello e li visualizziamo graficamente.
- Il passo include anche l’opzionale visualizzazione grafica per le anomalie nella serie sintetica.
Questo step consente d’individuare eventuali variazioni anomale che potrebbero indicare outliers nella serie temporale.
Interpretare le Previsioni con l'Agente LLM di TimeCopilot
TimeCopilot include un agente basato su modelli linguistici di grandi dimensioni (LLM) che consente all’utente d’ottenere una risposta analitica accessibile:
- L’agente è disabilitato di default e necessita delle chiavi API di OpenAI o Anthropic.
- Permette di eseguire il forecast su una specifica serie e formulare risposte in linguaggio naturale.
Utilizzo Pratico
- Richiediamo un totale previsionale dei passeggeri aerei per i prossimi 12 mesi.
- L’agente genera non solo valori numerici, ma anche interpretazioni grafiche o testuali.
Questa funzione fornisce un’esperienza utente completa per spiegare i risultati predittivi in contesti decisionali complessi.
Conclusione
Con questo workflow end-to-end basato su TimeCopilot, siamo in grado di:
- Costruire un pannello di dati combinando serie storiche reali e sintetiche.
- Valutare statisticamente i modelli di forecasting.
- Generare previsioni probabilistiche e grafiche con stime di confidenza.
- Rilevare anomalie in serie temporali.
- Tradurre le previsioni in informazioni accessibili con l’utilizzo opzionale dell’agente LLM.
La pipeline realizzata può essere estesa, adattata a nuove serie o integrata in strumenti di reporting aziendali, fornendo un framework robusto e flessibile per la previsione temporale adatto a diversi contesti decisionali.