Aprendizado incremental para o modelo de série temporal LOESS

9

Atualmente, estou trabalhando em alguns dados de séries temporais, sei que posso usar o modelo LOESS / ARIMA.

Os dados são gravados em um vetor cujo comprimento é 1000, que é uma fila, sendo atualizado a cada 15 minutos,

Assim, os dados antigos serão exibidos enquanto os novos dados forem inseridos no vetor.

Eu posso executar novamente o modelo inteiro em um planejador, por exemplo, treinar novamente o modelo a cada 15 minutos, ou seja, usar todo o valor 1000 para treinar o modelo LOESS. No entanto, é muito ineficiente, pois toda vez que apenas um valor é inserido, enquanto outros 999 vlaues ainda o mesmo da última vez.

Então, como posso obter um melhor desempenho?

Muito Obrigado

zhang
fonte
3
O que é um "modelo LOESS / ARIMA"? Você quis dizer uma tendência de tempo não linear com erros ARIMA, em que a tendência não linear é estimada usando LOESS?
precisa
desculpe, quero dizer LOESS ou modelo ARIMA. Por exemplo, eu uso LOESS para encontrar os resíduos como: resíduos (loess (x ~ time)). porque os dados x são vetores com 1000 valores, que são atualizados a cada 15 minutos. Como posso obter eficientemente os resíduos, mas não executar novamente o conjunto de dados inteiro como entrada toda vez? como apenas 1 valor é atualizado todas as vezes, os outros 999 valores ainda são os mesmos da última vez.
Zhang 21/12
um método possível, talvez use os primeiros 1000 valores para prever os próximos 1000 valores (embora LOESS suporte apenas a previsão de 4 valores), depois calcule o residual como a diferença entre o valor real e o valor de previsão correspondente.Em seguida, treine novamente o modelo a cada 1000 valores. este não é o modelo LOESS original que eu quero :-(
zhang

Respostas:

1

Deixe-me reformular isso em algo mais familiar para mim. O ARIMA é um análogo à aproximação PID. Eu sou integral. MA é P. o AR pode ser expresso como equações de diferença que são o termo D. LOESS é um análogo aos mínimos quadrados (big brother de alta tecnologia).

Então, se eu quisesse melhorar um modelo de segunda ordem (PID), o que poderia ser feito?

  • Primeiro, eu poderia usar um filtro Kalman para atualizar o modelo com uma única peça de novas informações.
  • Eu também poderia olhar para algo chamado "árvores com gradiente". Usando um analógico deles, eu faria um segundo modelo ARIMA cujas entradas são as entradas brutas alimentadas à primeira, aumentadas com os erros da primeira.
  • Eu consideraria olhar o PDF dos erros para vários modos. Se eu pudesse agrupar os erros, poderia dividir os modelos ou usar um modelo de Mistura para separar as entradas em submodelos. Os submodelos podem ser melhores para lidar com a fenomenologia local melhor do que um único modelo em larga escala.

Uma das perguntas que não consegui fazer é "o que significa desempenho?". Se não temos uma medida de bondade claramente declarada, não há como saber se um método candidato "melhora". Parece que você deseja uma melhor modelagem, menor tempo de computação e uso mais eficiente das informações. Ter efemérides sobre os dados reais também pode informar isso. Se você estiver modelando o vento, poderá saber onde procurar modelos de aumento ou encontrar transformações úteis para seus dados.

EngrStudent
fonte
1

Essa é uma pergunta diferente, dependendo de você estar usando um modelo loess ou ARIMA. Por enquanto, responderei apenas à pergunta mais insana, pois suspeito que haja poucas eficiências possíveis no caso ARIMA, além de talvez ter um bom conjunto de valores iniciais.

Um modelo loess funciona ajustando uma regressão ponderada a diferentes subconjuntos dos dados. Apenas uma proporção dos dados é usada para cada ajuste. Portanto, toda vez que você reequipar o modelo, deixando cair um ponto de dados em uma extremidade e adicionar outro na extremidade oposta, tecnicamente você só precisará ajustar as regressões locais que usam o primeiro e o último ponto. Todas as regressões locais intermediárias serão as mesmas. Exatamente quantas dessas regressões locais sem impacto dependerão do seu parâmetro de suavização no loess.

Você pode hackear qualquer pacote que esteja usando para ajustar-se ao seu modelo, para que ele possa tirar a maior parte das regressões locais de um ajuste anterior e ajustar-se apenas àquelas necessárias no início e no final dos dados.

No entanto, parece-me que isso só valeria a pena se o custo em tempo de programação extra fosse substancialmente menor que o custo em tempo de computador de apenas ajustar o modelo do zero a cada 15 minutos. Com apenas 1000 pontos de dados, certamente não é algo tão grande caber no modelo a partir do zero a cada vez.

Peter Ellis
fonte