Como aplicar a Rede Neural à previsão de séries temporais?

83

Eu sou novo no aprendizado de máquina e tenho tentado descobrir como aplicar redes neurais à previsão de séries temporais. Encontrei recursos relacionados à minha consulta, mas ainda estou um pouco perdido. Eu acho que uma explicação básica sem muitos detalhes ajudaria.

Digamos que tenho alguns valores de preço para cada mês em alguns anos e desejo prever novos valores de preços. Eu pude obter uma lista de preços nos últimos meses e tentar encontrar tendências semelhantes no passado usando o K-Nearest-Neighbor. Eu poderia usar a taxa de variação ou alguma outra propriedade das tendências passadas para tentar prever novos preços. Como posso aplicar a rede neural a esse mesmo problema é o que estou tentando descobrir.

solartic
fonte
@solartic, apenas curioso, você implementou com sucesso esse método?
Saggy Manatee And Swan Folk

Respostas:

102

Aqui está uma receita simples que pode ajudá-lo a começar a escrever código e testar idéias ...

Vamos supor que você tenha dados mensais registrados ao longo de vários anos, então você tem 36 valores. Vamos supor também que você só se preocupa em prever um mês (valor) com antecedência.

  1. Análise exploratória de dados: aplique alguns dos métodos tradicionais de análise de séries temporais para estimar a dependência do atraso nos dados (por exemplo, gráficos de autocorrelação e autocorrelação parcial, transformações, diferenciação). Digamos que você encontre que o valor de um determinado mês está correlacionado com os dados dos últimos três meses, mas não muito além disso.
  2. Particionar seus dados em conjuntos de treinamento e validação: Tome os primeiros 24 pontos como valores de treinamento e os pontos restantes como conjunto de validação.
  3. Crie o layout da rede neural: você tomará os valores dos últimos três meses como entradas e deseja prever o valor do próximo mês. Portanto, você precisa de uma rede neural com uma camada de entrada contendo três nós e uma camada de saída contendo um nó. Você provavelmente deve ter uma camada oculta com pelo menos alguns nós. Infelizmente, escolher o número de camadas ocultas e o respectivo número de nós não é algo para o qual existem diretrizes claras. Eu começaria pequeno, como 3: 2: 1.
  4. Crie os padrões de treinamento: Cada padrão de treinamento terá quatro valores, com os três primeiros correspondentes aos nós de entrada e o último definindo qual é o valor correto para o nó de saída. Por exemplo, se seus dados de treinamento forem os valores , o
    x1,x2,x24
    pattern1:x1,x2,x3,x4
    pattern2:x2,x3,x4,x5
    pattern21:x21,x22,x23,x24
  5. Treine a rede neural nesses padrões
  6. Teste a rede no conjunto de validação (meses 25 a 36): aqui você passará os três valores que a rede neural precisa para a camada de entrada e verá como o nó de saída é configurado. Portanto, para ver quão bem a rede neural treinada pode prever o valor do mês 32, você passará os valores nos meses 29, 30 e 31

Esta receita é obviamente de alto nível e você pode coçar a cabeça primeiro ao tentar mapear seu contexto em diferentes bibliotecas / programas de software. Mas, esperançosamente, isso esboça o ponto principal: você precisa criar padrões de treinamento que contenham razoavelmente a estrutura de correlação da série que você está tentando prever. E se você faz a previsão com uma rede neural ou com um modelo ARIMA, o trabalho exploratório para determinar o que é essa estrutura geralmente é a parte mais difícil e demorada.

Na minha experiência, as redes neurais podem fornecer ótimas funcionalidades de classificação e previsão, mas configurá-las pode levar muito tempo. No exemplo acima, você pode achar que 21 padrões de treinamento não são suficientes; diferentes transformações de dados de entrada levam a melhores / piores previsões; variar o número de camadas ocultas e nós da camada oculta afeta muito as previsões; etc.

Eu recomendo consultar o site neural_forecasting , que contém toneladas de informações sobre competições de previsão de redes neurais. A página Motivações é especialmente útil.

Josh Hemann
fonte
12
+1 a esta resposta, mas também acrescentando que, mesmo que os três meses mais recentes sejam os únicos que se correlacionam com a resposta, também pode haver fatores como o mesmo mês do ano nos últimos 5 anos que são entradas úteis ( por exemplo, se os December tendem a se parecer com os Decembers anteriores, normalmente).
Rossdavidh
11
Ótima resposta. Achei isso muito útil. Uma explicação de alto nível é exatamente o que eu queria. @rossdavidh: Bom ponto +1.
Solartic
2
Seria ótimo obter alguns exemplos de códigos aqui.
Léo Léopold Hertz,
11
O interessante seria um conjunto de dados de séries temporais multivariadas em conjunto com regressores ..
Tommaso Guerrini
11
Alguém conhece algum artigo com uma aplicação para dados reais e uma comparação com o método de séries temporais "tradicional"?
Marco Fumagalli