Domanda:
Analisi di serie temporali con reti neurali
user11636
2012-05-31 03:47:09 UTC
view on stackexchange narkive permalink

Non conosco le reti neurali e l'apprendimento automatico e mi chiedevo come utilizzi i dati delle serie temporali per impostare i pesi di una normale FNN e come utilizzi i pesi finali per prevedere le serie temporali. In sostanza, come puoi trasformare i dati delle serie temporali in pesi e viceversa per l'output.

Hai provato ad adattare un modello semplice come $ v_k = \ alpha v_ {k-1} + \ epsilon $ ai tuoi dati? Sono tutto per le reti neurali, ma proverei un modello semplice come quello se solo per darti una linea di base per il confronto prima di guardare gli NN. I modelli $ AR (k) $ semplici vanno bene anche per cose con oscillazioni. Una volta raggiunti i limiti di questa sorta di modello "scatola bianca", penserei agli NN.
Quattro risposte:
pat
2012-08-30 01:54:35 UTC
view on stackexchange narkive permalink

Una rete neurale feed-forward (tipicamente multistrato) è un tipo di studente supervisionato che aggiusterà i pesi della rete sul suo input e sui nodi interni, in modo iterativo, al fine di ridurre al minimo gli errori tra le variabili target previste ed effettive . Utilizza comunemente la discesa del gradiente stocastico (a volte chiamata propagazione all'indietro dell'errore) su molte iterazioni al fine di trovare un minimo locale della risposta all'errore e ottimizzare di conseguenza i pesi della rete.

L'idea di base alla base della discesa del gradiente stocastico è di iniziare randomizzando i pesi, quindi regolarli iterando attraverso diversi passaggi e aggiornando i pesi in una direzione che sposti l'errore totale tra target e errori previsti verso il locale errore minimo della superficie del gradiente. In pratica, si trova un compromesso tra l'ottimizzazione di un set di formazione rispetto a un set di convalida, al fine di ridurre il problema dell'over-fitting.

Infine, l'input (serie temporali o altro) spesso deve essere trasformato al fine di creare una serie stazionaria che sia anche delimitata (in termini di ampiezza) tra l'intervallo di input delle funzioni di trasferimento dello strato NN (tipicamente, da 0 a 1 o da -1 a 1).

Una volta che il i pesi sono stati addestrati, il modello può essere memorizzato e utilizzato per elaborare nuovi dati di serie temporali aggiuntive, proprio come un tipico modello basato sulla regressione lineare.

Un esempio di illustrazione dell'utilizzo di un NN per prevedere i dati di serie temporali finanazziali, utilizzando Weka, è pubblicato qui: http://intelligenttradingtech.blogspot.com/2010/01/systems.html

Un buon testo che confronta i modelli finanziari basati sulla realtà aumentata con i modelli NN è , "Metodi quantitativi applicati per il commercio e gli investimenti", Christian Dunis et.al.

Rohit Chatterjee
2013-04-08 14:27:53 UTC
view on stackexchange narkive permalink

Vorrei iniziare rispondendo alla tua domanda, quindi aggiungerò alcuni commenti e suggerimenti.

Innanzitutto, credo che quando dici "peso" intendi effettivamente "input" / "output". Questo perché hai chiesto come trasformare le serie temporali in pesi e come trasformare i pesi di output in una previsione. La terminologia della rete neurale utilizza "peso" per indicare qualcos'altro (la risposta di Pat usa correttamente il termine "peso").

Questo è ciò che le persone di solito suggeriscono: se la tua serie temporale ha l'aspetto

  X_1, X_2, ..., X_n, ...  

quindi procedi come segue:

Passaggio 1: decidi quante osservazioni desideri utilizzare per fare una previsione.

Passaggio 2: decidere quanti passi in avanti si desidera prevedere.

Entrambe queste scelte sono fisse per NN.

Per questo esempio supponiamo che tu voglia usare le ultime 5 letture per fare 2 previsioni.

Quindi lo farai

Passaggio 3. Crea una rete neurale con 5 nodi di input e 2 nodi di output.

Passaggio 4. Crea il tuo training set con ogni elemento composto da 5 letture sequenziali come input e le due letture successive come output.

Ecco i primi DUE elementi del training set:

  Input = X_1, X_2, X_3, X_4, X_5Output = X_6, X_7Input = X_2, X_3, X_4, X_5, X_6Output = X_7, X_8etc.  

Si spera che questo risponda alla tua domanda.

Ora per alcuni gyan.

Se i tuoi dati sono rumorosi, ad esempio zecche di borsa, quindi la mia sensazione è che sarà difficile allenarsi. So di aver avuto sfortuna nel tentativo di addestrare reti neurali su dati rumorosi.

Quindi ecco un'altra strategia:

Per prima cosa modella la tua serie temporale utilizzando il framework ARIMA. Visualizza una serie temporale come

  Base polinomiale + Componente ciclico + Casualità limitata  

(Dai un'occhiata all'esempio di Weka nella risposta di pat da questo punto di vista.)

Ora la mia sensazione (e sto ancora sperimentando) è che i componenti casuali stiano interferendo con l'addestramento dell'NN. Quindi voglio evitare di tentare di prevederli direttamente.

Immagina i dati della tua serie in arrivo. Ad ogni lettura li inserisci nella tua scatola nera ARIMA, che calcola il modello sottostante e poi sputa il modello ARIMA parametri. Quindi all'istante 0 hai un set di parametri, e poi all'istante 1 hai un set aggiornato di parametri, ecc.

Nota: la scatola nera ARIMA è lenta.

Domanda 1: Sarebbe possibile per una rete neurale apprendere come cambiano questi parametri? La mia sensazione è che cambieranno lentamente, quindi potrebbe essere fattibile.

Domanda 2: Potreste addestrare una rete neurale diversa per distinguere eventuali pattern nell'errore ARIMA? Cioè Se ARIMA prevede 5.4 e la lettura successiva effettiva è 5.5, potresti addestrare una rete neurale per capirlo 0.1?

Relax_Im_A_Quant
2012-05-31 13:43:05 UTC
view on stackexchange narkive permalink

Esistono diversi modi in cui è possibile "addestrare" una rete neurale. Personalmente, preferisco l'approccio dell'algoritmo genetico: ogni individuo rappresenta un insieme di pesi, con la funzione fitness che è la performance della rete neurale.

Le prestazioni della rete neurale in termini di analisi delle serie temporali potrebbero essere l'errore quadratico medio delle previsioni rispetto agli obiettivi. Un metodo comune nella previsione delle serie temporali con le reti neurali consiste nell'utilizzare la variazione% da intervalli specifici su un periodo di "ricerca".

Potresti trovarlo utile - http://ijcai.org/Past%20Proceedings/IJCAI-89-VOL1/PDF/122.pdf

La tua risposta non affronta il problema principale dei PO, l'uso dei dati delle serie temporali.
s_a
2012-08-30 00:42:34 UTC
view on stackexchange narkive permalink

Se hai accesso a un'installazione MATLAB, prova prima il toolbox per reti neurali: http://www.mathworks.com/help/toolbox/nnet/gs/f9-56659.html ( dai un'occhiata agli screenshot)

È molto, molto buono per quello che stai cercando di ottenere e con un'ottima documentazione. È un ottimo punto di partenza.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...