Previsão de séries temporais usando ARIMA vs LSTM


64

O problema com o qual estou lidando é prever valores de séries temporais. Estou analisando uma série temporal por vez e, com base em, por exemplo, 15% dos dados de entrada, gostaria de prever seus valores futuros. Até agora me deparei com dois modelos:

  • LSTM (memória de longo prazo; uma classe de redes neurais recorrentes)
  • ARIMA

Eu tentei os dois e li alguns artigos sobre eles. Agora, estou tentando entender melhor como comparar os dois. O que eu encontrei até agora:

  1. O LSTM funciona melhor se estivermos lidando com uma quantidade enorme de dados e dados de treinamento suficientes estiverem disponíveis, enquanto o ARIMA é melhor para conjuntos de dados menores (isso está correto?)
  2. O ARIMA requer uma série de parâmetros (p,q,d)que devem ser calculados com base nos dados, enquanto o LSTM não exige a configuração desses parâmetros. No entanto, existem alguns hiperparâmetros que precisamos ajustar para o LSTM.
  3. EDIT: Uma grande diferença entre as duas que notei ao ler um ótimo artigo aqui , é que o ARIMA só poderia ter um bom desempenho em séries temporais estacionárias (onde não há sazonalidade, tendência e etc.) e você precisa cuidar disso se quer usar ARIMA

Além das propriedades acima mencionadas, não encontrei outros pontos ou fatos que pudessem me ajudar a selecionar o melhor modelo. Ficaria muito grato se alguém pudesse me ajudar a encontrar artigos, papéis ou outras coisas (até agora não tive sorte, apenas algumas opiniões gerais aqui e ali e nada baseado em experimentos).

Devo mencionar que, originalmente, estou lidando com dados de streaming, no entanto, por enquanto, estou usando conjuntos de dados NAB, que incluem 50 conjuntos de dados com o tamanho máximo de 20k pontos de dados.



Você se importaria em compartilhar o código do LSTM? E obrigado.
AJUDA

Respostas:


25

A instrução 1 está correta, a instrução 2 está correta, mas requer elaboração e a instrução 3 está incorreta para o ARIMA sazonal:

A seguir, você pode apontar na direção certa, mas espero que obtenha mais algumas respostas com mais profundidade na arena do LSTM.

Você mencionou que tentou os dois algoritmos e que está simplesmente tentando descobrir qual é o melhor, o que me leva a pensar que você pode estar tendo mais problemas com o processo de ciência de dados e a validação cruzada do que com as especificidades dos modelos.

Séries temporais em geral:

Séries temporais, em geral, são difíceis de prever. Se fossem fáceis de prever, todos os cientistas de dados seriam ricos, prevendo com precisão o valor de todas as ações. A realidade é que os fundos de hedge, em média, não superam o mercado e que as previsões de séries temporais geralmente são muito ruins e se aplicam apenas a durações muito curtas. Os principais problemas são que há muito barulho, há muitas influências ocultas, os modelos são excessivamente simplistas, os influenciadores não se comportam como pensamos que deveriam, a interação entre linearidade e não linearidade é sutil e confusa, ... ad infinitum.

ARIMA

Você está incorreto em sua avaliação de que o ARIMA exige que séries temporais estacionárias sejam previstas. O ARIMA não sazonal possui três valores de entrada para ajudar a controlar o ARIMA de suavização, estacionariedade e previsão (p, d, q), onde:

  • p é o número de termos autorregressivos,
  • d é o número de diferenças não sazonais necessárias para a estacionariedade e
  • q é o número de erros de previsão atrasados ​​na equação de previsão.

Por outro lado, o ARIMA sazonal possui seis valores de entrada ARIMA (p, d, q, P, D, Q), onde:

  • P é o número de termos autorregressivos sazonais,
  • D é o número de diferenças sazonais e
  • Q é o número de termos da média móvel sazonal.

Sujeito às declarações de qualificação acima, sugiro que você jogue com o ARIMA sazonal para ter uma idéia dos meandros envolvidos na suavização, desaceleração, desaceleração, redução do ruído e previsão.

LSTM

Eu não sei o suficiente sobre LSTM para adicionar muito aqui. Acrescentarei que as bandeiras vermelhas tendem a ser levantadas quando alguém começa no exercício de ciência de dados com aprendizado profundo. Sugiro que você aprenda o máximo possível usando o ARIMA e, em seguida, aplique alguns dos seus conhecimentos em ARIMA para ajudá-lo a aprender LSTM. As redes neurais podem ser uma ferramenta muito poderosa, mas elas:

  • pode levar muito tempo para ser executado,
  • geralmente requerem mais dados para treinar do que outros modelos, e
  • tem muitos parâmetros de entrada para ajustar.

Validação cruzada e modelos de comparação:

