Previsione di diversi periodi con l'apprendimento automatico


9

Recentemente ho ricapitolato le mie conoscenze sulle serie storiche e mi sono reso conto che l'apprendimento automatico fornisce principalmente solo un passo avanti alle previsioni.

Con le previsioni a un passo avanti intendo previsioni che, ad esempio, se disponiamo di dati orari, utilizziamo i dati dalle 10 per prevedere le 11 e le 11 per le 12, ecc.

inserisci qui la descrizione dell'immagine

I metodi di apprendimento automatico possono produrre previsioni h-passi avanti? Con le previsioni h-step intendo che, ad esempio, assumendo dati orari, utilizziamo i dati dalle 10 per fare una previsione 7-step per ottenere stime per 11,12,13,14,15,16,17 ' in punto.

Foto di esempio: inserisci qui la descrizione dell'immagine

In relazione alla mia domanda principale, mi chiedo:

  • Quali sono i motivi per cui non vedo nessuno usare l'apprendimento automatico per fare previsioni h-step-ahead?
  • Se esiste un metodo che utilizza l'apprendimento automatico, è più o meno preciso di ARIMA?

Risposte:


7

(Parte di questo è tratto da un mio precedente post ) Innanzitutto è necessario distinguere i due diversi modi per eseguire la previsione di serie storiche in più fasi: previsione ricorsiva e previsione diretta:

  • Nelle previsioni ricorsive (chiamate anche previsioni iterate), si allena il modello solo per le previsioni con un passo avanti. Al termine dell'allenamento, applicare il modello finale in modo ricorsivo per prevedere 1 passo avanti, 2 passi avanti, ecc ... fino a raggiungere l' orizzonte di previsione passi desiderato . Per fare ciò, inserisci la previsione da ogni passaggio successivo nel modello per generare il passaggio successivo. Questo approccio viene utilizzato dagli algoritmi di previsione tradizionali come gli algoritmi di ARIMA e di livellamento esponenziale e può essere utilizzato anche per le previsioni basate su Machine Learning (vedere questo post per un esempio e questo post per alcune discussioni).n
  • La previsione diretta è quando ti alleni un modello separato per ogni passaggio (quindi stai provando a "direttamente" prevedere il passo avanti invece di raggiungere passi ricorsivamente. Vedi Ben Taied et al. Per una discussione sulla previsione diretta e approcci combinati più complessi.nthn

Ora per rispondere alla tua domanda principale:

I metodi di apprendimento automatico possono produrre previsioni h-passi avanti?

Sì, i metodi ML possono e possono produrre previsioni anticipate utilizzando sia le previsioni multistep ricorsive che dirette. Non solo, ma per la previsione diretta multi-step sono in realtà più adatti all'attività rispetto ai modelli tradizionali come ARIMA o Smoothing esponenziale. Si noti tuttavia che per le previsioni dirette multi-passo, è necessario specificare prima i passi h avanti per i quali si desidera prevedere e formare il modello di conseguenza, mentre per le previsioni ricorsive è possibile utilizzare il modello per qualsiasi numero di passi futuri desiderati .

Inoltre Chevillon & Hendry sostengono che in alcuni casi la previsione diretta in più fasi è più accurata della previsione ricorsiva, il che implica che ML sarebbe più accurata dei metodi tradizionali.

Per le tue altre domande:

  • Quali sono i motivi per cui non vedo nessuno usare l'apprendimento automatico per fare previsioni h-step-ahead?

Molte persone usano ML per le previsioni multi-step, in particolare utilizzando le reti neurali: il metodo nnetar di Hyndman disponibile nel pacchetto R Forecast, il pacchetto nnfor di Kourentzes, il modello DeepAR di Amazon e molti altri.

XGBoost è stato utilizzato con successo anche in alcune competizioni di serie storiche di Kaggle.

Vedi Bontempi et al. per una discussione generale.

  • Se esiste un metodo che utilizza l'apprendimento automatico, è più o meno preciso di ARIMA?

Questa è una domanda aperta e ovviamente dipende dai dati e dall'applicazione per cui si prevede.


1

Ho giocato con serie storiche per il rilevamento di anomalie negli ultimi mesi e posso condividere con te la mia esperienza.

Le serie temporali con cui ho lavorato sono state caratterizzate da due stagionalità (giornaliera e settimanale), nessuna tendenza e molte cime durante le ore diurne.

Ho fatto diversi esperimenti e poi ho scelto un modello basato su reti neurali LSTM perché nel mio caso ha sovraperformato gli arima, ma ovviamente come ogni cosa in statistica, non esiste una soluzione generale.

Per prevedere più di un passaggio temporale in futuro con una rete neurale è piuttosto semplice, sarà necessario emettere N valori invece di uno e quell'output N verrà confrontato con le N osservazioni reali.

Dalla mia esperienza, posso dirti che usando una N bassa (diciamo 1), il modello utilizzerà rigorosamente pochi passi nel passato per prevedere quello nuovo, senza "imparare" la stagionalità. Dall'altro lato, aumentando N troppo, si imparano le stagionalità ma la precisione complessiva diminuisce.

Ai fini della mia analisi ho trovato N = 4 (2 ore in futuro) un buon compromesso.


1

Per rispondere alla tua domanda in un termine più generale, è possibile utilizzare l'apprendimento automatico e prevedere previsioni h-steps-ahead . La parte difficile è che devi rimodellare i tuoi dati in una matrice in cui hai, per ogni osservazione il valore effettivo dell'osservazione e i valori passati delle serie temporali per un intervallo definito. Sarà necessario definire manualmente quale sia l'intervallo di dati che sembrano rilevanti per prevedere le serie temporali, in effetti, come si farebbe con un parametro ARIMA. La larghezza / orizzonte della matrice è fondamentale per prevedere correttamente il valore successivo assunto dalla matrice. Se il tuo orizzonte è limitato, potresti perdere gli effetti della stagionalità.

Una volta che lo hai fatto, per prevedere i passi avanti, dovrai prevedere il primo valore successivo in base all'ultima osservazione. Dovrai quindi memorizzare la previsione come "valore reale", che verrà utilizzato per prevedere il secondo valore successivo attraverso un time shifting , proprio come un modello ARIMA. Dovrai ripetere il processo h volte per ottenere i tuoi passi avanti. Ogni iterazione si baserà sulla previsione precedente.

Un esempio che utilizza il codice R sarebbe il seguente.

library(forecast)
library(randomForest)

# create a daily pattern with random variations
myts <- ts(rep(c(5,6,7,8,11,13,14,15,16,15,14,17,13,12,15,13,12,12,11,10,9,8,7,6), 10)*runif(120,0.8,1.2), freq = 24)
myts_forecast <- forecast(myts, h = 24) # predict the time-series using ets + stl techniques
pred1 <- c(myts, myts_forecast1$mean) # store the prediction

# transform these observations into a matrix with the last 24 past values
idx <- c(1:24)
designmat <- data.frame(lapply(idx, function(x) myts[x:(215+x)])) # create a design matrix
colnames(designmat) <- c(paste0("x_",as.character(c(1:23))),"y")

# create a random forest model and predict iteratively each value
rfModel <- randomForest(y ~., designmat)
for (i in 1:24){
  designvec <- data.frame(c(designmat[nrow(designmat), 2:24], 0))
  colnames(designvec) <- colnames(designmat)
  designvec$y <- predict(rfModel, designvec)
  designmat <- rbind(designmat, designvec)
}
pred2 <- designmat$y

#plot to compare predictions
plot(pred1, type = "l")
lines(y = pred2[216:240], x = c(240:264), col = 2)

Ora, ovviamente, non ci sono regole generali per determinare se un modello di serie temporale o un modello di apprendimento automatico sono più efficienti. Il tempo di calcolo potrebbe essere più elevato per i modelli di apprendimento automatico, ma d'altra parte, è possibile includere qualsiasi tipo di funzionalità aggiuntive per prevedere le serie temporali utilizzandole (ad esempio non solo funzioni numeriche o logiche). Un consiglio generale sarebbe quello di testare entrambi e scegliere il modello più efficiente.


Anche se potresti voler menzionare che ciò che chiami time shifting è in realtà ciò che sta facendo un arima standard. Ecco perché le previsioni di Arima tendono ad essere molto lineari.
5

Si, esattamente. Modificherò la mia risposta per chiarire questo passaggio.
AshOfFire,

1
Nei modelli di serie storiche è inoltre possibile includere funzionalità aggiuntive.
Tim

Corretto, con ARIMAX, ma devono essere numerici e i coefficienti aggiunti non possono essere facilmente interpretati come i coefficienti utilizzati in un ARMA.
AshOfFire,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.