Tenho duas (ou mais, em princípio) séries temporais 1xN e gostaria de treinar um NN para prever o próximo valor de ambos. Posso organizá-los como uma matriz 2xN e alimentar uma janela dessa matriz como entrada para o NN, mas não sei como estruturar o próprio NN.
Eu fiz um NN com convoluções que podem fazer um trabalho bastante decente com uma única série, mas eu gostaria de explorar correlações entre séries. Qual topologia funciona para permitir que o NN observe correlações entre as séries temporais?
Respostas:
Depende um pouco do tipo de correlação que você está procurando. Você espera uma correlação presente em cada etapa / janela do tempo ou um nível diferente de correlação por etapa / janela do tempo? Você está executando uma classificação ou uma tarefa de regressão? Às vezes, prever o próximo valor envolve classificação, mas presumo que você esteja procurando por regressão no momento.
Como ponto de partida, tente alimentar cada uma dessas seqüências separadamente como entrada para uma rede neural recorrente (comece com um LSTM básico e reduza-o se houver um exagero). Gosto da sua sugestão de janelas sobrepostas.
Por exemplo (pseudocode-ish):
fonte
Você definitivamente deve verificar uma implementação LSTM-RNN ou GRU-RNN ; o segundo é mais fácil de entender e menos computacionalmente caro.
Um exemplo valioso é:
https://machinelearningmastery.com/multivariate-time-series-forecasting-lstms-keras/
fonte
Você poderia fornecer explicitamente correlação como uma entrada nn, conforme calculado em Rastreamento de correlação local em séries temporais , com código disponível no Blog de Vlad .
Também li um artigo (infelizmente não me lembro do título ou nome dos autores de uma pesquisa no google) em que uma previsão de correlação futura é um nn target explícito como parte de um target nn target multivariado. Os autores afirmaram que a inclusão da correlação como alvo melhorou a precisão da parte não correlacionada do alvo multivariado.
fonte