Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 412

 
Aleksey Terentev:
As minhas soluções foram inicialmente baseadas no OpenNN (C++).
Agora eu aprendi muitas coisas e mudei para Keras (Python).

Lido principalmente com a aprendizagem profunda da predição de problemas de classificação.

Portanto, estamos a lidar com a mesma área de MO. O Keras é um bom pacote, especialmente porque é portado para o R.

Só que eu não entendo a questão de quê?

Boa sorte.

 
Vladimir Perervenko:

Portanto, estamos a lidar com a mesma área de MO. O Keras é um bom pacote, especialmente porque é portado para o R.

Só que eu não entendo a questão de quê?

Boa sorte.

Só decidi juntar-me à discussão. =)
 
Maxim Dmitrievsky:


Agora isto é interessante... significa que terão de ser feitos testes adicionais, talvez este rn não seja tão significativo como se pensava antes.

A única vantagem é a seleção de pesos no otimizador, ao mesmo tempo que outros parâmetros do sistema.

Atualmente estou tentando descobrir o quão bem ele calcula dentro de um intervalo de dados conhecidos. Tabela de multiplicação, por exemplo.

Atualização.

Experiências adicionais depois de mudar o Expert Advisor mostraram os seguintes resultados em comparação com o MLP 3-5-1 comum.

Foram utilizadas diferentes fórmulas para os testes:

//douplo func(double d1,double d2,double d3 ){retorno d1*d2;} //o erro é 0-2%, porque a multiplicação é inerente às fórmulas. 2% é obtido porque o otimizador genético nem sempre se detém numa solução ideal. Mas também há uma solução absolutamente exacta com erro = 0.
//douplo func(double d1,double d2,double d3 ){retorno d1*d2*d3;}// erro 0-2% multiplicação está nas fórmulas, no MLP 1%
//douplo func(double d1,double d2,double d3 ){retorno MathSin(d1);}// 2-6% de erro, no MLP 0,1%
//douplo func(double d1,double d2,double d3 ){retorno MathSin(d1)*MathSin(d2)*MathSin(d3);}// erro 2%, no MLP 1%
//douplo func(double d1,double d2,double d3 ){retorno MathSin(d1)*MathSin(d2)*MathSqrt(d3);}// erro 3-4%, no MLP 1%
//douplo func(double d1,double d2,double d3 ){retorno MathSin(d1)*MathPow(d2,.33)*MathSqrt(d3);}/ erro 8-4%, no MLP 1,5%
//douplo func(double d1,double d2,double d3 ){retorno MathPow(d1,2)*MathPow(d2,.33)*MathSqrt(d3);}/ erro 8-4%, no MLP 1,5%

A conclusão é que o MLP regular tem 2-3 vezes menos erros do que o RNP da Reshetov. Talvez parte deste erro se deva ao fato de que o otimizador genético terminal MT5 não se detém em uma solução ideal.
 
elibrarius:

Estou a tentar descobrir o quão bem conta dentro de uma série de dados conhecidos. Uma tabela de multiplicação, por exemplo.

Atualização.

Experiências adicionais após a mudança do EA mostraram os seguintes resultados, em comparação com o MLP 3-5-1 normal.

Foram utilizadas diferentes fórmulas para os testes:

//douplo func(double d1,double d2,double d3 ){retorno d1*d2;} //o erro é 0-2%, porque a multiplicação é inerente às fórmulas. 2% é obtido porque o otimizador genético nem sempre se detém numa solução ideal. Mas também existe uma solução absolutamente exacta com erro = 0.
//douplo func(double d1,double d2,double d3 ){retorno d1*d2*d3;}// erro 0-2% de multiplicação é inerente às fórmulas, no MLP 1%
//duplo func(double d1,double d2,double d3 ){retorno MathSin(d1);}// erro 2-6%, em MLP 0,1%
//douplo func(double d1,double d2,double d3 ){retorno MathSin(d1)*MathSin(d2)*MathSin(d3);}// erro 2%, em MLP 1%
//douplo func(double d1,double d2,double d3 ){retorno MathSin(d1)*MathSin(d2)*MathSqrt(d3);}// erro de 3-4%, em MLP 1%
//douplo func(double d1,double d2,double d3 ){retorno MathSin(d1)*MathPow(d2,.33)*MathSqrt(d3);}// erro 8-4%, em MLP 1.5%
//douplo func(double d1,double d2,double d3 ){MathPow(d1,2)*MathPow(d2,.33)*MathSqrt(d3);}// erro 8-4%, em MLP 1,5%

