Existe um padrão para o caos? Vamos tentar encontrá-lo! Aprendizado de máquina com o exemplo de uma amostra específica. - página 20

 
Aleksey Vyazmikin #:

E como você interpreta isso - há um padrão, mas você não o encontrará? Ou o padrão está na aleatoriedade?

Basta ler atentamente o que está escrito.

Não há nada nas entrelinhas, é literal e muito claro.

Você formou pela segunda vez uma pergunta que não corresponde ao que escrevi.

 
elibrarius #:

Como você faz isso sem ganância? Calcule outro para cada divisão e selecione um par de uma só vez, mas, no seu caso, o tempo de cálculo aumentará mais de 5.000 vezes. É mais fácil calcular a média de cem modelos.

Penso mais na qualidade, ou seja, em critérios de avaliação adicionais.

Outra abordagem - pesos para preditores que garantirão a consistência de sua aplicação - não é uma estrutura de árvore clara. É uma espécie de "definir o tempo primeiro", depois "estimar a volatilidade" e "posição do preço atual".

elibrarius #:

Para reduzir a influência da aleatoriedade, é correto. Caso contrário, você terá que calcular a média de 20 a 100 modelos, como na floresta.

Lá eles têm outro truque, e eu não entendo totalmente o processo - no início, eles constroem uma árvore em uma amostra truncada (se não forçada na amostra inteira) e, em seguida, contam os resultados em folhas na amostra inteira. Aparentemente, as divisões estão na subamostra e os pesos nas folhas já estão na amostra inteira.

elibrarius #:

Ou seja, verifica-se que as árvores de refinamento podem não ser as melhores, mas aleatoriamente piores.

Daí a dispersão nos modelos de drenagem para lucrativos.

Não, o treinamento sempre melhora o resultado a cada iteração e os modelos na amostra de treinamento estão sempre no lado positivo. Embora com um spread financeiro.

elibrarius #:

A julgar pelos gráficos de distribuição, há mais modelos de drenagem, ou seja, se fizermos uma média, o resultado médio não será lucrativo.

Sim, mas esse é mais um caso especial.

elibrarius #:

Talvez força aleatória = 0? Esperamos que as alterações de Seed parem de alterar o modelo depois disso. Talvez criar um modelo com árvores de refinamento melhores em vez de árvores aleatórias ruins. Se o melhor modelo for um dreno, então pesquisar nesses dados de 10.000 modelos aleatórios aleatoriamente o melhor é o caminho para um dreno no real.

Tentei com zero, mas entendo que apontuação das árvores se tornou a mesma para todos e, portanto, as mesmas foram escolhidas aleatoriamente :)). Ou ainda, em algum lugar, é usado um gerador de números aleatórios.

elibrarius #:

Ou ainda, em média, vários modelos selecionados aleatoriamente, como na floresta. Porque o melhor pode ser treinado novamente.

Ou seja, selecionar modelos de três amostras e depois fazer a média? Talvez sim - ainda não quero mudar para conjuntos de modelos, ainda preciso analisar a possibilidade de melhorar a construção dos próprios modelos.

 
Aleksey Vyazmikin #:

Outra abordagem são os pesos para os preditores que garantirão a consistência em sua aplicação - não uma estrutura de árvore clara. É como se fosse "vamos definir o tempo primeiro", depois "estimar a volatilidade" e "posição atual do preço".

Tentei fazer isso: dividi primeiro por dia da semana e/ou hora do dia. Os modelos ficaram piores do que se ele encontrasse as primeiras divisões por si só. Você também pode fazer isso - dividir a amostra em 5 partes por dia da semana e treinar 1 modelo para cada dia. Ou uma hora ou o que você quiser.

Aleksey Vyazmikin #:

Não, o treinamento sempre melhora o resultado a cada iteração e os modelos na amostra de treinamento estão sempre no positivo. Embora com um spread financeiro.

É claro que haverá melhoria, mas não a melhor, mas com a aleatoriedade da pontuação.
Não observo o Trein de forma alguma, para não me distrair. Ele sempre será bom.

