Discussão do artigo "Algoritmo de aprendizado de máquina CatBoost da Yandex sem conhecimento prévio de Python ou R"

 

Novo artigo Algoritmo de aprendizado de máquina CatBoost da Yandex sem conhecimento prévio de Python ou R foi publicado:

O artigo fornece o código e a descrição das principais etapas do processo de aprendizado de máquina usando um exemplo específico. Para obter o modelo, você não precisa de conhecimento prévio em Python ou R. Além disso, um conhecimento básico de MQL5 já é suficiente — este é exatamente o meu nível. Portanto, eu espero que o artigo sirva como um bom tutorial para um público amplo, auxiliando os interessados em avaliar os recursos de aprendizado de máquina e implementá-lo em seus programas.

Os resultados não são muito impressionantes, mas pode-se notar que a principal regra de negociação "evitar perda de dinheiro" é observada. Mesmo se escolhermos outro modelo do arquivo CB_Svod.csv, o efeito ainda seria positivo, pois o resultado financeiro do modelo mais malsucedido que obtivemos é de -25 pontos, e o resultado financeiro médio de todos os modelos é de 3889.9 pontos.


Fig. 9 Resultado financeiro dos modelos treinados para o período 01.08.2019 - 31.10.2020

Autor: Aleksey Vyazmikin

[Excluído]  
Obrigado pelo artigo. Quais métricas você considerou mais bem-sucedidas na categorização do wp? ROC-AUC, Precisão, F1 ou talvez algo mais.
 
Maxim Dmitrievsky:
Obrigado pelo artigo. Quais métricas você considerou mais bem-sucedidas na categorização do wp? ROC-AUC, Precisão, F1 ou talvez outra coisa

De nada :)

Trabalho principalmente com amostras desequilibradas em que, para a classificação binária, os zeros superam as unidades e o valor das unidades é muito maior do que os zeros. Na verdade, analiso apenas o Recall e a Precisão.

Recall - mostra a atividade do modelo devido ao "conhecimento" que recebeu, ou seja, a frequência com que o modelo responde ao "estímulo" na forma de uma unidade; quanto maior o índice, maior a porcentagem de unidades que o modelo responde.

Precisão - mostra a precisão das respostas e, aqui, dependendo da estratégia, essa precisão pode ser aceitável até mesmo em pequenas porcentagens, por exemplo, 45%.

As métricas padrão levam em conta principalmente a equivalência dos objetos classificados, o que não é suficiente para tomar uma decisão final.

Para selecionar grupos de modelos, também uso a métrica de "equilíbrio de erros", em que avalio os erros na dinâmica.

Em geral, mais de 30 métricas diferentes são usadas, talvez esse seja um tópico separado para pesquisa e artigo.

[Excluído]  
Aleksey Vyazmikin:

De nada :)

Trabalho principalmente com amostras desbalanceadas em que, para a categorização binária, os zeros são mais do que as unidades e o valor das unidades é muito maior do que os zeros. Na verdade, eu só analiso o Recall e a Precisão.

Recall - mostra a frequência com que o modelo responde a um "estímulo" na forma de uma unidade; quanto maior o índice, maior a porcentagem de unidades que o modelo responde.

Precisão - mostra a precisão do feedback e, aqui, dependendo da estratégia, essa precisão pode ser aceitável mesmo em pequenas porcentagens, por exemplo, 45%.

As métricas padrão levam em conta principalmente a equivalência dos objetos classificados, o que não é suficiente para tomar uma decisão final.

Para selecionar grupos de modelos, também uso a métrica de "equilíbrio de erros", em que avalio os erros na dinâmica.

Em geral, são usadas mais de 30 métricas diferentes, talvez esse seja um tópico separado para pesquisa e artigo.

Então, para cada estratégia, condicionalmente falando, é usado um modelo separado com uma pequena frequência de sinais e, em seguida, eles são combinados? Eu realmente não entendi isso no artigo. A filosofia da abordagem em si é interessante. Você estava falando anteriormente no tópico do MO sobre a seleção de folhas e assim por diante. Ou esse é um tópico separado?
 
Maxim Dmitrievsky:
Ou seja, um modelo separado com uma pequena frequência de sinais é usado para cada estratégia e, em seguida, eles são combinados?

Planeja-se usar diferentes estratégias básicas com diferentes configurações na forma de um gerador de sinais e, consequentemente, um modelo diferente para cada sinal. Devido ao custo do processo de cálculo dos preditores, ele deve ser feito em um Expert Advisor. No momento, não tenho um sistema para trabalhar com posições virtuais, que poderia suportar ordens pendentes e paradas, pois está planejado usar essa abordagem em contas de compensação.

 
Maxim Dmitrievsky:
Eu simplesmente não entendi isso no artigo. A filosofia da abordagem em si é interessante. Você estava falando anteriormente no tópico MO sobre a seleção de folhas e assim por diante. Ou esse é um tópico separado?

