Previsione probabilistica con previsione conforme e NeuralProphet.

Jan 21 2023
Nei miei articoli precedenti, abbiamo esaminato NeuralProphet e valutato se offre miglioramenti delle prestazioni rispetto a Facebook Prophet (TLDR; sì) e se generalmente offre buone prestazioni di previsione dei punti (TLDR; sì). NeuralProphet è un modello molto migliore per la previsione puntuale poiché ha affrontato il problema principale del suo predecessore Facebook Prophet: l'incapacità di Facebook Prophet di modellare le dipendenze locali utilizzando termini autoregressivi (AR).

Nei miei articoli precedenti, abbiamo esaminato NeuralProphet e valutato se offre miglioramenti delle prestazioni rispetto a Facebook Prophet (TLDR; sì) e se generalmente offre buone prestazioni di previsione dei punti (TLDR; sì).

NeuralProphet è un modello molto migliore per la previsione puntuale poiché ha affrontato il problema principale del suo predecessore Facebook Prophet: l'incapacità di Facebook Prophet di modellare le dipendenze locali utilizzando termini autoregressivi (AR). NeuralProphet sfrutta efficacemente la capacità di modellare modelli locali, che è essenziale per prevedere il futuro a breve termine.

Il team di sviluppo principale di NeuralProphet ha recentemente rilasciato un entusiasmante aggiornamento del pacchetto. NeuralProphet ora include l'innovazione all'avanguardia nella previsione probabilistica, inclusa la previsione probabilistica di serie temporali utilizzando Conformal Prediction .

Il core team di sviluppo di NeuralPropher ha rilasciato questa dichiarazione.

"Il nostro obiettivo [sviluppatori principali di NeuralProphet] è quello di accelerare la ricerca e lo sviluppo della previsione conforme nello spazio delle serie temporali in qualsiasi dominio utilizzando NeuralProphet come strumento di sperimentazione rapida e prototipazione. La nostra attuale implementazione della previsione conforme è solo l'inizio del nostro viaggio verso la previsione conforme predizione. Invitiamo i nostri amici della comunità Conformal Prediction a collaborare e co-sviluppare con noi per rendere le più recenti tecniche di previsione conforme più accessibili agli utenti nelle impostazioni delle serie temporali”.

Se non hai familiarità con Conformal Prediction, Awesome Conformal Prediction può aiutarti a iniziare molto rapidamente in questo campo molto popolare e in rapida crescita. Conformal Prediction è il miglior framework di quantificazione dell'incertezza per il XXI secolo che consente la stima dell'incertezza e converte qualsiasi modello statistico, automatico o di deep learning in un modello di previsione probabilistica.

Sebbene la previsione conforme sia stata originariamente progettata espressamente per i dati IID, la recente ricerca e innovazione nella previsione conforme l'ha estesa alle serie temporali e alle previsioni. Per la prima volta nella storia delle serie temporali e delle previsioni, Conformal Prediction ha sbloccato solide previsioni probabilistiche in grado di produrre intervalli di previsione con copertura di previsione specificata a qualsiasi livello di confidenza selezionato.

Prima che la previsione conforme fosse estesa alle serie temporali, la maggior parte dei modelli di previsione non era in grado di produrre intervalli di previsione corretti. La maggior parte dei modelli di previsione esistenti non è in grado di produrre intervalli di previsione o produce intervalli di previsione che sono specificati in modo errato in termini di copertura richiesta corrispondente ai livelli di confidenza specificati.

La ricerca ha dimostrato che molti modelli di previsione (inclusi modelli statistici, automatici e di deep learning di ogni tipo) non riescono a stimare correttamente l'incertezza.

Nell'articolo del professore della Darden Business School Yael Grushka-Cockayne, " The M4 Forecasting Competition Prediction Intervals" , i ricercatori hanno dimostrato che le presentazioni della competizione di previsione M4 non sono riuscite a stimare correttamente l'incertezza con gli intervalli di previsione che generalmente non coprono i set di test con una probabilità specificata . La mancanza di una copertura corretta da parte dei modelli di previsione si traduce in un processo decisionale errato, come scorte insufficienti o eccessive di inventario, con conseguenti mancate vendite, danneggiamento della fedeltà dei clienti e costose cancellazioni di inventario lento e obsoleto.

Conformal Prediction risolve questo problema e in uno dei miei articoli precedenti, " Conformal Prediction forecasting with MAPIE ", ho mostrato come Conformal Prediciton può produrre intervalli di previsione affidabili utilizzando un modello chiamato EnbPI ("Ensemble batch forecast intervals") che offre alta qualità previsioni probabilistiche utilizzando la funzionalità compatibile con Scikit-learn implementata da MAPIE.

Il core team di sviluppo di NeuralProphet ha anche lavorato all'implementazione di Conformal Prediction, che è stato recentemente integrato in NeuralProphet. La recente versione di NeuralProphet include diverse opzioni per la previsione probabilistica utilizzando Conformal Prediction, inclusa l'implementazione di uno dei modelli più popolari Conformalized Quantile Regression (CQR). CQR regola dinamicamente gli intervalli predittivi di conseguenza per tenere conto dell'incertezza locale nelle previsioni.

