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?
Respostas:
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.
fonte
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.
fonte
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.
fonte