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

 
elibrarius:

Encontrado no ALGLIB, o treino de paragem precoce com secção de validação:

Treinamento da rede neural usando parada antecipada (algoritmo base - L-BFGS com regularização).
...
O algoritmo pára se o erro do conjunto de validação aumentar por um longo período de
ou o tamanho do passo é pequeno o suficiente (há tarefa onde
conjunto de validação pode diminuir por toda a eternidade). Em qualquer caso, a solução
devolvido corresponde ao mínimo de erro do conjunto de validação.


Algo me parece errado, porque na negociação real os bares vão na sua própria ordem, não misturados com os de uma hora e um dia atrás.
E se a "natureza" do mercado muda, significa que é preciso reaprender ou procurar novos modelos de NS.


Você tem mais de 500 links na sua rede? Dizem que a L-BFGS é menos eficiente que a L-M se houver poucos neurónios.
 
Maxim Dmitrievsky:

Você tem mais de 500 conexões na sua rede? Eles escrevem que a L-BFGS é menos eficiente que a L-M se houver poucos neurónios
Menos até agora, para poupar tempo - fase de desenvolvimento, quando eu terminar vou me esforçar em busca de preditores e esquema de rede
 
elibrarius:
Menos até agora, para poupar tempo - fase de desenvolvimento, quando eu terminar estarei trabalhando duro para encontrar preditores e diagramas de rede


Talvez possas escrever um artigo quando tiveres tudo resolvido? :) Não há bons artigos sobre a rede neural argeliana, há um traduzido difícil de digerir.

Artigo tipo de descrição de NS (porque eu nem consegui encontrar ajuda adequada para a algibeira) e exemplo de aprendizagem/treinamento, auto-optimização em bot. Bem, isso sou só eu, só reparei que não há informação suficiente para estudar. É como se até pagasses por isso ) não gastasses o teu tempo em vão

 
Maxim Dmitrievsky:


Porque não escreves um artigo quando já tens tudo resolvido? :) Não há bons artigos sobre a neurônica Alglib, há um traduzido difícil de entender.

Artigo tipo de descrição de NS (porque eu nem consegui encontrar ajuda adequada para Alglib) e exemplo de aprendizagem/treinamento, auto-optimização em bot. Bem, isso sou só eu, só reparei que não há informação suficiente para estudar. Para este tipo de pagamento mais) não gaste o seu tempo em vão.

Não me parece - não vou arranjar tempo para um artigo... Não vou ter tempo suficiente para encontrar um artigo, e eu mesmo só começo a entender NS, então não posso dizer nada inteligente/novo.

Tomei o https://www.mql5.com/ru/articles/2279 como base. Coloquei-o em condições de trabalho dentro de 8 horas. Acho que a maioria dos programadores não vai levar mais tempo.

Mas tem sido uma semana de retrabalho, acrescentando opções, testes, etc.
Нейросеть: Самооптимизирующийся советник
Нейросеть: Самооптимизирующийся советник
  • 2016.10.03
  • Jose Miguel Soriano
  • www.mql5.com
Возможно ли создать советник, который согласно командам кода автоматически оптимизировал бы критерии открытия и закрытия позиций с определенной периодичностью? Что произойдет, если реализовать в советнике нейросеть (многослойный персептрон), которая, будучи модулем, анализировала бы историю и оценивала стратегию? Можно дать коду команду на ежемесячную (еженедельную, ежедневную или ежечасную) оптимизацию нейросети с последующим продолжением работы. Таким образом возможно создать самооптимизирующийся советник.
 
elibrarius:
Não me parece - não vou ter tempo para um artigo 100% do tempo... Além disso, eu mesmo estou começando a entender NS, então eu não posso dizer nada inteligente/nova.

Tomei o https://www.mql5.com/ru/articles/2279 como base. Coloquei-o em condições de trabalho dentro de 8 horas. Acho que a maioria dos programadores não vai levar mais tempo.

Mas tem sido uma semana de retrabalho, acrescentando opções extras, testes, etc.


Eu ainda estou olhando para o classificador Bayesian + genética, não maus resultados. Com grelhas é um pouco lamacento na minha cabeça, muitas nuances

Sim, quero dizer o mesmo artigo, não me pareceu muito aceitável, embora eu seja mais um trader do que um programador )

 
A situação com a mistura dos resultados permanece pouco clara:

Treinamento precoce sobre dados não misturados:

Erro médio no treinamento (80%) gráfico =0,535 nLearns=200 NGrad=142782 NHess=0 NCholesky=0 codResp=6
Erro médio na seção de validação (20%) =0,298 nLearns=200 NGrad=142782 NHess=0 NCholesky=0 codResp=6
Planta completa (treinamento + plano de validação):
Erro de aprendizagem médio=0,497 nLearns=200 NGrad=142782 NHess=0 NCholesky=0 codResp=6
Erro médio na secção de teste (20%) =0,132 nLearns=200 NGrad=142782 NHess=0 NCholesky=0 codResp=6

Parece que houve um ajuste na trama de validação. O teste é bom, mas não estava em treinamento e não foi comparado, provavelmente apenas uma coincidência.
O mesmo fay conta conjuntos, há uma divisão 2/3 e tudo se mistura entre as duas parcelas, vou tentar fazer o mesmo...
Baralhei-o:

Erro médio na área de treinamento (60%) =0,477 nLearns=10 NGrad=10814 NHess=0 NCholesky=0 codResp=6
Erro médio na secção de validação (40%) =0,472 nLearns=10 NGrad=10814 NHess=0 NCholesky=0 codResp=6
Planta completa (treinamento + plano de validação):
Erro de aprendizagem médio=0,475 nLearns=10 NGrad=10814 NHess=0 NCholesky=0 codResp=6
Erro médio na seção de teste (20%) =0,279 nLearns=10 NGrad=10814 NHess=0 NCholesky=0 codResp=6