As folhas são um tópico à parte. Na verdade, as folhas do bousting não se saíram muito bem em termos de características (eu apenas as peguei da primeira árvore). Outro dia, fiquei sabendo que o XGBoost tem uma opção para salvar folhas, mas preciso do Phyton, talvez a qualidade das folhas seja melhor lá.

 

Alexei, com um começo!

Na minha opinião, para um primeiro artigo, ele é muito decente. A qualidade é muito maior do que a de alguns escritores que escreveram mais de uma dúzia de artigos. Obrigado, vou dar uma olhada nas nuances.

P.S. Assisti ao vídeo. É bom que existam jovens tão entusiasmados.....

 
Denis Kirichenko:

Alexei, com um sobressalto!

Na minha opinião, para um primeiro artigo, ele é muito decente. A qualidade é muito maior do que a de alguns escritores que escreveram mais de uma dúzia de artigos. Obrigado, vou dar uma olhada nas nuances.

P.S. Assisti ao vídeo. É bom que existam jovens tão entusiasmados.....

Obrigado!

Este artigo foi escrito como um manual sobre a aplicação do CatBoost com o uso de uma linha de comando e com a integração subsequente no MT5, eu queria mostrar uma boa aula sobre o trabalho com tabelas"CSV fast", que essencialmente me facilitou o trabalho com grandes arquivos CSV, eu já o uso há mais de 2 anos. Com base nessa necessidade, decidi realizar um experimento com indicadores padrão e foi bem-sucedido.

No apêndice, há o código do EA e o script que organiza toda a infraestrutura - era importante para mim que o que estou descrevendo pudesse ser reproduzido - portanto, teste e informe os erros, sugira melhorias - sou a favor de uma contribuição comum para esse trabalho.

Sim, é claro que os jovens são diferentes, mas quanto mais velhos ficamos, mais distantes eles estão de seu ambiente social e menos objetivamente percebidos.

 

Obrigado pelo artigo. Eu sabia que ele estava sendo preparado e estava esperando que fosse publicado.... Os resultados do teste de período curto no seu artigo e no artigo anterior de Maxim Dmitrievsky são bons. Os resultados de trabalhos sobre aprendizado de máquina mostram que o teste adjacente de curto período em dados nos quais a rede não foi treinada quase sempre tem um resultado positivo de lances com base apenas na lógica de aprendizado da rede neural, além de exigir qualquer otimização ou retreinamento. Você já pensou em automatizar o processo de retreinamento, ou antes de treinar a rede neural por um período de um teste curto seguido de um turno. Isso daria uma visão mais ampla do sucesso ou não de uma determinada abordagem.

 
Andrey Dibrov:

Obrigado pelo artigo. Eu sabia que ele estava sendo preparado e estava esperando que fosse publicado.... Os resultados do teste de período curto no seu artigo e no artigo anterior de Maxim Dmitrievsky são bons. Os resultados de trabalhos sobre aprendizado de máquina mostram que o teste adjacente de curto período em dados nos quais a rede não foi treinada quase sempre tem um resultado positivo de lances com base apenas na lógica de aprendizado da rede neural, além de exigir qualquer otimização ou retreinamento. Você já pensou em automatizar o processo de retreinamento, ou antes de treinar a rede neural por um período de um teste curto seguido de um turno. Isso daria uma visão mais ampla do sucesso ou não de uma determinada abordagem.

Fico feliz que você tenha achado o artigo interessante.

Minha abordagem e a do artigo de Maxim diferem em tudo, exceto na ferramenta usada - CatBoost. Em meu artigo, a amostra é preparada por sinal e mais de 100 barras podem passar entre os sinais, enquanto o artigo de Maxim tem um longo período de treinamento em cada barra para encontrar padrões gerais, o treinamento de Maxim é mais focado na tendência, sugiro o uso de preditores complexos, enquanto o artigo de Maxim mostra uma variante de uma simples transformação da série de preços. Maxim mostrou, antes de tudo, como treinar o modelo em python e aplicá-lo no MT5 sem python, o que é muito conveniente - a abordagem em si não pode ser usada na negociação, por isso o artigo contém a frase "abordagem ingênua"! Meu artigo também se concentra no processo de treinamento e integração do modelo CatBoost no MT5, mas o treinamento não é feito em python, mas em um programa de console independente separado, que é um wrapper da biblioteca CatBoost, que permite usar todas as funções como em python. Além disso, no artigo, a estrutura do consultor foi considerada para mostrar o ciclo completo de coleta e processamento das informações de A a Z. O sucesso do treinamento depende dos preditores. Neste artigo, usamos principalmente preditores na forma de osciladores padrão e foi uma surpresa agradável para mim o fato de o modelo ter sido treinado com eles e ter mostrado resultados interessantes. O objetivo, como Maxim, não era fornecer uma solução pronta para ganhar dinheiro, mas dei uma boa base.

