Metriche per le previsioni distributive

Feb 28 2023
di Leonidas Tsaprounis In Haleon, le previsioni distributive svolgono un ruolo chiave per le nostre soluzioni di ottimizzazione dell'inventario. In passato ci siamo affidati a una serie di punteggi quantili e metriche di previsione puntuale per valutare queste previsioni.

di Leonida Tsaprounis

In Haleon, le previsioni distributive svolgono un ruolo chiave per le nostre soluzioni di ottimizzazione dell'inventario. In passato ci siamo affidati a una serie di punteggi quantili e metriche di previsione puntuale per valutare queste previsioni. Di recente abbiamo sperimentato metriche che tengono conto dell'intera distribuzione prevista. In questo articolo esamineremo un paio di queste metriche (Log Score e CRPS) e ne esamineremo le proprietà.

Introduzione: previsioni puntuali e previsioni distributive

Perché abbiamo bisogno di previsioni? Direi che una buona risposta è supportare/automatizzare il processo decisionale in condizioni di incertezza. Incertezza è la parola chiave qui. Una previsione puntuale, di solito mostra il valore atteso (stimato dalla media) del futuro della nostra serie storica. Per qualsiasi distribuzione continua, la probabilità di un singolo punto è solo 0, anche per il valore atteso. Quindi quello che stiamo realmente dicendo mostrando una previsione puntuale è "i valori saranno intorno a quest'area".

Ma cosa significa intorno? E se l'area di questo "intorno" fosse enorme? Ad esempio, allo scoppio della pandemia di COVID-19, quando vedremmo le previsioni sull'occupazione delle unità di terapia intensiva, cosa dovrebbe fare il tuo ospedale locale? Piano per l'occupazione media? Probabilmente vorresti essere coperto per uno scenario realistico del caso peggiore (ad esempio, il quantile superiore del 95% della distribuzione prevista). Oppure, nel caso del controllo dell'inventario, potresti voler determinare lo stock necessario per mantenere un particolare livello di servizio. È qui che entrano in gioco le previsioni distributive (chiamate anche probabilistiche).

Esempio di previsione distributiva (aree grigie) e di previsione puntuale (linea arancione)

Le previsioni distributive tentano di prevedere la distribuzione dei valori previsti, al contrario di un singolo punto, e sono una pratica comune in aree come le previsioni del tempo e delle malattie infettive. Molti dei popolari algoritmi di previsione statistica, sotto poche assunzioni (ad esempio, gli errori sono indipendenti e distribuiti in modo identico e provengono da una distribuzione normale) hanno formule analitiche per la distribuzione della previsione. Esistono anche modi non parametrici per ottenere una distribuzione empirica per la tua previsione, ad esempio avviando i residui [1].

Per valutare le prestazioni di un algoritmo di previsione, utilizziamo una delle tante strategie di convalida incrociata delle serie temporali e calcoliamo le prestazioni utilizzando le previsioni e gli effettivi per ogni piega.

Convalida incrociata delle serie temporali, finestra in espansione senza strategia di sovrapposizione.

Le metriche per le previsioni puntuali sono ben note e i pro e i contro di ciascuno sono ancora un argomento di dibattito caldo per accademici e professionisti.

Ma qual è una buona metrica per le previsioni distributive? Non osserveremo mai l'intera distribuzione di un passo temporale previsto. Se avessimo la distribuzione che genera i valori osservati, potremmo semplicemente usare qualcosa come la divergenza di Kullback-Leibler per misurare la distanza tra le 2 distribuzioni, prevista ed effettiva. Sfortunatamente, la realtà è che osserveremo solo i valori in punti effettivi. Quindi qual è una buona metrica che ci consente di confrontare la nostra distribuzione prevista con un valore in punti?

Regole di punteggio corrette

Le regole di punteggio sono metriche per valutare la qualità di una previsione distributiva rispetto ai valori effettivi delle serie temporali. “Una regola di punteggio è corretta se il previsore massimizza il punteggio atteso per un'osservazione tratta dalla distribuzione F se emette la previsione probabilistica F, piuttosto che G≠F. È strettamente corretto se il massimo è unico. [2].Quindi, se un previsore desidera ottenere il miglior punteggio possibile, se la regola di punteggio è strettamente corretta, può farlo solo fornendo la vera distribuzione di generazione dei dati come previsione. Pertanto, una regola di punteggio strettamente corretta incoraggia previsioni distributive oneste. Non preoccuparti se questa definizione sembra un po' astratta al momento, mostreremo alcuni esempi di cosa significa in termini pratici più avanti in questo articolo. Tratteremo 2 regole di punteggio strettamente corrette, il Log Score e il CRPS (Continuous Rank Probability Score).

