Discussão do artigo "Florestas Aleatórias na Previsão das Tendências" - página 11
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Eu lido com coisas muito específicas, portanto não estou inclinado a discutir nada "em geral".
Então, mais especificamente.
Há cerca de 140 pacotes de aprendizado de máquina no shell caret - no meu trabalho, uso dois pacotes para florestas de árvores aleatórias e um pacote para máquinas de vetores de suporte (SVM). Como você pode ver, não posso fazer nenhuma generalização das ferramentas de aprendizado de máquina disponíveis no R.
Além disso.
Este é um ramo que usa o shell Rattle muito limitado, do qual usei apenas o pacote randomforest neste artigo.
Além disso.
Do referido pacote, utilizo apenas uma parte das funções deste artigo.
Além disso, comentarei sua postagem usando apenas essas limitações, mas posso colocar o código do programa e os resultados de seu uso em minhas palavras.
Portanto.
1. "Todas as séries financeiras são as chamadas séries temporais, nas quais a ordem dos valores é importante." - ninguém nega isso e essa ordem não é quebrada, mesmo sendo uma série temporal. Você, depois de treinar o modelo nos preços P1, P2, P3... Pn, não altera a ordem deles ao testar em Out Of Samples ou ao usá-los de fato.
Isso é totalmente inconsistente com os pacotes especificados. É possível implementar sua observação em outros pacotes, mas seria um código muito mais complexo. O código usado no artigo (que é a abordagem mais comum em algoritmos de aprendizado de máquina) é o seguinte:
A amostra inicial (conjunto de dados) é dividida em três partes: treinamento (70%), teste (15%), validação (15). O algoritmo de particionamento é o seguinte: por exemplo, para treinar, 70% das linhas do conjunto de dados original são selecionadas aleatoriamente em vez de sequencialmente. Dos 30% restantes, outros 15% são novamente selecionados aleatoriamente. É evidente que os 15% restantes também são uma sequência aleatória de linhas. Não há dúvida de que a sequência de barras foi observada.
Mas isso não é tudo.
O treinamento no conjunto de treinamento usa apenas uma parte dos dados (cerca de 66%). A parte restante dos dados é a estimativa fora da amostra (OOS). Ou seja, as barras nas quais o OOV foi calculado eram diferentes, mas foram misturadas com as barras nas quais o treinamento foi realizado. O documento fornece essa estimativa e ela sempre apresenta o melhor desempenho.
Em seguida, no rattle, você pode obter uma estimativa do modelo treinado em mais dois conjuntos de dados. Ao comparar TRÊS estimativas, é possível tirar conclusões.
Mais uma vez, é necessário um esforço especial para treinar modelos em séries temporais. Se você quiser usar o rattle, a variável-alvo e os preditores correspondentes devem permitir a ordenação aleatória das barras no treinamento e no teste.
2. Concordo com você em uma coisa: se a entrada for 100% de preditores ruins, teremos 100% de lixo na saída. Isso é óbvio e ninguém discute esse fato. Tudo o que estou dizendo é que há algoritmos em que não importa selecionar os dados, porque eles apresentam bons resultados em Out Of Samples com qualquer quantidade de dados inúteis que não seja 100%, porque os dados inúteis não são usados de fato. Aqui também é importante distinguir entre algoritmos para os quais a redução da dimensionalidade dos dados é fundamental, como a análise de componentes principais ou autoencoders, e algoritmos que são insensíveis à dimensionalidade dos dados.
Eles não são. O Randomforest tem um algoritmo incorporado para determinar a importância dos preditores. Esse algoritmo é completamente inútil se houver lixo entre os preditores. O próprio pacote randomforest tem uma função adicional para pré-selecionar preditores indesejados, mas ela não está disponível no rattle.
"No mercado de ações, a pesquisa sobre a relação entre as causas econômicas e a direção do movimento é comum, mas nada disso se aplica a intervalos intradiários." - Bem, sim, e isso se aplica a intervalos intradiários, como a divulgação do Non-Farm Payrolls.
Não sei, não tenho conhecimento desse recurso. Mas conheço bem a economia. E posso afirmar com segurança que os dados horários da Gazprom não dependem de nenhum dado econômico de outras empresas. Não há perguntas sobre os resultados do mês.
3. é claro que eu o entendo, cada um ganha como sabe, mas você já implementou algum algoritmo de aprendizado de máquina? Estou convencido de que, para entender como um algoritmo funciona, você mesmo precisa escrevê-lo do zero. Acredite, nesse caso, você descobrirá coisas que não estão escritas nos livros. E até mesmo elementos aparentemente óbvios, que antes pareciam fáceis, na verdade funcionam de forma diferente do que você pensava:)
Uma coisa é fazer mercenários e outra é dirigi-los. Eu prefiro dirigir, mas cada um faz sua própria escolha.
PS.
Escrevi um livro que contém respostas mais detalhadas às perguntas que você fez.
PSPS
Minha experiência pessoal mostra que a maior parte do tempo, até 70%, é gasta na seleção de preditores - um trabalho maçante e tedioso. Com o objetivo de vender o livro, formou-se um grupo - ninguém consegue fazer uma seleção rápida e eficaz de preditores que não gerem modelos excessivamente treinados. E a maioria dos leitores já foi além do livro e está usando ferramentas melhores para o trabalho.
Agradeço seu interesse significativo no tópico.
Obrigado por sua resposta detalhada.
Mas gostaria de pedir que você esclarecesse alguns pontos.
Primeiro, você escreveu acima que o exemplo do meu programa que trabalha com dados médicos é "ilustrativo" e se referiu ao fato de que as séries temporais têm uma sequência estrita.
"Todas as séries financeiras são as chamadas séries temporais, nas quais a ordem dos valores é importante."
E então você escreve que no Random Forest, que você usa:"Não pode haver nenhuma questão de adesão à sequência de barras."
E deixe-me perguntar: como então o Random Forest funciona em séries temporais se o algoritmo inicialmente usa o método de subespaço aleatório e embaralha essas séries temporais?
"Mais uma vez, aprender modelos em séries temporais exige um esforço especial." - então voltamos ao início novamente. Então, por que perder tempo com esses algoritmos se é necessário um esforço especial para fazê-los funcionar em séries temporais? Não estamos falando sobre isso do ponto de vista acadêmico no contexto da pesquisa universitária, onde esse trabalho é incentivado, mas do ponto de vista prático.
"Posso afirmar com confiança que o sentimento da Gazprom é independente de quaisquer dados econômicos sobre outras empresas." - Isso significa que as ações da Gazprom em intervalos intradiários não são afetadas de forma alguma pelo índice RTS, que inclui a Gazprom e outras empresas?
"Uma coisa é fazer uma Mercedes e outra é dirigi-la. Eu prefiro dirigir, mas cada um faz sua própria escolha. " - no sofisma, isso é chamado de digressão da tese original:) Eu estava falando sobre algoritmos e sua realização, e você imperceptivelmente apresentou uma tese sobre carros, que está externamente ligada à tese inicial, mas não é idêntica a ela. Acho que há uma "pequena" lacuna entre algoritmos e carros. Não se importe comigo, apenas gosto de observar essas peculiaridades:)
Resumindo: o que você escreve especificamente sobre Rattle e Random Forest provavelmente é relevante para a realidade e você tem conhecimento sobre isso.
Mas uma questão ainda está em aberto: por que uma pessoa, tendo a opção de escolher entre dois algoritmos de igual qualidade (o primeiro funciona perfeitamente bem em séries temporais sem esforços e habilidades especiais, e o segundo - com eles), deve escolher o segundo? E, nesse caso, ela será ideal?
Não consegui passar dessa frase. Respeito!
Mas uma questão ainda está em aberto: por que uma pessoa, tendo a opção de escolher entre dois algoritmos de qualidade de classificação equivalente (o primeiro funciona perfeitamente bem em séries temporais sem esforços e habilidades especiais, e o segundo - com tais esforços e habilidades), deve escolher o segundo? E isso será ideal nesse caso?
Ferramentas diferentes resolvem problemas diferentes, que, por sua vez, são determinados pelo material disponível.
O Rattle é uma ótima ferramenta para testar uma ideia rapidamente. Mas será muito difícil criar um modelo funcional com ele.
Você pode se aprofundar no rattle e, a partir dele, obter um registro de acessos prontos como parte do pacote randomforest. Se sua variável-alvo for, por exemplo, prever incrementos de ativos em vez de tendências, e você tiver conseguido encontrar preditores para isso, então o randomforest será muito útil. Se for prever tendências, você terá que dividir manualmente a amostra em pedaços, preservando a sequência, o que é difícil (embora possível) no rattle e trabalhar diretamente no pacote randomforest, que não impõe nenhuma restrição ao algoritmo de formação da amostra de entrada. Há um conjunto bastante extenso de ferramentas de geração de amostras para teste. Esses são pacotes separados.
Bem, e assim por diante. A conclusão geral é que não existe uma ferramenta "ideal".
Cada um dos pacotes tem muitas sutilezas que resolvem determinados problemas nos dados brutos. Em geral, o processo não é nem mesmo muito simples.
PS. Quando escrevi sobre a Gazprom, quis dizer sobre a relação entre as cotações e os valores do tipo lucro. E o índice é aritmético, a mesma perua..... Mas esse é um problema diferente... Embora o uso do aprendizado de máquina no mercado de ações seja mais promissor do que no forex. É o que me parece.
Ferramentas diferentes resolvem problemas diferentes, que, por sua vez, são determinados pelo material disponível.
O chocalho é uma ótima ferramenta para testar uma ideia rapidamente. Mas é difícil criar um modelo funcional com ele.
Você pode se aprofundar no rattle e, a partir dele, obter um registro de acessos prontos como parte do pacote randomforest. Se a sua variável-alvo for, por exemplo, prever incrementos de ativos em vez de tendências, e você tiver conseguido encontrar preditores para isso, então o randomforest será muito útil. Se quiser prever tendências, você terá que dividir manualmente a amostra em pedaços, preservando a sequência, o que é difícil (embora possível) no rattle e trabalhar diretamente no pacote randomforest, que não impõe nenhuma restrição ao algoritmo de formação da amostra de entrada. Há um conjunto bastante extenso de ferramentas de geração de amostras para teste. Esses são pacotes separados.
Bem, e assim por diante. A conclusão geral é que não existe uma ferramenta "ideal".
Cada um dos pacotes tem muitas sutilezas que resolvem determinados problemas nos dados brutos. Em geral, o processo não é nem mesmo muito simples.
PS. Quando escrevi sobre a Gazprom, quis dizer sobre a relação entre as cotações e os valores do tipo lucro. E o índice é aritmético, a mesma perua..... Mas esse é um problema diferente... Embora o uso do aprendizado de máquina no mercado de ações seja mais promissor do que no forex. É o que me parece.
Artigo interessante, obrigado. Ouvi falar do R pela primeira vez e parece ser muito útil. Há muito tempo eu quero fazer uma rede neural que possa negociar com base em dados históricos. Vou tentar descarregar o histórico do mt5 (ohlc, spread, volumes), passá-lo para o rattle e ver o que acontece.
O Rattle tem seis modelos, um deles é o NS. Recomendo comparar os resultados do NS com florestas aleatórias, ada e SVM. Acho que você ficará muito surpreso com os resultados.
Artigo interessante, obrigado. Ouvi falar do R pela primeira vez e parece ser muito útil. Há muito tempo quero criar uma rede neural que possa negociar com base em dados históricos. Tentarei descarregar o histórico do mt5 (ohlc, spread, volumes), passá-lo para o rattle e ver o que acontece.
É exatamente para isso que o rattle não foi projetado. Você precisa trabalhar diretamente no R. Aqui está uma variante dessa solução https://www.mql5.com/pt/articles/1103.
Boa sorte