Quanto aos testes - você está desatento - o artigo de Maxim mostra o comportamento do EA na amostra fora do treinamento por 4 meses, enquanto meu EA mostra resultados positivos por 15 meses. Trabalhar por mais de um ano sem retreinamento é um resultado muito bom se nos atermos ao paradigma da volatilidade do mercado.

O experimento que você sugeriu é possível se a amostra for suficiente e, nesse caso, meu método é inferior ao método descrito no artigo de Maxim - em intervalos de tempo pequenos, simplesmente não haverá dados suficientes para o treinamento. De acordo com minhas observações, precisamos de pelo menos 15.000 sinais para treinamento, especialmente se levarmos em conta que os preditores não são analisados separadamente e não são selecionados.

Sim, e observe que a amostra de teste (test.csv no artigo) é usada apenas como um meio de avaliar a qualidade do modelo resultante, e nenhum treinamento é realizado nela, como resultado, treinamos apenas 60% de toda a amostra, que é de 01.06.2014 a 30.04.2018 - o modelo não foi construído com os dados restantes, portanto, devemos dizer que o modelo funciona com informações de mercado que eram relevantes há 2,5 anos.

 
Aleksey Vyazmikin:

Fico feliz que você tenha achado o artigo interessante.

A minha abordagem e a de Maxim no artigo diferem em tudo, exceto pela ferramenta usada - CatBoost. Em meu artigo, a amostra é preparada por sinal e mais de 100 barras podem passar entre os sinais, enquanto o artigo de Maxim tem um longo período de treinamento em cada barra para procurar padrões gerais, o treinamento de Maxim é mais focado na tendência, sugiro o uso de preditores complexos, o artigo de Maxim mostra uma variante de uma transformação simples de uma série de preços. Maxim mostrou, antes de tudo, como treinar o modelo em python e aplicá-lo no MT5 sem python, o que é muito conveniente - a abordagem em si não pode ser usada na negociação, por isso o artigo contém a frase "abordagem ingênua"! Meu artigo também se concentra no processo de treinamento e integração do modelo CatBoost no MT5, mas o treinamento não é feito em python, mas em um programa de console independente separado, que é um wrapper da biblioteca CatBoost, que permite usar todas as funções como em python. Além disso, no artigo, a estrutura do consultor foi considerada para mostrar o ciclo completo de coleta e processamento das informações de A a Z. O sucesso do treinamento depende dos preditores. Neste artigo, usamos principalmente preditores na forma de osciladores padrão e foi uma surpresa agradável para mim o fato de o modelo ter sido treinado com eles e ter mostrado resultados interessantes. O objetivo, como Maxim, não era fornecer uma solução pronta para ganhar dinheiro, mas dei uma boa base.

Quanto aos testes - você está desatento - o artigo de Maxim mostra o comportamento do EA na amostra fora do treinamento por 4 meses, enquanto meu EA mostra resultados positivos por 15 meses. Trabalhar por mais de um ano sem retreinamento é um resultado muito bom se você se ater ao paradigma da volatilidade do mercado.

O experimento que você sugeriu é possível se a amostra for suficiente e, nesse caso, meu método é inferior ao método descrito no artigo de Maxim - em intervalos de tempo pequenos, simplesmente não haverá dados suficientes para o treinamento. De acordo com minhas observações, precisamos de pelo menos 15.000 sinais para treinamento, especialmente se levarmos em conta que os preditores não são analisados separadamente e não são selecionados.

Sim, e observe que a amostra de teste (test.csv no artigo) é usada apenas como um meio de avaliar a qualidade do modelo resultante, e nenhum treinamento é realizado nela, como resultado, treinamos apenas 60% de toda a amostra, que é de 01.06.2014 a 30.04.2018 - o modelo não foi construído com os dados restantes, portanto, devemos dizer que o modelo funciona com informações de mercado que eram relevantes há 2,5 anos.

Eu prestei atenção à duração do período de teste. Mas o resultado positivo estável está em um curto período adjacente ao período de treinamento - um mês - dois meses. Digamos que treinamos em um histórico de dois anos. Teste + um mês. Salve o resultado. Mudar (ou adicionar) para este mês - antes do treinamento (retreinamento). Teste + mês. Mantenha o resultado. E assim por diante.