In questo articolo useremo la convenzione secondo cui i valori più piccoli di un punteggio sono migliori, quindi contrariamente alla definizione di cui sopra, il nostro obiettivo sarà minimizzare il punteggio invece di massimizzarlo. Lo facciamo per coerenza tra diverse regole di punteggio e funzioni di costo.

Per il resto di questo articolo useremo la stessa distribuzione binomiale negativa di [3] per mostrare come possiamo riprodurre i risultati del documento usando metodi computazionali in Python. Per il campionamento dalle distribuzioni utilizzeremo numpy e per un oggetto di distribuzione effettivo utilizzeremo le distribuzioni congelate scipy .

Il codice seguente genera gli oggetti di distribuzione, gli esempi e gli effettivi per gli esempi mostrati in questo articolo.

Punteggio registro

Il Log score (LogS), introdotto da IJ Good nel 1952 [4], è il log della funzione di densità di probabilità (PDF) della distribuzione prevista per il valore effettivo, cioè LogS(F, y) = log(F(y ) ) , dove F è la PDF della distribuzione prevista e y è il valore dell'osservazione. Poiché usiamo la convenzione secondo cui un valore più piccolo è migliore per tutti i punteggi, in questo articolo useremo -LogS.

Il Log Score era la metrica utilizzata nella competizione flusight del CDC che ha ottenuto un ampio riconoscimento nella comunità delle previsioni epidemiologiche.

Usando una distribuzione congelata scipy, è molto facile calcolare il punteggio del registro in python:log_score = -np.log(frozen_dist.pdf(y))

Il grafico seguente mostra il punteggio (linea verde) per diversi valori dei valori effettivi (asse x) per la stessa distribuzione (linea blu):

Il punteggio log (linea verde) per la stessa distribuzione prevista (linea blu) per diversi valori effettivi.

Un problema con il Log Score, evidenziato anche in [2], è che non funziona bene per i percorsi di previsione campionati al posto delle funzioni di densità di probabilità. Tuttavia, i percorsi campionati sono un approccio molto comune per fornire previsioni distributive. Di seguito è riportato un tentativo di far funzionare il punteggio del registro per i campioni utilizzando un istogramma normalizzato raggruppando i campioni.

Punteggio log (linea verde) per gli stessi campioni (istogramma giallo) per diversi valori effettivi.

Ora rivisitiamo la definizione della regola di punteggio corretta. Una regola di punteggio è corretta se il previsore minimizza (poiché adottiamo la convenzione che i valori più piccoli sono migliori) il punteggio atteso per un'osservazione tratta dalla distribuzione F se emette la previsione probabilistica F, piuttosto che G≠F. Come discusso sopra, in pratica non conosceremo mai la distribuzione F che genera i dati della vita reale. Tuttavia, è molto facile mostrare questa proprietà attraverso un esperimento di simulazione, dove possiamo definire F in anticipo.

L'esperimento è semplice, sceglieremo una distribuzione F e da essa campionamo un gran numero di osservazioni, questi saranno gli effettivi simulati. Calcoleremo quindi il punteggio log per le distribuzioni con un intervallo di parametri attorno alla distribuzione F utilizzata per generare i dati. Se il punteggio è davvero una regola di punteggio corretta, la sua media su tutte le osservazioni simulate (cioè la sua aspettativa) dovrebbe essere minore per distribuzioni molto vicine a F e minimizzata in F.

Per generare i dati utilizziamo una distribuzione normale con media, μ = 0 e deviazione standard, σ = 3 e per le distribuzioni previste candidate utilizziamo distribuzioni normali dove -1 ≤ μ ≤ 1 e 2 ≤ σ ≤ 4. La figura seguente mostra la heatmap del Log Score in questo spazio dei parametri. Il rosso indica basso e il blu indica un punteggio di log alto. Dalla heatmap è chiaro che più i parametri della distribuzione prevista sono vicini alla distribuzione che genera i dati, più piccolo diventa il punteggio, che è la nostra aspettativa dalla proprietà di punteggio corretta.

