Falso Profeta Confronto tra un modello di regressione e il Prophet di Meta

Confronto tra un modello di regressione falso e il vero Prophet di Meta

Può il mio modello di regressione di serie temporali alla Frankenstein — ispirato da Prophet — competere con il vero affare?

Foto di Piret Ilver su Unsplash

In quello che probabilmente sarà l’ultimo capitolo del mio viaggio per migliorare il fantastico package di previsione di Meta, Prophet, darò uno sguardo a come la mia versione fatta in casa si confronta con l’originale.

Sarà breve: prima daremo un’occhiata ai dati prima di visualizzare come i due approcci fanno previsioni su dati fuori dal periodo temporale. Successivamente determineremo più formalmente quale sia il migliore previsionista utilizzando alcune metriche, prima di discutere se è stata una comparazione equa o meno.

Iniziamo subito.

Nota: faccio riferimento ad altri capitoli — in particolare, a due altri articoli. Il primo riguarda l’ingegneria delle caratteristiche per le serie temporali, basato sull’approccio di Prophet, che puoi trovare qui:

Falso Prophet: Ingegneria delle Caratteristiche per un Modello di Regressione di Serie Temporali Fatto in Casa

Sfruttare le Idee dal Package Prophet di Meta per Creare Caratteristiche Potenti per i Modelli di Apprendimento Automatico di Serie Temporali

towardsdatascience.com

Nel seguito, affronto la costruzione del modello utilizzando le nostre nuove fantastiche caratteristiche. Puoi trovarlo qui:

Falso Prophet: Un Modello di Regressione di Serie Temporali Fatto in Casa

Prendere Idee da Prophet di Meta per Creare un Potente Modello di Regressione di Serie Temporali

towardsdatascience.com

Molti degli argomenti trattati oggi sono approfonditi negli articoli collegati — vale la pena leggerli se hai voglia di andare nel dettaglio.

Dati

Stiamo utilizzando i dati sugli incidenti stradali nel Regno Unito¹, riassunti in un conteggio mensile.

Immagine dell'autore

Nella serie temporale osserviamo alcune caratteristiche:

  • Un forte trend negativo nell’intera serie
  • Un cambiamento nella velocità di diminuzione in qualche punto tra il 2012 e il 2014
  • Una stagionalità abbastanza pronunciata nella prima parte della serie
  • Effetti stagionali potenzialmente variabili, soprattutto verso la fine della serie.

L’obiettivo del gioco

Abbiamo due modelli — chiameremo il nostro modello homemade alla Frankenstein “modello LASSO” e quello di Prophet di Meta come… Prophet.

Per ciascuno dei modelli, produrremo previsioni fuori dal periodo temporale. Questo significa essenzialmente addestrare i modelli su un sottoinsieme dei dati mensili e poi fare previsioni a 12 mesi nel futuro.

Confronteremo ogni previsione con i dati effettivamente osservati; il modello che si avvicina di più — in media — vince.

Nota: questa è essenzialmente una prova di cross-validation. Se sei familiare con gli approcci standard di cross-validation ma non li hai mai utilizzati per un’analisi di serie temporali, potresti trovare utile quanto segue.

In immagini

Possiamo visualizzare le previsioni fuori dal periodo temporale di ciascun modello — LASSO in rosso, Prophet in blu — e confrontarle con i dati effettivamente osservati.

Dobbiamo tenere presente che ogni previsione è stata realizzata utilizzando tutti i dati anteriori al periodo di previsione. Ad esempio, la previsione per il 2010 è stata realizzata utilizzando i dati fino al 2009 incluso.

Immagine dell'autore

È un’immagine piuttosto chiara: ad eccezione di un anno (2013), Prophet sembra essere un po’ lontano dal segno.

Ciò che è interessante notare è la somiglianza nei modelli di previsione creati dai due approcci:

  • Entrambi i modelli producono previsioni più basse – ossia riflettono la tendenza generale al ribasso.
  • Entrambi i modelli hanno aumenti intra-annuali e picchi a metà anno – ossia le previsioni producono un modello di stagionalità simile.

Quanto sono esattamente i due modelli distanti dalla realtà? Dovremo analizzare alcune metriche di performance per scoprirlo.

In numeri

Misureremo le performance utilizzando i soliti sospetti – errore medio assoluto (MAE), errore percentuale medio assoluto (MAPE) ed errore quadratico medio (RMSE) – così come un novellino (almeno per me): MASE.

The Mean Absolute Scaled Error

Il mean absolute scaled error (MASE) è una “misura generalmente applicabile dell’accuratezza delle previsioni senza i problemi riscontrati nelle altre misure”³ e “può essere utilizzato per confrontare i metodi di previsione su una singola serie e anche per confrontare l’accuratezza delle previsioni tra le serie”³.