Em resumo, podemos concluir que o MLP regular tem 2-3 vezes menos erros que o RNNN da Reshetov. Talvez parte desse erro se deva ao fato de que o otimizador genético terminal MT5 não se detém em uma solução ideal.

Sim, resultados interessantes, talvez uma enumeração completa fosse mais precisa.
 
Maxim Dmitrievsky:

Sim, resultados interessantes, talvez um exagero total fosse mais preciso
seria mais preciso, mas depois de algumas semanas ou meses... 8 coeficientes de ajuste com 1% passo 1008= 100000000000000 iterações, e o próprio terminal muda para a genética, com este número.
 
elibrarius:
Seria, mas depois de algumas semanas ou meses... 8 coeficientes selecionáveis com 1% passo 1008= 10000000000000000 iterações, e o próprio terminal muda para a genética, com isso muitos.

Você pode me dizer, classificando MLP de algibeira que eu entendo requer pelo menos 2 saídas, como trabalhar com isso? nenhuma ajuda ou descrição em qualquer lugar... tinny )
 
Maxim Dmitrievsky:

Posso perguntar, classificando o MLP de algibeira que entendo, requer pelo menos 2 saídas, como trabalhar com ele? Não tenho ajuda, não tenho descrição...)

Sim 2, a partir da ajuda http://alglib.sources.ru/dataanalysis/neuralnetworks.php

Um caso especial são as redes neurais com camada de saída linear e a normalização de saídas SOFTMAX. São utilizados para os problemas de classificação, nos quais as saídas da rede devem ser não negativas e sua soma deve ser estritamente igual a uma, o que permite utilizá-los como probabilidades de atribuir o vetor de entrada a uma das classes (no caso limite, as saídas da rede treinada convergem para essas probabilidades). O número de saídas de tal rede não deve ser sempre inferior a duas (limitação imposta pela lógica elementar).

Ainda não lidei com isso, ainda estou a experimentar o linear.
 
elibrarius:

Sim, a partir da referência http://alglib.sources.ru/dataanalysis/neuralnetworks.php

Um caso especial são as redes neurais com camada de saída linear e a normalização das saídas SOFTMAX. São utilizados para os problemas de classificação, nos quais as saídas da rede devem ser não negativas e sua soma deve ser estritamente igual a uma, o que permite utilizá-los como probabilidades de atribuir o vetor de entrada a uma das classes (no caso limite, as saídas da rede treinada convergem para essas probabilidades). O número de saídas de tal rede é sempre pelo menos duas (limitação ditada pela lógica elementar).


Ah, bem, isto é, alimentamos a probabilidade de um ou outro resultado, por exemplo, probabilidade de comprar 0,9, depois probabilidade de vender 0,1, um array servirá como um buffer para as probabilidades de compra, outro para vender, nós os preenchemos com estes valores e depois do treinamento eles serão usados para despejar separadamente as probabilidades de compra e venda, eu vejo, certo?
 
Maxim Dmitrievsky:

Bem, em outras palavras, alimentamos a probabilidade de um ou outro resultado, por exemplo, a probabilidade de comprar é 0,9, e para vender - 0,1. Um array servirá como um buffer para as probabilidades de compra, e o outro para vender probabilidades e após o treinamento nelas descartará as probabilidades separadamente, presumo correto?

E pelo que li - eu tenho a mesma opinião.

Embora eu não saiba qual é a sua vantagem... ter 1 saída, também temos probabilidades - cerca de 0 (ou -1) Comprar, e cerca de 1 Vender. (ou vice versa, dependendo de como você treina).

Pode ser útil se houver 3 ou mais saídas? Afinal de contas, 1 saída seria difícil de usar.... para 3 ou 4 tarefas (embora você também possa usar 0, 0,5 e 1 como classes Comprar, Esperar, Vender)

 
elibrarius:

E pelo que li - eu tenho a mesma opinião.

Embora eu não saiba qual é a sua vantagem... ter 1 saída, também temos probabilidades - cerca de 0 (ou -1) Comprar, e cerca de 1 Vender. (Ou vice versa, dependendo de como você treina).

Pode ser útil se houver 3 ou mais saídas? Então 1 saída seria difícil de usar.... para 3 ou 4 tarefas (embora você também possa usar 0, 0,5 e 1 como classes Comprar, Esperar, Vender)


Sim, provavelmente fizeram-no de forma a que fosse possível ter mais de 2 classes... então provavelmente será mais agrupado e poderá usar outros métodos como k-means :)