Le simulazioni sperimentano per illustrare la proprietà del punteggio corretto del punteggio log.

Punteggio di probabilità di rango continuo (CRPS)

La prima volta che mi sono imbattuto in CRPS è stata questa conferenza del prof. Rob Hyndman , mentre esaminava i dettagli di un modello di previsione COVID-19 che aveva sviluppato per l'Australia. CRPS è stato introdotto come una partitura corretta per le distribuzioni continue nel 1976 da James E. Matheson e Robert L. Winkler [5].

CRPS si basa sulla funzione di distribuzione cumulativa (CDF) in contrasto con la funzione di densità di probabilità (PDF) utilizzata nel punteggio logaritmico. Questo lo rende più adatto ai casi in cui la previsione è sotto forma di campioni perché possiamo usare il CDF empirico. È definito come:

Concettualmente, CRPS sta quantificando la differenza tra la distribuzione prevista CDF e una previsione "perfetta" CDF. Una previsione distributiva perfetta per un dato valore di un'osservazione effettiva è essenzialmente una previsione puntuale uguale al valore effettivo. La CDF di una previsione perfetta è una funzione a gradino che va da 0 a 1, con il gradino sul valore effettivo. Le aree grigie nel grafico sottostante mostrano le 2 aree che vengono sommate per dare il CRPS:

Le aree che vengono sommate per ottenere il CRPS per una previsione distributiva, simile alla figura 1 in [3].

CRPS ha un'altra bella proprietà però. Se la previsione è una previsione puntuale, CRPS è uguale all'errore assoluto medio (MAE). Basta un po' di geometria pre-liceale per capirne il motivo, osservando il grafico sottostante:

Le aree che vengono sommate per ottenere il CRPS per una previsione puntuale.

L'area tra le 2 previsioni è essenzialmente l'area del parallelogramma formato. La larghezza è la differenza assoluta tra la previsione e l'effettivo, il MAE, e l'altezza è 1. Quindi il punteggio CRPS per una previsione del punto è solo il MAE. Più formalmente, con alcuni calcoli a livello di scuola superiore:

Naturalmente, calcolare analiticamente l'integrale per una CDF empirica è impossibile. Ma non è un problema perché possiamo usare metodi numerici come numpy's trapz per calcolarlo in modo vettorizzato in python. Utilizzando la trasmissione e la vettorizzazione, possiamo calcolare CRPS per più campioni senza cicli for, ottenendo così una facile accelerazione di ~ 10 volte nei calcoli.

CRPS (linea verde) per la stessa distribuzione prevista (linea blu) per diversi valori effettivi.

CRPS (linea verde) per gli stessi campioni (istogramma giallo) per diversi valori effettivi.

Per illustrare la corretta proprietà di punteggio del CRPS, possiamo eseguire lo stesso esperimento del Log Score sopra. I risultati sono quelli previsti, la media del punteggio è ridotta al minimo per le distribuzioni con parametri vicini alla distribuzione che genera i dati.

Simulazioni sperimentali per illustrare la proprietà del punteggio corretto del CRPS.

CRPS dipende dalla scala delle serie temporali. Se vuoi aggregare e confrontare in modo significativo il CRPS per più serie temporali, dovrai ridimensionarlo in qualche modo. Una buona strategia consiste nel dividerlo per il CRPS di una previsione di riferimento (ad esempio una previsione ingenua) [1] [6]. Per un'opzione di ridimensionamento meno costosa dal punto di vista computazionale, utilizzerei lo stesso fattore di ridimensionamento di MASE (Mean Absolute Scaled Error) [8], vale a dire il MAE di una previsione ingenua a un passo nel set di addestramento, ma direi che non è così robusto come il precedente metodo di ridimensionamento.

Punteggi locali VS sensibili alla distanza

Il Log Score e il CRPS appartengono a 2 diverse classi di regole di punteggio.

Il Log Score è una regola di punteggio locale , il che significa che il valore del punteggio per una particolare osservazione dipende solo dal valore della funzione di densità di probabilità per il valore di tale osservazione [7]. Questo è chiaro dalla definizione del punteggio logaritmico, LogS( f , y ) = - log( f (y) ), dove f the è la PDF della distribuzione prevista e f (y) è il valore della PDF per l'osservazione .