Matematicamente, il MASE è il rapporto tra l’errore di previsione fuori tempo e l’errore di previsione in campione prodotto da un approccio di previsione naive. Dal momento che stiamo utilizzando dati mensili, ho considerato la previsione naive come il valore nello stesso punto nel tempo dell’anno precedente – ad esempio, la previsione per maggio 2012 è semplicemente il valore di maggio 2011. Molto naive.

Nel confrontare i metodi di previsione, il metodo con il MASE più basso è il metodo preferito³.

È importante notare che MASE > 1 implica che il metodo di previsione si comporta male rispetto a una previsione naive.

Nota: ho utilizzato l’implementazione descritta nell’articolo collegato – ossia l'”errore” è l’errore medio assoluto. Credo che si possano utilizzare altre misure di performance al posto del MAE – ad esempio il MAPE – purché la misura dell’errore venga utilizzata in modo coerente nel calcolo dell’errore scalato.

Risultati

Riassumiamo le performance dei modelli fuori campione e l’overall average utilizzando le metriche descritte:

Immagine dell'autore

È una vittoria piuttosto completa per il modello LASSO, con Prophet che si dimostra superiore solo in piccole aree.

Coltelli e sparatorie?

Come abbiamo visto, non è una lettura piacevole per i fan di Prophet: lo strumento di Meta riesce a conquistare qualche piega (in base alla metrica) per evitare una sconfitta totale. Commentatori imparziali potrebbero suggerire un ritorno al clubhouse per rivalutare le tattiche.

Anche se il risultato non è eccellente per Prophet, ci sono alcune ragioni per cui ci si può aspettare prestazioni del genere.

Le caratteristiche

Il modello LASSO utilizza caratteristiche che sono state appositamente sviluppate per questa serie temporale particolare. L’insieme delle caratteristiche di input disponibili è essenzialmente un superset di quelle disponibili a Prophet con qualche piccolo aggiustamento extra.

Inoltre, alcune delle caratteristiche sono leggermente diverse nel modello LASSO. Ad esempio, le caratteristiche che descrivono i potenziali punti di cambiamento non sono così vincolate nel LASSO come lo sono nel modello Prophet.

Pensateci come nel cercare di anticipare qualcun altro, sapendo meno – o leggermente diverso – da loro. Non così facile.

La modellazione

I dati fuori campione non sono così “sconosciuti” come ho fatto sembrare.

In un articolo precedente abbiamo coperto la parametrizzazione del modello LASSO: come utilizziamo i dati fuori campione per selezionare la forza di regolarizzazione che ottimizza la capacità del modello di fare previsioni. In questo senso, il modello LASSO è stato aggiustato per fare belle previsioni su ogni taglio dei dati, mentre il modello Prophet è stato lanciato direttamente fuori dalla scatola e nel profondo.

In esercizi di ottimizzazione “normali” degli iperparametri, di solito ci si aspetta di vedere aumenti delle performance dell’1% – 2%; l’aumento delle performance in un contesto di serie temporali è probabilmente molto maggiore, poiché “fuori campione” è veramente “fuori tempo”.

È ora di dire addio a Prophet?

Non così veloce… questa serie di articoli ha certamente messo in evidenza alcune cose – parliamone insieme.

Di default, Prophet funziona incredibilmente bene. Anche se può essere battuto, ci vuole un po’ di lavoro per farlo – molto più delle 10 righe di codice necessarie per far funzionare Prophet e fare previsioni.

L’interpretabilità del modello LASSO è molto superiore a quanto disponibile da Prophet. Sì, Prophet ci fornisce stime di incertezza per le previsioni, ma non possiamo capire cosa sta realmente guidando le predizioni. Non sono nemmeno sicuro che si possa applicare SHAP a Prophet.

Ho anche scoperto che Prophet non è così semplice da tarare. Forse è perché non sono un utente avanzato del pacchetto, o forse è a causa del modo complicato in cui devi tarare i parametri. Questo certamente non è il caso del modello LASSO.

Mentre l’approccio LASSO rappresenta indubbiamente un miglioramento delle prestazioni e dell’interpretabilità, forse ciò di cui abbiamo veramente bisogno è utilizzare entrambi gli approcci: uno come test di prova per l’altro. Ad esempio, se un modello “ingenuo” di Prophet produce previsioni sensate, potrebbe essere ragionevole replicare l’approccio LASSO (il “Falso Profeta”) per massimizzare le prestazioni.

Questo è tutto da parte mia. Spero che abbiate apprezzato la lettura di questa serie di articoli tanto quanto io ho apprezzato scriverli.

Come sempre, fatemi sapere cosa ne pensate, sono davvero interessato a conoscere le vostre esperienze con Prophet o con la modellazione delle serie temporali in modi diversi.

Arrivederci alla prossima volta.

Riferimenti e risorse utili

  1. https://roadtraffic.dft.gov.uk/downloads utilizzato in base alla Licenza del governo aperto (nationalarchives.gov.uk)
  2. Let’s Do: Time Series Cross-Validation | Python in Plain English
  3. Errore medio assoluto scalato – Wikipedia