Ao misturar, o erro é equalizado nas seções de treinamento e validação.
E no teste, ficou pior.

Algo parece errado para misturar os dados e depois dividi-los em seções de treinamento e validação, porque na negociação real as barras seguirão sua própria ordem e não se misturarão com as de uma hora, um dia ou uma semana atrás. Da mesma forma, para algoritmos de validação cruzada onde a secção de validação está no início, depois no meio e depois no fim.
E se a "natureza" do mercado mudar, isso significa que precisamos reaprender ou procurar novos modelos NS.

E se você não misturar e validar na última seção, como você evita encaixar nessa seção?
 
Elibrarius:
4 parcelas funciona? Treinamento/validação/teste1/teste2 ?

Quantos ciclos de treinamento/validação você precisa fazer? Eu não vi nenhuma informação sobre isso em nenhum lugar.... 1 ciclo no total? - e logo a seguir aprovamos ou alteramos algo no conjunto de preditores ou no esquema de rede? Mais precisamente em N ciclos de treino ser-nos-á mostrado um melhor.


A secção de testes2 é um veredicto: não há correspondência, então começamos tudo de novo, de preferência com um conjunto de preditores


PS.

A propósito, há também um testador, o veredicto final do TS.

 
elibrarius:
A situação com a mistura dos resultados permanece pouco clara:

Parar cedo de aprender sobre dados não-intermitentes:

Erro médio no treinamento (80%) amostra =0,535 nLearns=200 NGrad=142782 NHess=0 NCholesky=0 codResp=6
Erro médio na seção de validação (20%) =0,298 nLearns=200 NGrad=142782 NHess=0 NCholesky=0 codResp=6
Planta completa (treinamento + plano de validação):
Erro de aprendizagem médio=0,497 nLearns=200 NGrad=142782 NHess=0 NCholesky=0 codResp=6
Erro médio na secção de teste (20%) =0,132 nLearns=200 NGrad=142782 NHess=0 NCholesky=0 codResp=6

Parece que houve um ajuste na trama de validação. O teste é bom, mas não estava em treinamento e não foi comparado, provavelmente apenas uma coincidência.
O mesmo fay conta conjuntos, há uma divisão 2/3 e tudo se mistura entre as duas parcelas, vou tentar fazer o mesmo...
Baralhei-o:

Erro médio na área de treinamento (60%) =0,477 nLearns=10 NGrad=10814 NHess=0 NCholesky=0 codResp=6
Erro médio na secção de validação (40%) =0,472 nLearns=10 NGrad=10814 NHess=0 NCholesky=0 codResp=6
Planta completa (treinamento + plano de validação):
Erro de aprendizagem médio=0,475 nLearns=10 NGrad=10814 NHess=0 NCholesky=0 codResp=6
Erro médio na seção de teste (20%) =0,279 nLearns=10 NGrad=10814 NHess=0 NCholesky=0 codResp=6

Devido à mistura, o erro é equalizado nas seções de treinamento e validação.
E no teste, ficou pior.

Parece errado misturar os dados e depois dividi-los em seções de treinamento e validação, porque na negociação real as barras seguirão sua própria ordem e não se misturarão com as de uma hora, um dia ou uma semana atrás. Da mesma forma, para algoritmos de validação cruzada onde a secção de validação está no início, depois no meio e depois no fim.
E se a "natureza" do mercado mudar, isso significa que precisamos reaprender ou procurar novos modelos NS.

E se você não misturar e validar na última seção, então como você evita encaixar nesta seção?


1. Meu entendimento é que você não treina nada - apenas um resultado aleatório em preditores que não têm nada a ver com a variável alvo.


2. A agitar.

Não conheço a NS.

Mas em muitos outros algoritmos de MO, o aprendizado é feito em exatamente uma linha. UM valor de cada preditor é tomado e a variável alvo é mapeada para ele. Portanto, o baralhamento é irrelevante. Existem algoritmos de MO que levam em conta os vizinhos.

Mas de qualquer forma nossos pontos de vista coincidem e inicialmente eu sempre faço testes no teste2 sem baralhar.


PS.

Mais uma vez.

Se o erro em duas amostras diferentes for diferente como o seu - isso significa que o seu sistema é inútil, apenas para ser jogado fora.

 

a vaguear pela fossa sem fundo chamada internet, deparei-me com este pedaço de papel.

Artificial Neural Networks architectures for stock price prediction:comparisons and applications

Em outras palavras - arquitetura NS para predição de estoque - comparação e aplicação

Arquivos anexados:
 
elibrarius:
A situação com os resultados da mistura permanece pouco clara:


Algo me parece errado para misturar os dados e depois dividir em treinamento e validação, porque em um comércio real as barras irão em sua própria ordem, não misturadas com as de uma hora, um dia ou uma semana atrás. Da mesma forma, para algoritmos de validação cruzada onde a secção de validação está no início, depois no meio e depois no fim.
E se a "natureza" do mercado mudar, isso significa que precisamos reaprender ou procurar novos modelos NS.

E se você não misturar e validar na última seção, como você evita encaixar nessa seção?

Após a divisão em trem/teste/valido , misture o trem. Não misture o resto dos conjuntos.
Isto é válido para classificação por redes neurais. Além disso, ao treinar redes neurais profundas, misture cada mini-batch antes de alimentar a rede neural.

Boa sorte.