CRPS è un punteggio sensibile alla distanza . Nei casi in cui i valori hanno una classificazione significativa (ad es. un inventario di 10 spazzolini da denti è inferiore a quello di 20) di solito preferiremmo che la nostra regola di punteggio tenga conto della "distanza" della distribuzione prevista dal valore osservato e non solo della probabilità assegnata. Per maggiori dettagli sulla definizione di una regola di punteggio sensibile alla distanza, consultare la sezione 3 in [6].

Per mettere in prospettiva la differenza tra le 2 classi, si consideri il banale caso in cui forniamo una previsione puntuale invece di una previsione distributiva. Diciamo che il valore osservato è 101 e la previsione puntuale è 100, in questo caso la PDF della distribuzione prevista f(x) è 1 se x = 100 e 0 altrimenti. Il punteggio log per questa previsione sarà un -log(0) indefinito, perché il PDF per qualsiasi valore diverso da 100 è 0 e CRPS sarà 1, che in questo caso può essere considerato un buon punteggio. A seconda del nostro caso d'uso, vorremmo che il nostro punteggio si comportasse in un modo o nell'altro, ma per il controllo dell'inventario, un punteggio sensibile alla distanza è più appropriato.

Le differenze tra le 2 classi di punteggi sono molto chiare anche nell'esempio seguente, dove calcoliamo il punteggio per una distribuzione bimodale simmetrica ( double Weibull ). In questo caso la PDF sulla mediana della distribuzione sarà molto vicina allo zero. Di conseguenza, il CRPS è ridotto al minimo se l'osservazione è uguale alla mediana di questa distribuzione prevista e il punteggio log è massimizzato, il che significa che i 2 punteggi sono in grande disaccordo vicino alla mediana.

Log Srore (verde) e CRPS (rosso) per una doppia distribuzione Weibull bimodale (blu).

Mettere tutto insieme!

Ora è il momento di mettere in pratica queste metriche! Sfortunatamente non esiste una libreria che emetta distribuzioni congelate scipy come previsione distributiva (anche se è vero che è una buona idea). Tuttavia, molte biblioteche forniscono previsioni probabilistiche sotto forma di cammini futuri campionati.

Per questo articolo utilizzeremo statsmodels e la loro collaudata API delle serie temporali che offre alla maggior parte dei modelli di previsione un metodo di simulazione. Questo metodo produce più percorsi futuri simulati. Useremo 2 modelli ETS [9] per adattare il famoso set di dati della serie di passeggeri delle linee aeree. Ecco come appaiono questi percorsi futuri simulati:

Percorsi futuri simulati da statsmodels.tsa.exponential_smoothing.ets.ETSResults.simulate