Aleksey Vyazmikin #: Tentei com zero, mas percebi que apontuação das árvores se tornou a mesma para todas, o que significa que elas foram escolhidas entre as mesmas aleatoriamente :)) Ou ainda é usado um gerador de números aleatórios em algum lugar.

Se a pontuação ficou sem randomização e os resultados ainda são diferentes, isso significa que a randomização é usada em outro lugar.

Aleksey Vyazmikin #: Ou seja, selecionar modelos por três amostras e depois calcular a média delas? Talvez sim - ainda não quero ir para conjuntos de modelos, ainda preciso analisar a possibilidade de melhorar a construção dos próprios modelos.

Não para selecionar, mas para pegar todos os modelos gerados aleatoriamente. E calcular a média deles. Como em uma floresta. Lá, também, é feita a média das árvores aleatórias. Mas você pode fazer experiências com as melhores das árvores aleatórias.

 
elibrarius #:

Tentei fazer isso: dividi primeiro por dia da semana e/ou hora do dia. Os modelos foram piores do que se ele encontrasse as primeiras divisões por si só. Você também pode fazer isso: dividir a amostra em 5 partes por dia da semana e treinar 1 modelo para cada dia. Ou uma hora ou o que você quiser.

Sim, eu tenho essa opção :) Consegui obter resultados interessantes em um dos preditores e criar uma estratégia de sinalização para ele.

No entanto, estou falando de outra coisa aqui, sobre a prioridade de seleção de preditores pelo modelo durante o treinamento.

elibrarius #:

Se o Score se tornou sem randomização e os resultados ainda são diferentes, isso significa que a randomização está sendo usada em outro lugar.

Obviamente :) O desenvolvedor ainda não se pronunciou sobre esse tópico.

elibrarius #:

Não é selecionar, mas pegar todos os gerados aleatoriamente em uma linha. E fazer a média delas. Como em uma floresta. Lá, também, é feita a média das árvores aleatórias. Mas você pode fazer experimentos com as melhores das árvores aleatórias.

Essas coisas podem ser feitas com um Recall grande ou pré-agrupando os modelos por similaridade de pontos de resposta a uma classe positiva; caso contrário, sempre haverá uma recomendação negativa.

 

Reduzi a amostra do último experimento - com os preditores que selecionei anteriormente - e removi dois anos de 2014-2015 da amostra de treinamento.

Se da última vez havia 208 modelos com lucros acima de 3.000 na amostra do exame, agora há 277. É uma coincidência ou as amostras se tornaram mais semelhantes?

A propósito, o saldo médio de lucro na amostra de teste da última vez foi de 982 pontos e na amostra truncada foi de 2.115, mas no exame está quase inalterado - 1.114 vs. 1.214.


Alguma ideia de como melhorar o resultado?

 
Boa tarde, você pode postar os arquivos da primeira postagem, eu também quero tentar uma ideia.
 
Aleksey Vyazmikin #:

Se na última vez havia 208 modelos com lucro acima de 3.000 no exame de amostra, agora há 277. É coincidência ou as amostras se tornaram mais semelhantes?

Você tem uma dependência extremamente alta da Seed, ou seja, dos novos dados. Nos dados em que há padrões, a imagem seria como na linha do trem: tudo em + com pequenos desvios.
Tente alterar a Seed inicial (tente várias variantes). Se o número de padrões bem-sucedidos variar tanto, então é aleatório, assim como a sequência do HNC ao alterar a semente.

Aleksey Vyazmikin #:

A propósito, o saldo médio de lucro na amostra de modelos de teste na última etapa é de 982 pontos, e na amostra truncada é de 2115, mas no exame é quase inalterado -1114 vs -1214.

É estranho que a média no teste tenha sido > 0. Talvez você queira dizer traine? O teste não parece participar do aprendizado ou participa indiretamente, para escolher uma trilha.

Aleksey Vyazmikin #:

Alguma ideia de como melhorar o resultado?