Regressione quantile conformalizzata (CQR)

CQR funziona ogni volta e ogni volta, e lo fa per impostazione predefinita grazie alle garanzie di validità matematica incorporate conferite utilizzando qualsiasi modello in Conformal Prediction. Quando CQR (o qualsiasi altro metodo di previsione conforme in generale) produce un intervallo di previsione del 95%, si può essere certi che sia del 95% per impostazione predefinita (nessun If e nessun But come in altri metodi), indipendentemente dalla distribuzione dei dati, la dimensione del campione e il regressore sottostante, sia che si tratti di un modello statistico, di machine learning o di deep learning.

In questo articolo, seguiamo il mio articolo "Benchmarking NeuralProphet. Parte II - Esplorazione del set di dati sull'elettricità' in cui abbiamo prodotto previsioni puntuali per le serie temporali dell'elettricità utilizzando la funzionalità sia lineare che non lineare (AR-Net) di NeuralProphet.

Previsione punto NeuralProphet sui dati di test

Invece di addestrare NeuralProphet a produrre previsioni puntuali, ora lo addestriamo a produrre quantili di previsione del modello.

# specify quantiles 
quantile_lo, quantile_hi = 0.05, 0.95
quantiles = [quantile_lo, quantile_hi]
n_lags = 7

m_quantile_regression = NeuralProphet(
    growth='off',
    yearly_seasonality=False,
    weekly_seasonality=False,
    daily_seasonality=False,
    n_lags=n_lags,
    learning_rate=0.01,
    quantiles = quantiles
)

%%time
random_seed = 0

# Concatenate train_df and val_df as full training set
set_random_seed(random_seed)
metrics_quantile = m_quantile_regression.fit(pd.concat([train_df, val_df]),
   freq="D")

Previsioni di regressione quantile sul dataset Electricity

Abbiamo finito allora? Non proprio: ricorda, la regressione quantilica classica non produce intervalli di previsione calibrati. Solo perché abbiamo specificato i quantili del 5% e del 95% come lista dei desideri non significa che il 90% dei punti del test rientrerà in questo intervallo di previsione.

È qui che entra in gioco la magia della previsione conforme: possiamo correggere gli intervalli di previsione prodotti da qualsiasi modello, inclusa la classica regressione quantile che abbiamo utilizzato finora per addestrare NeuralProphet.

NeuralProphet con regressione quantile

Ora completiamo l'ultimo passaggio: " conformalizziamo" il nostro modello di previsione probabilistica.

Tutto quello che dobbiamo fare è chiamare . conformal_predict() sul nostro modello di regressione quantile, utilizziamo un set di calibrazione che è stato messo da parte. L'obiettivo di questo passaggio è correggere gli intervalli di previsione creati dalla regressione quantile in modo che possano fornire la copertura dichiarata in linea con il livello di confidenza del 90% selezionato.

method = "naive"
alpha = 0.1
plotting_backend = "matplotlib"  # "plotly", None

naive_forecast_conformal_test_df = m_quantile_regression.conformal_predict
  (test_df,calibration_df=cal_df,alpha=alpha,method=method,plotting_backend=plotting_backend,)

Grafico che mostra la metà dell'intervallo di previsione in base al livello di confidenza

Ora possiamo tracciare le previsioni create utilizzando il metodo "ingenuo" (il metodo ingenuo calcola i residui sul set di calibrazione e quindi utilizza il livello di confidenza per selezionare il quantile appropriato per correggere gli intervalli di previsione prodotti dalla regressione quantile.

Correzione degli intervalli di regressione quantile utilizzando il metodo ingenuo

Come possiamo vedere, gli intervalli di previsione originali prodotti dalla regressione quantile erano eccessivamente ottimistici e il metodo di previsione conforme ingenuo li ha corretti.

Quindi utilizziamo il metodo CQR più potente.


method = "cqr"alpha = 0.1plotting_backend = "matplotlib"  # "plotly", None

cqr_forecast_conformal_test_df = m_quantile_regression.conformal_predict(
    test_df,
    calibration_df=cal_df,
    alpha=alpha,
    method=method,
    plotting_backend=plotting_backend,
)

Previsione conforme con il metodo CRQ

Riferimenti:

  1. “Benchmarking Profeta neurale. Parte I - Neural Prophet vs Facebook Prophet. "
  2. “Benchmarking Profeta neurale. Parte II: esplorazione del set di dati sull'elettricità "
  3. "Gli intervalli di previsione della competizione di previsione M4"
  4. Come prevedere i quantili in un modo più intelligente (o 'ciao ciao regressione quantile, ciao regressione quantile conforme) .
  5. https://pypi.org/project/neuralprophet/
  6. Tutorial sulla previsione conforme utilizzando l'Energy Hospital Load