Il modello migliore per questa serie temporale (basato sull'Akaike Information Criterion, AIC) è un modello con errore moltiplicativo, trend additivo e termini di stagionalità moltiplicativa, ETS-MAM. Per dare a quel modello una certa concorrenza che può facilmente battere, lo confronteremo con un modello ETS senza stagionalità, in particolare un ETS-MMN. Utilizzeremo gli ultimi 12 mesi del set di dati come dati di test per valutare le prestazioni fuori campione dei 2 modelli. Per le nostre previsioni distributive utilizzeremo 10.000 percorsi futuri simulati da ciascun modello (ovvero 10.000 campioni per ogni fase temporale prevista).

ETS-MAM modella la previsione probabilistica sotto forma di 10.000 percorsi futuri simulati e la corrispondente previsione puntuale.
ETS-MMN modella la previsione probabilistica sotto forma di 10.000 percorsi futuri simulati e la corrispondente previsione puntuale.

Ed ecco i risultati:

MAE, CRPS medio e Log Score medio per ETS-MAM e ETS-MMN punto e previsioni probabilistiche sul set di dati della serie di passeggeri delle compagnie aeree.

Si noti che possiamo misurare il CRPS anche per le previsioni puntuali e non sorprende che sia approssimativamente uguale al MAE. Naturalmente, le previsioni puntuali hanno prestazioni peggiori in termini di CRPS rispetto alle previsioni distributive, ma il CRPS è migliore per la previsione puntuale accurata del modello stagionale (ETS-MAM) rispetto alla previsione distributiva del modello non stagionale (ETS -MMN) perché è un punteggio sensibile alla distanza.

Alcune osservazioni

Una frase popolare tra i professionisti delle previsioni è "cavalli per i corsi", il che significa che la classifica delle prestazioni tra diversi modelli di previsione dipende da molteplici fattori, inclusa la metrica utilizzata. Nel nostro caso, vogliamo trovare la metrica giusta che ci aiuti a selezionare il miglior modello di previsione distributiva per il nostro sistema di controllo dell'inventario. Kourentzes et al. [10] dimostrano che il legame tra l'accuratezza delle previsioni e le prestazioni del controllo dell'inventario non è così semplice come si potrebbe pensare. Nel documento confrontano i modelli rispetto alle metriche di previsione puntuale e alle prestazioni di controllo dell'inventario nelle simulazioni. I risultati mostrano alcuni disaccordi molto interessanti!

Questo è il motivo per cui stiamo ancora sperimentando queste metriche e le loro applicazioni per i nostri problemi di controllo dell'inventario. Per noi è importante identificare dove le classifiche delle prestazioni non sono d'accordo con altre metriche, quali sono le loro proprietà generali e quale metrica è la più adatta al nostro problema.

Per saperne di più su come utilizziamo le previsioni distributive per il controllo dell'inventario, dai un'occhiata a questa presentazione del Dr. Gueorgui Mihaylov, Principal Data Scientist di Haleon per la catena di approvvigionamento e la finanza nella conferenza annuale della OR Society .

Per riprodurre gli esperimenti ei grafici di questo articolo controlla questo taccuino.

Software correlato

  1. correctcoring — Una libreria python con implementazioni efficienti per CRPS e Brier Score, sfruttando numba per una significativa accelerazione. Purtroppo l'ultima versione risale al 2015.
  2. scoringutils — Libreria R con un'ampia gamma di regole di punteggio. Ho anche notato che uno degli autori uno di [3], il prof. Nicholas Reich , è uno dei contributori di questa libreria!
  3. scoringRules — Libreria R con implementazioni delle regole di punteggio in rcpp per prestazioni migliori.

[1] Hyndman, RJ e Athanasopoulos, G. (2021) Previsione: principi e pratica, 3a edizione, OTexts: Melbourne, Australia. OTexts.com/fpp3 . Accesso effettuato il 10 ottobre 2022.

[2] Tilmann Gneiting & Adrian E Raftery (2007) Regole di punteggio, previsione e stima strettamente corrette, Journal of the American Statistical Association, 102:477, 359–378, DOI: 10.1198/ 016214506000001437

[3] Bracher J, Ray EL, Gneiting T, Reich NG (2021) Valutazione delle previsioni epidemiche in un formato a intervalli. Biologia computazionale PLOS 17(2): e1008618.https://doi.org/10.1371/journal.pcbi.1008618

[4] Buono, IJ (1952), Decisioni razionali. Journal of the Royal Statistical Society: Serie B (metodologica), 14: 107–114.https://doi.org/10.1111/j.2517-6161.1952.tb00104.x

[5] Matheson, JE, & Winkler, RL (1976). Regole di punteggio per distribuzioni di probabilità continue. Scienze gestionali , 22 (10), 1087–1096.http://www.jstor.org/stable/2629907

[6] Jose, VR, Nau, RF e Winkler, RL (2009). Sensibilità alla distanza e alle distribuzioni della linea di base nella valutazione delle previsioni. Gestionale Sci., 55, 582-590.

[7] Bernardo, JM (1979). Informazioni previste come utilità prevista. Gli Annali di Statistica, 7(3), 686–690.http://www.jstor.org/stable/2958753

[8] Hyndman, RJ, Koehler, AB (2006) Un altro sguardo alle misure di accuratezza delle previsioni. International Journal of Forecasting, volume 22, numero 4, pagine 679–688, ISSN 0169–2070,https://doi.org/10.1016/j.ijforecast.2006.03.001.

[9] Hyndman, RJ, Koehler, AB, Ord, JK e Snyder, RD (2008). Previsione con livellamento esponenziale: l'approccio dello spazio degli stati. Springer Verlag.http://www.exponentialsmoothing.net

[10] Kourentzes, Nikolaos e Svetunkov, Ivan e Trapero, Juan R. (1 luglio 2021) Collegare previsioni e prestazioni dell'inventario: un compito complesso. Disponibile presso SSRN:https://ssrn.com/abstract=3878176Ohttp://dx.doi.org/10.2139/ssrn.3878176