As séries temporais são divertidas, pois todos os dados de treinamento geralmente podem ser transformados em conjuntos de treinamento de aprendizado supervisionado. O Once pode simplesmente tomar uma série temporal e reverter o tempo. Ou seja, escolha um momento e finja que não possui dados adicionais, depois produza uma previsão e veja como se saiu. Você pode percorrer as séries cronológicas fazendo isso vezes, a fim de obter uma avaliação do desempenho do seu modelon e comparar modelos, tomando as precauções necessárias para evitar o ajuste excessivo .

Espero que isso ajude e boa sorte!


Obrigado pela sua resposta. Suas anotações sobre o ARIMA são úteis e eu tento mantê-las em mente. No caso de validação cruzada e comparação dos dois modelos, para os conjuntos de dados atuais, usando uma variedade de parâmetros, posso dizer qual algoritmo está executando melhor e assim por diante. O problema é que nenhum desses conjuntos de dados poderia representar os dados reais (streaming de dados) e é por isso que achei melhor pedir a outras pessoas na área de ciência de dados e aprendizado de máquina que compartilhassem seus pensamentos e experiências.
ahajib

Mas se você tiver dados de streaming, poderá transformá-los em dados de teste salvando o stream. A parte boa das séries temporais é que você sempre pode criar um conjunto de dados de teste a partir de qualquer conjunto de dados. Você só precisa salvar alguns dados e reverter o tempo.
AN6U5

Eu sei que isso é meio envelhecido, mas eu tenho que discordar aqui. Os parâmetros d, D são para diferenciar como @ AN6U5 diz, mas o motivo para fazer essas diferenças em primeiro lugar é impor estacionariedade ao problema. De fato, uma interpretação do modelo ARIMA é que é apenas regressão linear com termos para reforçar a estacionariedade nas séries temporais.
26918 Ryan

6

Adicionando à resposta do @ AN6U5.

De uma perspectiva puramente teórica, este artigo mostrou que os RNN são aproximadores universais. Como não li o artigo em detalhes, não sei se a prova também pode ser aplicada ao LSTM, mas suspeito que sim. O maior problema com a RNN em geral (incluindo LSTM) é que eles são difíceis de treinar devido à exploração do gradiente e ao problema de desaparecimento do gradiente. O limite prático para LSTM parece estar em torno de 200 ~ etapas com descida de gradiente padrão e inicialização aleatória. E, como mencionado, em geral, para que qualquer modelo de aprendizado profundo funcione bem, você precisa de muitos dados e muitos ajustes.

O modelo ARIMA é mais restrito. Se o seu sistema subjacente é muito complexo, é simplesmente impossível obter um bom ajuste. Mas, por outro lado, se o modelo subjacente é bastante simples, é muito mais eficiente do que a abordagem de aprendizado profundo.


2

Os modelos ARIMA são lineares e os modelos LSTM não são lineares. Alguns outros modelos paramétricos não-lineares de séries temporais estudados pelos estatísticos são os modelos autoregressivos de limite (TAR) e modelos autoregressivos de transição suave (STAR). O pacote R tsDyn implementa esses modelos.

Gostaria de saber como os modelos STAR se comparam ao LSTM.


2

Cheguei à mesma conclusão que você e outros, a previsão tradicional ainda é provavelmente a mais aplicável e talvez confiável para séries temporais de valores numéricos. Há um pouco de sangramento no aprendizado profundo em discussão, onde séries temporais de valores numéricos se misturam ao aprendizado profundo, onde o aprendizado profundo (atualmente) se aplica aos desafios modernos no reconhecimento de padrões para detecção de imagem, som, texto limpo ou anomalia. Geralmente, tenho bons resultados com o VAR / VECM para dados transacionais diários, que provavelmente podem ser aplicados ao seu caso de uso de processamento de sinal.


1

Como um caso extremo, tive a chance de estudar as previsões de Forex (Taxa de Câmbio) e comparar intensamente os desempenhos de LSTM, MLP com janela e ARIMA. Como muitos artigos dizem, as séries temporais de Forex são próximas das séries de passeio aleatório (são completamente não estacionárias). Nenhum desses algoritmos pode prever a taxa spot do dia seguinte. Por exemplo, se não houver (ou pouca) alteração, ele manterá o valor atual e parecerá adequado. No entanto, se houver uma mudança repentina (substancial) na taxa à vista de amanhã, ela sempre falha em prever. O problema é que não há nada a aprender com os dados de treinamento (digamos, nos últimos 10 anos de histórico de taxas à vista) se eles são grandes o suficiente ou não, porque são completamente aleatórios (talvez devido aos sentimentos dos negociantes de câmbio ...) .

De fato, o LSTM com apenas 1 'atraso, ou o ARIMA com (1,0,0) terá o melhor desempenho, pois armazenar dados com mais de 1 intervalo de tempo não ajuda em nada. Para esse tipo de série temporal, eu diria, em termos de desempenho de rastreamento, 1) ARIMA, 2) LSTM, 3) MLP. Último comentário ... MLP com parâmetros macro / microeconômicos (por exemplo, diferença de PIB, taxas de títulos, preço do petróleo bruto, índice do dólar etc.), pois recursos adicionais também não funcionaram.

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.