Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 2903
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
A novidade, nesse caso, é um ziguezague e um canal ao longo dele, bem, essa é a vanguarda da engenharia.
Isso não é tudo o que você vê.
É apenas 5% do que é permitido.))
é como a última palavra e um hambúrguer).
você sempre tem que dar a si mesmo a chance de se justificar.
Olá, pessoal!
Talvez alguém possa me dar algum conselho. Estou tentando prever a direção de um par de moedas para o dia (para cima ou para baixo) usando o modelo "DecisionTreeClassifier".
Uso apenas 5 preditores para a previsão, e o resultado da previsão é uma tendência de alta (1) ou de baixa (-1). Tamanho do conjunto de dados: 999 linhas e 6 colunas (conjunto de dados anexado).
Mas encontrei um problema quando o aumento de "max_depth" aumenta o tempo todo a precisão nas amostras de treinamento e teste simultaneamente. A precisão na amostra de teste para de crescer e se torna constante em max_depth=22, igual a 0,780000. Resultados em diferentes valores de max_depth:
1) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=3)
Precisão no conjunto de treinamento: 0,539424 Precisão no conjunto de teste: 0,565000
2) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=5)
Acurácia no conjunto de treinamento: 0,579474 Acurácia no conjunto de teste: 0,585000
3) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=7)
Acurácia no conjunto de treinamento: 0,637046 Acurácia no conjunto de teste: 0,640000
4) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=9)
Acurácia no conjunto detreinamento: 0,667084 Acurácia no conjunto de teste: 0,700000
5) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=11)
Acurácia no conjunto de treinamento: 0,700876 Acurácia no conjunto de teste: 0,710000
6) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=13)
Acurácia no conjunto de treinamento: 0,720901 Acurácia no conjunto de teste: 0,720000
7) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=15)
Acurácia no conjunto de treinamento: 0,734668 Acurácia no conjunto de teste: 0,740000
8) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=17)
Acurácia no conjunto de treinamento: 0,747184 Acurácia no conjunto de teste: 0,760000
9) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=19)
Precisão no conjunto de treinamento: 0,755945 Precisão no conjunto de teste: 0,765000
10) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=22)
Acurácia no conjunto de treinamento: 0,760951 Acurácia no conjunto de teste: 0,780000
Estou extremamente confuso com essa situação, pois ouvi dizer que não se deve usar max_depth mais do que 3-4, porque é possível retreinar. Mas o modelo se comporta dessa forma quando retreinado, parece mais um modelo não treinado. .Não entendo, em tal situação, qual profundidade da árvore de decisão escolher ou qual modelo mesmo e, em geral, se vale a pena trabalhar mais nessa direção, talvez esteja faltando alguma coisa (mas, por exemplo, o conjunto de dados não tem 100 linhas), se é possível adicionar mais preditores e quantos mais podem ser adicionados em tal tamanho do conjunto de dados (eu adicionaria mais 2-5 partes).
O código é simples e também o anexei junto com o conjunto de dados:
Não entendo, em tal situação, qual profundidade da árvore de decisão escolher ou qual modelo mesmo e, em geral, se vale a pena trabalhar mais nessa direção, talvez esteja faltando alguma coisa (mas, por exemplo, o conjunto de dados não tem 100 linhas), se é possível adicionar mais preditores e quantos mais podem ser adicionados em tal tamanho do conjunto de dados (eu adicionaria mais 2-5 partes).
O código é simples e também o anexei junto com o conjunto de dados:
Olá.
Mais número de divisões - mais memória = risco de aprender a amostra.
Não sou proficiente em python, mas:
1. Tente dividir a amostra sem misturar.
2. Ainda me parece que você está aprendendo com a amostra inteira, não com uma amostra reduzida.
Olá.
Mais número de divisões - mais memória = risco de aprender uma amostra.
Não sou proficiente em python, mas:
1. Tente dividir a amostra sem misturar.
2. Parece-me que você está treinando com a amostra inteira, não com uma amostra reduzida.
Obrigado! Parece que você está certo.
Substituí "clf_20.fit(X, y)" por "clf_20.fit(X_train, y_train)" no código acima e a imagem mudou quase 50/50.
Obrigado! Acho que você está certo.
Substituí "clf_20.fit(X, y)" por "clf_20.fit(X_train, y_train)" no código acima e a imagem mudou quase 50/50.
É normal ter esse resultado - um resultado bom demais é sempre um motivo para começar a procurar um bug no código.
É normal ter esse resultado - um resultado bom demais é sempre um motivo para começar a procurar um bug no código.
Tenho outra pergunta, se me permite.
Acontece que o melhor resultado é obtido com max_depth=1 e tem a seguinte aparência:
Acurácia no conjunto de treinamento: 0,515021 Acurácia no conjunto de teste: 0,503333
Parece ser extremamente ruim e igual à probabilidade de jogar uma moeda. Ou podemos considerar esse resultado bom e concluir que encontramos uma formalização que nos permite nivelar a probabilidade do movimento do câmbio e a probabilidade do resultado com o lançamento de uma moeda?
Ou seja, a situação é tal que, para cada combinação de preditores, há duas variantes equivalentes de movimento do mercado: para cima ou para baixo e, portanto, é necessário complementar o conjunto de dados com algo que possa especificar a combinação atual ainda para cima ou para baixo.
Outra pergunta surgiu, se me permite.
Verificou-se que o melhor resultado é obtido com max_depth=1 e tem a seguinte aparência:
Acurácia no conjunto de treinamento: 0,515021 Acurácia no conjunto de teste: 0,503333
Parece ser extremamente ruim e igual à probabilidade de jogar uma moeda. Ou podemos considerar esse resultado bom e concluir que encontramos uma formalização que nos permite nivelar a probabilidade de um movimento cambial e a probabilidade de jogar uma moeda?
Ou seja, a situação é tal que, para cada combinação de preditores, há duas variantes equivalentes de movimento do mercado: para cima ou para baixo e, portanto, é necessário complementar o conjunto de dados com algo que possa especificar a combinação atual ainda para cima ou para baixo.
Primeiro, leia sobre outras métricas para avaliar os resultados do treinamento - Recall (completude) e Precision (precisão), que são especialmente relevantes para a amostragem desequilibrada. A estratégia pode ser produzir um resultado financeiro positivo para a classificação com a mesma chance de resultados corretos e incorretos.
Considere uma marcação de meta mais complexa, porém lógica. Determinar como um dia fechará em sua abertura é mais difícil do que determinar a probabilidade de um aumento e uma queda em alguma porcentagem da abertura do dia - há uma probabilidade de identificar um padrão intradiário.
Para mim, a amostra é muito pequena.
Pense em criar indicadores que possam descrever o mercado. Na minha opinião, a partir dos indicadores dos indicadores de previsão, deve ser possível restaurar a situação no gráfico sem olhar para ele.
Recomendo que experimente o CatBoost para treinamento - ele cria modelos rapidamente e a questão da transferência de modelos para o código para trabalhar no MT5 sem muletas está resolvida.
Acontece que o melhor resultado é obtido quando max_depth=1 e tem a seguinte aparência:
Acurácia no conjunto de treinamento: 0,515021 Acurácia no conjunto de teste: 0,503333
Também vejo com frequência que o melhor resultado está em depth=1, o que significa que foi feita apenas uma divisão em um dos recursos. Outras divisões da árvore levam ao excesso de treinamento no treinamento e a resultados piores no teste.
Também vejo com frequência que o melhor resultado está na profundidade = 1, o que significa que foi feita apenas uma divisão em um dos recursos. Outras divisões da árvore levam ao retreinamento na linha e à piora dos resultados no teste.
Verifiquei os resultados ontem e descobri que o modelo para todos os casos deu uma previsão de "1", em média, e, portanto, 50/50. Você pode passar sem o modelo - o tempo todo dizendo "para cima".
Isso é o que são os níveis de suporte e resistência em meu entendimento.....
Nem todos entenderão, mas se entenderem, parabéns para eles....