É necessário prejudicar e reciclar dados de séries temporais ao usar métodos de aprendizado de máquina?


9

Por exemplo:

Quero prever valores futuros de uma série temporal com base em valores anteriores de várias séries temporais 'usando uma ANN e / ou SVM. As entradas terão valores defasados ​​em cada série temporal e os resultados serão previsões um passo à frente (previsões com horizontes adicionais serão feitas "rolando" as previsões adiante usando previsões anteriores).

Agora, os SVMs e as RNAs não devem aprender tendências e ciclos? Eles não seriam capazes de aprender coisas como "com todo o resto igual, a saída desta série deve ser 2x a saída anterior?" Ou, se eu fornecer uma variável categórica por mês, "desde janeiro, divida a previsão que eu faria por 2?"

Tentar reciclar e prejudicar os dados resultaria na imposição de mais preconceitos do que o necessário?


1
Do ponto de vista do aprendizado de máquina e previsão, tente de várias maneiras e veja o que funciona melhor - ou seja, produz a melhor previsão.
B_Miner 29/06

Respostas:


6

Com os algoritmos de aprendizado de máquina, geralmente é benéfico usar a escala ou normalização de recursos para ajudar o algoritmo a convergir rapidamente durante o treinamento e evitar que um conjunto de recursos domine outro. Tomemos, por exemplo, o problema de prever os preços das ações. Se você incluir estoques com preços altos, como Apple ou Microsoft, juntamente com alguns estoques de moeda de um centavo, os recursos de alto valor que você necessariamente extrairá da Apple e os preços da Microsoft sobrecarregarão os que você extrai dos estoques de moeda de um centavo e não estará treinando base de maçã para maçã (sem trocadilhos!), e o modelo treinado resultante pode não generalizar muito bem.

No entanto, imho "tentar reciclar e prejudicar os dados" seria uma coisa muito boa a se fazer. Extrair os vários componentes cíclicos e de tendência e normalizá-los subtraindo seus respectivos meios e dividindo por seus desvios-padrão colocaria todos os dados para todas as séries temporais no mesmo intervalo aproximado e, então, você treinaria para gostar de dados que, quando redimensionado pela reversão da normalização, provavelmente generalizaria muito melhor para fins preditivos.

Além disso, para qualquer série temporal, pode ser o caso de tendência inundar o componente cíclico; portanto, você pode acabar treinando apenas dados de tendência que quase certamente não terão bom desempenho em séries temporais cíclicas e vice-versa. Separando os dois componentes e treinando em cada um com SVMs ou NNs separados e recombinando as duas previsões, você pode acabar com um algoritmo mais preciso e facilmente generalizável.


Sim, esqueci que a maioria dos métodos de padronização e regularização assume distribuições estacionárias. Separar os componentes e construir modelos aditivos também é uma boa dica.
ektrules

1
No entanto, agora estou me perguntando sobre a perda de informações que acompanha transformações estacionárias. E quando os valores reais não diferenciados são importantes? Por exemplo, se você tem uma série temporal de dívida e PIB, então a diferença é de ambos: o método ML só pode aprender os efeitos das mudanças, e os efeitos podem ser diferentes se a dívida for 10% do PIB vs 200%. (é claro, você pode adicionar um recurso de PIB / dívida).
ektrules

2

Quanto tempo você está prevendo em comparação com os prazos em que a tendência ou os ciclos operam? Zhang, Qi 2005 - 'Previsão da rede neural para séries temporais sazonais e de tendência' considera a dessazonalização e a tendência (DSDT) benéficas, mas seus prazos de previsão são semelhantes aos de tendência / sazonal. Por outro lado, tenho trabalhado em dados nos quais faço previsões curtas na escala de tempo (por exemplo, 1 dia) e a tendência / sazonalidade atua apenas em escalas de tempo muito mais longas. O DSDT ainda melhora minha precisão preditiva até certo ponto, mas o ML pode lidar razoavelmente bem sem o DSDT, pois a tendência / sazonalidade é efetivamente irrelevante para os últimos poucos dados.


1

Tenho certeza de que você está usando ferramentas erradas aqui.

Os métodos ML são criados para interpolação (como prever séries temporais A das séries B e C); para extrapolações, temos cadeias e amigos de Markov.

O problema com sua abordagem é que é muito fácil superestimar o modelo nessas condições e, o que é pior, é difícil identificá-lo (a validação cruzada normal falhará, é muito difícil ajustar os parâmetros da maneira correta etc.) .).
Adicionar tempo explícito aos preditores também é uma má idéia - vi modelos ajustados apenas no prazo e na decisão, com 90% de precisão na validação cruzada e na adivinhação aleatória nos testes de dados pós-treinamento. Se você precisar de tempo, é melhor incluí-lo como uma série de descritores de ciclo, como dia da semana ou segundos após a meia-noite, obviamente nunca excedendo ou chegando perto da duração da sua série de treinamento.


Você pode estar certo ao usar as ferramentas erradas, IDK. Eu realmente não encontrei nenhum material on-line usando o mesmo procedimento em que estou pensando. Na verdade, estou tentando prever uma série temporal de várias outras séries temporais (no mesmo período), mas também gostaria de prever o futuro (de que adianta prever um valor quando ele já está disponível no hora da previsão?). Para fazer as previsões contínuas, vou ter que prever todas as séries temporais. Acho que o que estou tentando fazer é algo como regressão automática de vetores, mas com abordagens de ML. Essa abordagem não funcionará bem?
ektrules

Por que o tempo como variável preditora (para prever a tendência em vez de ciclicidade) funciona tão mal?
máx

1
Como eu escrevi: 1 / ML é ruim na extrapolação, 2 / time identifica exclusivamente cada objeto, o que permite uma super adaptação severa e inibe a busca por interações reais.

1
@mbq Para (1), pensei que apenas métodos locais são terríveis em extrapolar, enquanto métodos globais podem estar bem. Mas posso ver como as séries temporais / MC podem ser mais apropriadas. Pois (2) eu discordo. O uso de um identificador exclusivo levaria a uma boa pontuação no treinamento, mas a uma pontuação CV horrível . Portanto, você deve conseguir identificar modelos ruins. Acho que o problema é que você ainda pode se superestimar um pouco com o currículo tradicional, já que usa tempo futuro. Talvez um teste de trem dividido por tempo, com teste no final, fizesse mais sentido.
máximo

@max Sim, eu estava pensando em CV que divide momentos aleatoriamente; o uso de blocos de tempo contínuos ajudará.
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.