Gostaria de saber se existe um código para treinar uma rede neural convolucional para fazer a classificação de séries temporais.
Eu vi alguns artigos recentes ( http://www.fer.unizg.hr/_download/repository/KDI-Djalto.pdf ), mas não tenho certeza se existe algo ou se eu mesmo o codigo.
Respostas:
Se você deseja uma solução de caixa preta de código aberto, tente analisar o Weka , uma biblioteca java de algoritmos de ML. Esse cara também usou Camadas Covolucionais em Weka e você pode editar o código de classificação para se adequar a uma tarefa de classificação de séries temporais.
Quanto à codificação do seu próprio ... Estou trabalhando no mesmo problema usando a biblioteca python, theano (vou editar este post com um link para o meu código, se eu decifrá-lo em breve). Aqui está uma lista abrangente de todos os documentos que utilizarei para me ajudar em uma boa hora de pesquisa na web:
Como ponto de partida, você pode editar o código encontrado aqui para classificar em um número diferente de categorias ou editá-lo da classificação para a regressão - fiz isso removendo a camada final do softmax e criando apenas um nó de saída. Eu o treinei em fatias de uma função como
y=sin(x)
um teste.fonte
É inteiramente possível usar uma CNN para fazer previsões de séries temporais, seja por regressão ou classificação. As CNNs são boas em encontrar padrões locais e, de fato, trabalham com a suposição de que os padrões locais são relevantes em todos os lugares. A convolução também é uma operação bem conhecida em séries temporais e processamento de sinais. Outra vantagem sobre as RNNs é que elas podem ser muito rápidas de calcular, pois podem ser paralelizadas em oposição à natureza seqüencial da RNN.
No código abaixo, demonstrarei um estudo de caso em que é possível prever a demanda de eletricidade em R usando keras. Observe que este não é um problema de classificação (eu não tinha um exemplo útil), mas não é difícil modificar o código para lidar com um problema de classificação (use uma saída softmax em vez de uma saída linear e uma perda de entropia cruzada).
O conjunto de dados está disponível na biblioteca fpp2:
Em seguida, criamos um gerador de dados. Isso é usado para criar lotes de dados de treinamento e validação a serem usados durante o processo de treinamento. Observe que esse código é uma versão mais simples de um gerador de dados encontrado no livro "Deep Learning with R" (e a versão em vídeo dele "Deep Learning with R in Motion") de publicações de tripulação.
Em seguida, especificamos alguns parâmetros a serem passados para nossos geradores de dados (criamos dois geradores, um para treinamento e outro para validação).
O parâmetro lookback é a distância que queremos olhar no passado e a distância que olhamos para o futuro que queremos prever.
Em seguida, dividimos nosso conjunto de dados e criamos dois geradores:
train_dm <- dm [1: 15000,]
Em seguida, criamos uma rede neural com uma camada convolucional e treinamos o modelo:
Finalmente, podemos criar algum código para prever uma sequência de 24 pontos de dados usando um procedimento simples, explicado nos comentários do R.
e voila:
Não é tão ruim.
fonte