Previsione di serie storiche usando ARIMA vs LSTM


64

Il problema con cui ho a che fare è prevedere i valori delle serie temporali. Sto guardando una serie temporale alla volta e, ad esempio, basandomi sul 15% dei dati di input, vorrei prevederne i valori futuri. Finora mi sono imbattuto in due modelli:

  • LSTM (memoria a breve termine; una classe di reti neurali ricorrenti)
  • ARIMA

Ho provato entrambi e ho letto alcuni articoli su di essi. Ora sto cercando di capire meglio come confrontare i due. Quello che ho trovato finora:

  1. LSTM funziona meglio se abbiamo a che fare con enormi quantità di dati e se sono disponibili sufficienti dati di formazione, mentre ARIMA è migliore per set di dati più piccoli (è corretto?)
  2. ARIMA richiede una serie di parametri (p,q,d)che devono essere calcolati in base ai dati, mentre LSTM non richiede l'impostazione di tali parametri. Tuttavia, ci sono alcuni iperparametri che dobbiamo sintonizzare per LSTM.
  3. EDIT: Una delle principali differenze tra i due che ho notato mentre leggevo un ottimo articolo qui , è che ARIMA potrebbe funzionare bene solo su serie temporali fisse (dove non c'è stagionalità, tendenza, ecc.) E devi prenderti cura di questo se vuoi usare ARIMA

Oltre alle proprietà sopra menzionate, non sono riuscito a trovare altri punti o fatti che possano aiutarmi a selezionare il modello migliore. Le sarei davvero grato se qualcuno potesse aiutarmi a trovare articoli, documenti o altre cose (finora non ho avuto fortuna, solo alcune opinioni generali qua e là e niente basato su esperimenti).

Devo dire che originariamente mi occupo di streaming di dati, tuttavia per ora sto usando set di dati NAB che includono 50 set di dati con la dimensione massima di 20k punti dati.



Ti dispiacerebbe condividere il codice di LSTM? E GRAZIE.
AIUTO

Risposte:


25

L'istruzione 1 è corretta, l'istruzione 2 è corretta, ma richiede l'elaborazione e l'istruzione 3 non è corretta per ARIMA stagionale:

Quanto segue potrebbe indicarti la giusta direzione, ma spero che otterrai qualche risposta in più con maggiore profondità nell'arena di LSTM.

Dici che hai provato entrambi gli algoritmi e che stai semplicemente cercando di capire quale sia il migliore, il che mi porta a pensare che potresti avere più problemi con il processo di scienza dei dati e la convalida incrociata rispetto alle specifiche dei modelli.

Serie storiche in generale:

Le serie storiche, in generale, sono difficili da prevedere. Se fossero facili da prevedere, tutti i data scientist sarebbero ricchi, avendo accuratamente previsto il valore di tutti gli stock. La realtà è che gli hedge fund, in media, non hanno sovraperformato il mercato e che la previsione delle serie storiche è in genere molto scarsa e si applica solo a durate molto brevi. I problemi principali sono che c'è molto rumore, ci sono molte influenze nascoste, i modelli sono eccessivamente semplicistici, gli influenzatori non si comportano come pensiamo che dovrebbero, l'interazione tra linearità e non linearità è sottile e confusa, ... all'infinito.

ARIMA

Sei errato nella tua valutazione secondo cui ARIMA richiede serie temporali fisse su cui prevedere. ARIMA non stagionale ha tre valori di input che aiutano a controllare ARIMA , stazionarietà e previsione (p, d, q), dove:

  • p è il numero di termini autoregressivi,
  • d è il numero di differenze non stagionali necessarie per la stazionarietà, e
  • q è il numero di errori di previsione ritardati nell'equazione di previsione.

Al contrario ARIMA stagionale ha sei valori di input ARIMA (p, d, q, P, D, Q), dove:

  • P è il numero di termini autoregressivi stagionali,
  • D è il numero di differenze stagionali e
  • Q è il numero di termini della media mobile stagionale.

Fatte salve le dichiarazioni di qualificazione di cui sopra, suggerisco di giocare con ARIMA stagionale per avere un'idea delle complessità coinvolte nel livellamento, nella rimozione della stagione, nella riduzione della tendenza, nella riduzione del rumore e nelle previsioni.

LSTM

Non so abbastanza su LSTM per aggiungere molto qui. Aggiungerò che le bandiere rosse tendono ad essere sollevate quando qualcuno inizia l'esercizio della scienza dei dati con l'apprendimento profondo. Ti suggerisco di imparare il più possibile usando ARIMA e quindi applicare alcune delle tue competenze ARIMA per aiutarti a imparare LSTM. Le reti neurali possono essere uno strumento molto potente, ma esse:

  • può richiedere molto tempo per l'esecuzione,
  • spesso richiedono più dati per l'addestramento rispetto ad altri modelli e
  • hanno molti parametri di input da mettere a punto.

Convalida incrociata e modelli di confronto:

Le serie temporali sono divertenti in quanto tutti i dati di allenamento possono di solito essere trasformati in set di addestramento di apprendimento supervisionato. Once può semplicemente prendere una serie storica e tornare indietro nel tempo. Cioè ... scegli un momento e fai finta di non avere dati aggiuntivi, quindi produci una previsione e vedi quanto hai fatto bene. Puoi marciare attraverso le serie temporali facendo questo volte per ottenere una valutazione delle prestazioni del tuo modellon e per confrontare i modelli prendendo le precauzioni necessarie per evitare un eccesso di adattamento .

Spero che questo aiuti e buona fortuna!


Grazie per la tua risposta Le tue note su ARIMA sono utili e cerco di tenerle a mente. In caso di convalida incrociata e confronto dei due modelli, per i set di dati correnti, utilizzando una varietà di parametri, posso dire quale algoritmo funziona meglio e così via. Il problema è che nessuno di questi set di dati potrebbe rappresentare i dati reali (dati in streaming) ed è per questo che ho pensato che sarebbe meglio chiedere agli altri nell'area della scienza dei dati e dell'apprendimento automatico di condividere i loro pensieri ed esperienze.
ahajib,

Ma se disponi di dati di streaming, puoi trasformarli in dati di test salvando il flusso. La parte interessante delle serie temporali è che è sempre possibile creare un set di dati di test da qualsiasi set di dati. Hai solo bisogno di salvare alcuni dei dati e quindi ripristinare il tempo.
AN6U5,

So che questo è un po 'invecchiato, ma qui non sono d'accordo. I parametri d, D sono per la differenziazione come dice @ AN6U5, ma il motivo per fare queste differenze in primo luogo è far rispettare la stazionarietà sul problema. In effetti, un'interpretazione del modello ARIMA è che è solo una regressione lineare con termini per imporre la stazionarietà sulle serie temporali.
Ryan,

6

Aggiungendo alla risposta di @ AN6U5.

Da una prospettiva puramente teorica, questo documento ha mostrato che gli RNN sono approssimatori universali. Non ho letto il documento in dettaglio, quindi non so se la prova può essere applicata anche a LSTM, ma lo sospetto. Il problema più grande con RNN in generale (incluso LSTM) è che sono difficili da addestrare a causa dell'esplorazione del gradiente e del problema della scomparsa del gradiente. Il limite pratico per LSTM sembra essere di circa 200 ~ passi con discesa gradiente standard e inizializzazione casuale. E, come detto, in generale, affinché un modello di apprendimento profondo funzioni bene, sono necessari molti dati e un sacco di messa a punto.

Il modello ARIMA è più limitato. Se il tuo sistema sottostante è troppo complesso, è semplicemente impossibile ottenere una buona misura. D'altra parte, se il modello sottostante è abbastanza semplice, è molto più efficiente dell'approccio di apprendimento profondo.


2

I modelli ARIMA sono lineari e i modelli LSTM non lineari. Alcuni altri modelli parametrici di serie temporali non lineari che gli statistici hanno studiato sono i modelli autoregressivi a soglia (TAR) e i modelli autoregressivi a transizione graduale (STAR). Il pacchetto R tsDyn implementa questi modelli.

Mi chiedo come facciano i modelli STAR rispetto a LSTM.


2

Sono giunto alla stessa conclusione di te e degli altri, la previsione tradizionale è ancora probabilmente la più applicabile e forse affidabile per le serie temporali di valori numerici. C'è un leggero sanguinamento nell'apprendimento profondo nella discussione in cui le serie temporali per i valori numerici si mescolano all'apprendimento profondo, dove l'apprendimento profondo (attualmente) si applica alle sfide moderne nel riconoscimento di schemi per immagini, suoni, testo pulito o rilevamento di anomalie. Spesso ottengo buoni risultati con VAR / VECM per i dati transazionali giornalieri, che probabilmente potrebbero essere applicati al caso d'uso dell'elaborazione del segnale.


1

Come caso estremo, ho avuto la possibilità di studiare le previsioni sul Forex (Foreign Exchange Rate) e confrontare intensamente le performance di LSTM, windowed-MLP e ARIMA. Come molti articoli dicono, le serie temporali Forex sono vicine alle serie di camminate casuali (è completamente non stazionaria). Nessuno di questi algoritmi è in grado di prevedere la frequenza spot del giorno successivo. Ad esempio, se non ci sono (o poche) modifiche, manterrà il valore corrente e sembrerà adatto. Tuttavia, se si verifica un'improvvisa (sostanziale) variazione del tasso spot di domani, allora non riesce sempre a prevedere. Il problema è che non c'è nulla da imparare dai dati di formazione (diciamo, la storia delle tariffe spot degli ultimi 10 anni) se è abbastanza grande o no, perché è completamente casuale (forse, a causa dei sentimenti dei rivenditori ...) .

In effetti, LSTM con solo un ritardo "1" o ARIMA con (1,0,0) funzioneranno al meglio poiché la memorizzazione di dati con più di 1 ritardo non aiuta affatto. Per questo tipo di serie storiche, direi, in termini di prestazioni di tracciamento, 1) ARIMA, 2) LSTM, 3) MLP. Ultimo commento ... MLP con parametri macro / microeconomici (diciamo, differenza di PIL, tassi obbligazionari, prezzo del petrolio greggio, indice del dollaro, ecc.) Poiché le funzionalità aggiuntive non hanno funzionato affatto.

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.