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?
Respostas:
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.
fonte
fonte