O mais provável é que o modelo esteja com treinamento excessivo ou insuficiente. E a última opção: não há padrões.
Se o treinamento for excessivo, tente reduzir o número de árvores para 1. Se o treinamento for insuficiente, você poderá aumentar a profundidade da árvore.
Você provavelmente já tentou a variante com mais árvores.
A falta de padrões é mais difícil. Se você não os encontrou com mais de 5.000 preditores, não sei mais como procurá-los. Também não sei como você chegou a esses mais de 5.000. Ainda não me aprofundei nessa direção. Como leva muito mais tempo para calcular, mas acho que terei de fazê-lo, já que também é cerca de 50/50 no OOS.

 

A propósito, você constrói a linha de equilíbrio com o tempo no eixo horizontal ou apenas com um passo uniforme entre as transações? A julgar pelos gráficos, o segundo.

Aqui está um exemplo:

O de cima tem mais de 3.000 negociações, o de baixo tem mais de 600. Se você os criar apenas com espaçamento igual, obterá belas tendências. Mas aqui você pode ver que, durante 5 anos, a negociação foi feita em apenas alguns dias e não faz sentido criar um robô que durará meses/anos. Você simplesmente o desligará.

A imagem é apenas sobre o tema de cisnes brancos e negros. Como você pode ver, o MO "morde" bem esses cisnes e se ajusta a eles, se estiverem presentes.
@fxsaber também pesquisou esse assunto https://www.mql5.com/ru/blogs/post/749420
Concordo plenamente com ele que é necessário remover a influência dos cisnes brancos e negros.

Se no otimizador você pode aplicar um critério personalizado e, de alguma forma, selecionar outras opções, no MO há apenas opções padrão para selecionar divisões e aqui você só pode cortar partes do histórico. O problema é que o momento do cisne branco é desconhecido antes de o modelo ser treinado. E se você cortá-lo, o modelo se tornará completamente diferente e poderá haver seu próprio cisne branco. Temos que pensar e fazer experimentos...

Фильтр белых лебедей.
Фильтр белых лебедей.
  • www.mql5.com
В любом исследовании сначала идет подготовка исходных данных. На фин. рынках это почти всегда истории котировок. В зависимости от источника, они могут обладать определенными особенностями. Сегодня
 
RomFil #:
Boa tarde, você pode postar os arquivos da primeira postagem, eu também quero tentar uma ideia.

Olá. Sim, tentarei postar hoje.

 
elibrarius #:

Você tem uma dependência extremamente alta da Seed, ou seja, HGF em novos dados. Nos dados em que há padrões, a imagem seria como na bandeja: tudo em + com pequenos desvios.
Tente alterar a Seed inicial (tente várias variantes). Se o número de padrões bem-sucedidos variar tanto, então é aleatório, assim como a sequência do HGC ao alterar a semente.

A Seed em cada modelo muda sequencialmente de 1 a 10000 - esse é o objetivo de gerar modelos diferentes. O que acontece se a semente não for fixa e for retirada de todo o espaço (ou como ela é gerada - também uma pergunta) - não sei - você pode verificar.

Qual é a base para a afirmação de que o resultado deve ser semelhante ao teste? Presumo que as amostras não sejam homogêneas - não há um número comparável de exemplos semelhantes nelas, e acho que as distribuições de probabilidade dos quanta diferem um pouco.

Sim, deixe o modelo ser construído por acaso, digamos, mas isso significa que ele não descreve a regularidade identificada?

elibrarius #:

É estranho que a média no teste tenha sido > 0. Talvez você esteja se referindo à linha de base? O teste não parece estar envolvido no aprendizado, ou está envolvido indiretamente, para selecionar uma trilha.

Ele participa apenas para controlar a interrupção do treinamento, ou seja, se não houver melhoria no teste durante o treinamento no trem, o treinamento será interrompido e as árvores serão removidas até o ponto em que houve a última melhoria no modelo de teste.

É exatamente o caso em que pode não haver melhoria, mas a deterioração não é forte, mas sim exemplos mais generalizados na amostra do trem, e o algoritmo de aprendizado diz para interromper esse caso. Se desativarmos esse recurso, outra questão se abrirá: quantas árvores devem ser usadas no modelo. Pensei em outra opção: treinamos um número fixo de árvores e depois truncamos o modelo usando a amostra de teste, mas teremos que calcular o equilíbrio em cada etapa, o que certamente é caro.

