Como codificar a data como entrada na rede neural?


12

Estou usando redes neurais para prever uma série temporal. A questão que estou enfrentando agora é como codificar data / hora / número de série. de cada entrada definida como uma entrada para a rede neural?

Devo usar uma codificação C (usada para categorias de codificação) conforme descrito aqui ?

Ou devo alimentá-lo o tempo (em milissegundos desde 1-1-1970)?

Ou alimentá-lo o tempo é desnecessário, desde que eu alimente o restante dos dados cronologicamente?


Não sei por que você acha desnecessário alimentar o tempo se estiver usando redes neurais para prever uma série temporal .
Scaaahu 27/09/2013

existem muitas maneiras de codificar datas / hora. ajudaria a conhecer a natureza das séries temporais. não é uma coisa priori, quer para descartar ou regra.
vzn

@vzn Estou tentando prever uma série temporal financeira em geral. Se isso é útil.
quer

Respostas:


17

Redes neurais não são mágicas. Se você tratá-los como eles são e simplesmente jogar dados neles, sem pensar que você vai se divertir muito.

Você precisa parar e se perguntar: "Milissegundos desde 1970 serão realmente preditivos do evento em que estou interessado?" A resposta que você deve chegar imediatamente é não. Por quê? Para todas as instâncias com as quais você realmente se preocupa (eventos no futuro, o passado já aconteceu), a variável time assumirá um valor maior que qualquer valor que a variável time levará em seus dados de treinamento. É improvável que essa variável ajude. Pior ainda, é provável que cause excesso de ajuste (um problema sério para modelos não lineares poderosos, como redes neurais), se você não tomar cuidado.

Agora, o que pode fazer sentido é uma variável como semana do ano ou mês que pode ajudá-lo a modelar efeitos sazonais ou anuais. Eu fiz alguns trabalhos na previsão de doenças agrícolas, onde o dia juliano acabou sendo uma variável muito importante. Com base nessa experiência, suspeito que seria melhor codificar esse tipo de variável como variável categórica do que ordinal; sua experiência pode ser muito. Observe que mês ou semana do ano são eventos repetíveis que é provável que você veja muitas vezes em seus dados de treinamento e é possível explicar por que essa variável pode afetar um resultado financeiro. Compare isso com milissegundos desde 1970, que é apenas um valor crescente monotonicamente.

Por fim, a partir de sua declaração "Ou é desnecessário alimentar o tempo contanto que eu o alimente com o restante dos dados cronologicamente?" parece que você pode não ter uma noção muito boa de como as redes neurais funcionam. Com uma rede neural de feedforward padrão, a ordem em que você alimenta a rede, seus dados não terão impacto nas previsões. O pedido pode afetar o treinamento se você estiver usando descida estocástica ou com gradiente de minilote, mas esse é apenas um artefato do método de treinamento iterativo (em oposição ao lote). Se você deseja modelar a dependência temporal com uma rede neural, precisará usar algo como uma janela deslizante ou uma rede neural recorrente.


2

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

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.