Alguém tentou a previsão de séries temporais usando a regressão de vetores de suporte?
Entendo máquinas de vetores de suporte e entendo parcialmente a regressão de vetores de suporte, mas não entendo como elas podem ser usadas para modelar séries temporais, especialmente séries temporais multivariadas.
Eu tentei ler alguns papéis, mas eles são de nível muito alto. Alguém pode explicar em termos leigos como eles funcionariam, especialmente em relação a séries temporais multivariadas?
Edição: Para elaborar um pouco, deixe-me tentar explicar com um exemplo de preço das ações.
Digamos que temos preços de ações por N dias. Então, para cada dia, poderíamos construir um vetor de característica, que, em um caso simples, poderia ser o preço do dia anterior e o preço do dia atual. A resposta para cada vetor de recurso seria o preço do dia seguinte. Assim, dado o preço de ontem e o preço de hoje, o objetivo seria prever o preço dos próximos dias. O que não entendo é que, digamos que temos seis meses de dados de treinamento, como você daria maior ênfase aos vetores de recursos mais recentes?
fonte
Respostas:
No contexto da regressão do vetor de suporte, o fato de seus dados serem uma série temporal é principalmente relevante do ponto de vista metodológico - por exemplo, você não pode fazer uma validação cruzada k-fold e precisa tomar precauções ao executar backtests / simulações.
Basicamente, a regressão do vetor de suporte é uma técnica de regressão discriminativa, semelhante a qualquer outra técnica de regressão discriminativa. Você fornece a ele um conjunto de vetores de entrada e respostas associadas e ele se encaixa em um modelo para tentar prever a resposta, considerando um novo vetor de entrada. O SVR do kernel, por outro lado, aplica uma das muitas transformações ao seu conjunto de dados antes da etapa de aprendizado. Isso permite captar tendências não lineares no conjunto de dados, diferentemente, por exemplo, da regressão linear. Um bom núcleo para começar provavelmente seria o RBF Gaussiano - ele terá um hiperparâmetro que você pode ajustar, portanto, experimente alguns valores. E então, quando sentir o que está acontecendo, poderá experimentar outros kernels.
Com uma série temporal, uma etapa de importação é determinar qual será o seu "vetor de recursos" ; cada é chamado de "recurso" e pode ser calculado a partir de dados presentes ou passados, e cada , a resposta, será a mudança futura ao longo de algum período do que você estiver tentando prever. Faça um estoque, por exemplo. Você tem preços ao longo do tempo. Talvez seus recursos sejam a.) O spread de 200MA a 30MA eb.) Volatilidade de 20 dias, para que você calcule cada em cada ponto no tempo, juntamente comx xi yi xt yt , o (digamos) retorno da semana seguinte sobre esse estoque. Assim, seu SVR aprende como prever o retorno da semana seguinte com base no atual spread de MA e no volume de 20 dias. (Essa estratégia não funcionará, então não fique muito animado;)).
Se os artigos que você leu foram muito difíceis, provavelmente não deseja implementar você mesmo um SVM, pois isso pode ser complicado. No IIRC, existe um pacote "kernlab" para R que possui uma implementação do Kernel SVM com vários kernels incluídos, de forma que seria uma maneira rápida de começar a funcionar.
fonte
Minha resposta pessoal à pergunta feita é "sim". Você pode vê-lo como um profissional ou um trapaceiro de que há um número infinito de opções de recursos para descrever o passado.Tente escolher recursos que correspondam a como você pode descrever concisamente a alguém o que o mercado acabou de fazer [por exemplo, "o preço está em 1,4 "não diz nada se não estiver relacionado a algum outro número]. Quanto à meta do SVM, as mais simples são a diferença de preços e a relação de preços por dois dias consecutivos. Como elas correspondem diretamente ao destino de um comércio hipotético, parecem boas escolhas.
Eu tenho que discordar pedantemente da primeira afirmação de Jason: você pode fazer a validação cruzada com dobras k em situações como a descrita por raconteur e é útil (com uma condição que explicarei). A razão pela qual é estatisticamente válida é que as instâncias do destino, neste caso, não têm relação intrínseca: são diferenças ou proporções desarticuladas. Se você optar por usar dados em resolução mais alta que a escala do destino, haveria motivos para preocupação de que instâncias correlatas possam aparecer no conjunto de treinamento e validação, o que comprometeria a validação cruzada (por outro lado, ao aplicar o método SVM, você não terá instâncias disponíveis cujos destinos se sobreponham àqueles nos quais você está interessado).
O que reduz a eficácia da validação cruzada é se o comportamento do mercado está mudando ao longo do tempo. Existem duas maneiras possíveis de lidar com isso. O primeiro é incorporar o tempo como um recurso (não achei muito útil, talvez porque os valores desse recurso no futuro sejam todos novos). Uma alternativa bem motivada é usar a validação direta (que significa testar sua metodologia em uma janela deslizante de tempo e testá-la no período imediatamente após esta janela. Se o comportamento estiver mudando ao longo do tempo, o ditado atribuído a Niels Bohr " A previsão é muito difícil, especialmente sobre o futuro "é especialmente apropriada. Há alguma evidência na literatura de que o comportamento dos mercados financeiros muda com o tempo, geralmente se tornando mais eficiente,
Boa sorte!
fonte
Há um exemplo no Quantum Financier para usar um SVM para prever séries financeiras. Pode ser facilmente convertido de um sistema de classificação (Longo / Curto) para um sistema de regressão.
fonte