Agora, acho que seria bom fazer o treinamento parar não por uma amostra, mas por um conjunto de subamostras, o que daria uma verificação da persistência do padrão ao longo do tempo.

elibrarius #:

O mais provável é que o modelo esteja com treinamento excessivo ou insuficiente. E a última opção é que não há padrões.

Se o treinamento for excessivo, tente reduzir o número de árvores para 1. Se o treinamento for insuficiente, você pode aumentar a profundidade da árvore.
Você já deve ter tentado a variante com um grande número de árvores.
A falta de padrões é mais difícil. Se você não os encontrou com mais de 5.000 preditores, não sei mais como procurá-los. Também não sei como você chegou a esses mais de 5.000. Ainda não me aprofundei nessa direção. Como leva muito mais tempo para calcular, mas acho que terei de fazê-lo, já que também é cerca de 50/50 no OOS.

Aparentemente, não indiquei claramente a amostra que usei - é a sexta (última) amostra do experimento descrito aqui, portanto, há apenas 61 preditores.

Conforme salientei acima, sim, os modelos não estão totalmente treinados, no sentido de que não descrevem todo o trem de amostras, e isso geralmente é normal, porque o mercado está mudando e todas as combinações simplesmente não podem estar lá e, em cada amostra subsequente, haverá um número diferente delas e, possivelmente, com um resultado médio diferente para elas. Não estamos trabalhando com uma amostra representativa, portanto, não podemos esperar uma descrição completa - meu objetivo é extrair alguns padrões estáveis.

Quanto às árvores, há uma configuração para a taxa de aprendizado (--learning-rate), que está relacionada ao número de árvores, ou seja, quanto maior a taxa, menos árvores são necessárias para descrever a amostra. Assim, verifica-se que, se você aumentar a taxa (0,3), o número de modelos que passam pela filtragem condicional é maior, às vezes mais do que o dobro; os últimos experimentos são apenas com essas configurações e o número médio de árvores é de 10 peças, enquanto a profundidade é de 6 divisões. As árvores no CB são um pouco diferentes - há uma divisão em todo o nível de uma árvore simétrica, o que torna sua aplicação mais rápida do que a variante clássica, mas elas são menos informativas uma a uma. Nas versões mais recentes, é possível usar árvores clássicas, mas não tenho um intérprete para seus modelos em MQL5, portanto, não as uso, para não ficar chateado.

Em geral, posso adicionar mais preditores, porque agora eles são usados apenas com 3 TF, com algumas exceções - acho que mais alguns milhares podem ser adicionados, mas é duvidoso que todos eles sejam usados adequadamente no treinamento, já que 10.000 variantes de sementes para 61 preditores dão essa propagação....

E, é claro, você precisa fazer uma pré-seleção dos preditores, o que acelerará o treinamento.

elibrarius #:

A propósito, você constrói a linha de equilíbrio com o tempo no eixo horizontal ou apenas com um passo uniforme entre as negociações? A julgar pelos gráficos, a segunda.

Aqui está um exemplo:

O de cima tem mais de 3.000 negociações, o de baixo tem mais de 600. Se você os fizer apenas com o mesmo recuo, obterá belas tendências. Mas aqui você pode ver que, durante 5 anos, a negociação foi feita em apenas alguns dias e não faz sentido criar um robô que durará meses/anos. Você simplesmente o desligará.

O equilíbrio é construído sequencialmente sem levar em conta a cronologia do calendário. Sim, entendo o que você quer dizer, mas, no meu conceito, é uma questão de estágios posteriores de preparação para os padrões de negociação.

elibrarius #:

A imagem é apenas sobre o tópico de cisnes brancos e negros. Como você pode ver, o MO "morde" bem esses cisnes e se ajusta a eles, se houver algum.

É lógico que as emissões são desvios, mas acho que são ineficiências que devem ser aprendidas com a remoção do ruído branco. Em outras áreas, as estratégias primitivas simples geralmente funcionam, especialmente em áreas de mercado plano.

Razão: