Come codificare la data come input nella rete neurale?


12

Sto usando le reti neurali per prevedere una serie temporale. La domanda che sto affrontando ora è come codificare data / ora / numero di serie. di ogni input impostato come input per la rete neurale?

Dovrei usare la codifica 1 di C (usata per le categorie di codifica) come descritto qui ?

O dovrei semplicemente dargli da mangiare il tempo (in millisecondi dall'1-1 al 1970)?

Oppure non è necessario fornirgli il tempo necessario purché fornisca cronologicamente il resto dei dati?


Non sono sicuro del motivo per cui pensi che non sia necessario dargli il tempo inutile se stai utilizzando reti neurali per prevedere una serie temporale .
scaaahu,

ci sono molti modi per codificare date / ora. aiuterebbe a conoscere la natura delle serie storiche. non è qualcosa a priori né da escludere, né da escludere.
vzn

@vzn Sto cercando di prevedere una serie temporale finanziaria in generale. Se questo è utile.
Shayan RC,

Risposte:


17

Le reti neurali non sono magiche. Se li trattate come sono e lanciate loro i dati senza pensare che avrete un brutto momento.

Devi fermarti e chiederti "I millisecondi dal 1970 saranno effettivamente predittivi dell'evento che mi interessa?" La risposta a cui dovresti arrivare immediatamente è no. Perché? Per ogni istanza a cui tieni veramente (eventi futuri, il passato è già accaduto) la variabile temporale assumerà un valore maggiore di qualsiasi valore che la variabile temporale assumerà nei tuoi dati di allenamento. È improbabile che una tale variabile sia di aiuto. Ancor peggio, è probabile che causi un overfitting (un grave problema per potenti modelli non lineari come le reti neurali) se non stai attento.

Ciò che potrebbe avere senso è una variabile come la settimana dell'anno o del mese che potrebbe aiutarti a modellare gli effetti stagionali o annuali. Ho fatto un po 'di lavoro sulla previsione delle malattie agricole in cui il giorno giuliano ha finito per essere una variabile molto importante. Sulla base di questa esperienza, sospetto che sarebbe meglio codificare questo tipo di variabile come variabile categorica piuttosto che ordinale, la tua esperienza potrebbe davvero. Si noti che il mese o la settimana dell'anno sono eventi ripetibili che è probabile che si verifichino molte volte nei dati di allenamento ed è possibile spiegare perché una tale variabile potrebbe influire su un risultato finanziario. In contrasto con millisecondi dal 1970, che è solo un valore monotonicamente crescente.

Infine, dalla tua affermazione "O stai fornendo il tempo inutile purché fornisca cronologicamente il resto dei dati?" sembra che potresti non avere una buona conoscenza di come funzionano le reti neurali. Con una rete neurale feedforward standard, l'ordine con cui nutri la rete i tuoi dati non avranno alcun impatto sulle previsioni. L'ordine può influire sull'allenamento se si utilizza la discesa gradiente stocastica o mini-batch, ma questo è solo un artefatto del metodo di allenamento iterativo (al contrario del batch). Se vuoi modellare la dipendenza temporale con una rete neurale dovrai usare qualcosa come una finestra scorrevole o una rete neurale ricorrente.


2

[-1,1][0,1]Sion(t)

f(t)f(t)dt=ft+gtgtft

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.