Otimização e testes fora da amostra. - página 4

 

Sim, de fato!

Além disso, (levando em conta as críticas também) gostaria de salientar que há uma objeção significativa para aqueles que não concordam com a simples execução da idéia.

"Não se deve complicar a essência das coisas além do que é necessário" (Ir. Occam)

A primeira otimização seguida da segunda (fora da amostra) é uma solução simples e suficiente!

Afinal, o nosso objetivo é ter lucro, não nos engajarmos na otimização, em nome da otimização.

 
Vita:

--> O slashing faz a mesma coisa (marcação, verificação). O que extra o splitting traz para a mesa em comparação com um straight-through run?


A divisão efetiva filtra as informações. Em termos de quantidade.

Vita escreveu (a):

--> Se por "processamento de resultados de otimização sobre toda a amostra" você quer dizer descartar o conjunto D, então eu discordo - descartar resultados que dão perdas intermediárias (na amostra ou fora da amostra) é tarefa elementar que é resolvida durante a própria otimização sobre toda a amostra, ou seja, nenhum processamento após a otimização é necessário. O resultado é definido B imediatamente. E não há tempo consumindo verificações adicionais fora da amostra.

Você quer dizer otimização no sentido matemático ou no verdadeiro testador? A amostra, como eu a entendo, agora inclui ambas as amostras. Você acha que pode economizar tempo executando três conjuntos desnecessários sobre ambas as amostras? Quanto à implementação, se você escrever seu próprio testador a partir do zero, talvez os custos de implementação sejam insignificantes. Tente implementar, então podemos voltar à questão.

 
leonid553:

Sim, de fato!

Além disso, (levando em conta as críticas também) gostaria de salientar que há uma objeção significativa para aqueles que não concordam com a simples execução da idéia.

"Não se deve complicar a essência das coisas além do que é necessário" (Ir. Occam)

A primeira otimização seguida da segunda (fora da amostra) é uma solução simples e suficiente!

Afinal, estamos perseguindo o objetivo de lucro, não de otimização, em nome da otimização.


Eu também, e estou em total acordo com Occam. Não se deve fazer duas otimizações - uma é suficiente.

Você disse: "Após a otimização de um Expert Advisor, muitas vezes teremos que nos aborrecer e ficar sem amostras mais de uma dúzia de conjuntos de parâmetros sugeridos pelo otimizador.

Uma corrida em toda a população, sem se dividir em amostra-amostra, não é uma solução menos suficiente e ainda mais simples.

 

Discordo categoricamente, Vita. Caso contrário, nas redes neurais não haveria divisão de todos os dados em três partes, fundamentalmente diferentes: a otimização real - apenas na primeira parte; a segunda serve apenas para determinar o momento de término do treinamento, e a terceira - apenas para testes individuais. Ou seja, o verdadeiro ajuste só vai no primeiro, e no terceiro, é o que quer que se revele... E a escolha - "navalha de Occam" ou perda de confiança no sistema - é deixada para o criador do sistema.

Grosso modo, a otimização em A+B+C não é de modo algum a mesma que o processamento descrito acima.

 
Mathemat, acho que o que ele quer dizer é recolher todo o conjunto (não esqueça os combinatórios) de resultados, dividi-lo em 4 conjuntos e descartar três deles.
 
Mathemat:

Discordo categoricamente, Vita. Caso contrário, não haveria divisão de todos os dados em três partes nas redes neurais. Além disso, a otimização real está apenas na primeira parte; a segunda serve apenas para determinar o momento de término do treinamento, e a terceira é apenas para testes únicos.


A divisão dos dados em redes neurais em três partes, suspeito, existe para leis de aprendizagem (como 2x2=4), para revelar esses padrões. E somente se houver alguma. Caso contrário, a rede neural será ajustada à curva por si só.

E então, como me pareceu, a tarefa do testador não é treinar ou detectar padrões, mas encontrar o conjunto ideal de parâmetros. Isto pode ser feito com simples força bruta ou algoritmos genéticos ou talvez com uma rede neural. Mas uma vez encontrado um conjunto de parâmetros ótimos para uma amostra, como você evita o ajuste de curvas? O princípio? Quais são os elementos ruins do conjunto que desaparecem quando você testa para fora da amostra?

 
lna01:
Vita:

--> O slashing faz a mesma coisa (marcação, verificação). O que extra o splitting traz para a mesa em comparação com um straight-through run?


A divisão efetiva filtra as informações. Em termos de quantidade.

--> divisão dos resultados com perdas na amostra ou fora da amostra, mas com ganhos totais agregados. Isso não é algo que eu gostaria de descartar.

Vita escreveu (a):

--> Se por "processamento de resultados de otimização sobre toda a amostra" você quer dizer descartar o conjunto D, então eu discordo - descartar resultados que dão perdas intermediárias (na amostra ou fora da amostra) é uma tarefa elementar resolvida durante a própria otimização sobre toda a amostra, ou seja, nenhum processamento após a otimização é necessário. O resultado é definido B imediatamente. E nenhuma verificação adicional fora da amostra consome tempo.

Você quer dizer otimização no sentido matemático ou no verdadeiro testador? A amostra, como eu a entendo, agora inclui ambas as amostras. Você acha que pode economizar tempo executando três conjuntos desnecessários sobre ambas as amostras? Quanto à implementação, se você escrever seu próprio testador a partir do zero, talvez os custos de implementação sejam insignificantes. Tente a implementação, então podemos voltar à questão.

--> " Amostragem, como eu entendo, agora inclui ambas as amostras" - desculpe, eu não queria fazer você pensar assim. Esqueça isso.

O que eu queria dizer é que o verdadeiro testador MetaTrader permite obter os mesmos resultados ao otimizar uma amostra+população de amostras como a otimização de uma amostra seguida de testes fora da amostra. No Testador, o botão "Propriedades do Especialista", depois as abas "Teste" e "Otimização" permitem que você se livre de perdas de qualquer comprimento e profundidade que desejar. E como eu mantenho o fato de que a otimização de uma amostra seguida por um teste fora da amostra não se livra de mais nada e não acrescenta nada, esta é a solução para o problema.

Infelizmente, é no sentido matemático que se pode alcançar uma otimização perfeita dos parâmetros sob qualquer curva. O truque com o teste "para o futuro" fora da amostra é uma otimização oculta mas ainda assim trivial em toda a população de amostra+ fora da amostra. Sem garantias para o futuro, sem se livrar do encaixe das curvas. Um conjunto viável de parâmetros tem que ser encontrado de outra forma.

 
A divisão dos dados em redes neurais em três partes, suspeito, existe para ensinar leis (como 2x2=4), para revelar esses padrões.

É isso mesmo, Vita, para identificar padrões. E o que estamos fazendo aqui? Mais dois conjuntos de dados são inventados para evitar que esta identificação degenere em "memorização" trivial da população inicial (= curvas). Em NS funciona assim: aprendendo no conjunto A (conjunto de treinamento) para a redução da função alvo (geralmente é um erro de previsão ou classificação). O aprendizado é organizado de tal forma que o erro em A diminui monotonicamente.

Ao mesmo tempo, o mesmo erro com os mesmos parâmetros é testado no conjunto B (conjunto de validação). Aí o erro muda como uma função em cascata (primeiro caindo, depois mínimo, depois crescendo). Assim que o erro mínimo é atingido no set B, o treinamento pára. A continuação do treinamento no set A, mesmo que o erro diminua, leva a uma curva, pois o erro no set B já começa a crescer. Neste ponto, diz-se que a capacidade de generalização da rede diminui. É por isso que o treinamento é interrompido à força, sem levar o ajuste em A ao limite (e esta é a diferença fundamental entre o algoritmo e o ajuste feito pelo otimizador de metaquotas).

Finalmente, o conjunto de parâmetros em que o aprendizado parou é percorrido pelo terceiro conjunto C (o conjunto de teste). Esta é a verdadeira verificação da qualidade do treinamento, porque os dados sobre C não têm nenhum efeito sobre o treinamento antes. É claro que não há garantia de funcionamento estável da NS com os parâmetros encontrados, mas este algoritmo cancela pelo menos 95% dos pseudo-graais, dos quais há mais de um aqui no fórum :).

E uma simples busca em um único fragmento de dados é a curva mais pura, ideal na área de treinamento, mas sem valor fora dela.

É claro que o MT4 não é um programa de rede neural e o algoritmo geral terá de ser redesenhado, mas ainda é melhor do que o curvamento trivial, que chamamos de "otimização", hehe...

 
Vita:

Eu queria dizer que o verdadeiro testador do MetaTrader permite obter os mesmos resultados na otimização de uma amostra+agregado de uma amostra como a otimização de uma amostra seguida de um teste fora da amostra. O botão "Expert Advisor Properties" e as guias "Testing" e "Optimization" permitem livrar-se de perdas de qualquer comprimento e profundidade.

Tudo depende da definição da tarefa. Se negligenciarmos o grau de uniformidade da distribuição de lucros ao longo do tempo de teste, as capacidades padrão do testador MT são realmente suficientes, e o tempo gasto será comparável. Vale a pena negligenciar isto? Cada um tem sua própria experiência e pontos de vista. O processo pode de fato ser chamado de adaptação, mas eu acho que o termo aproximação seria mais preciso. Nem todas as aproximações podem ser extrapoladas para o futuro e o critério de uniformidade do lucro apenas permite rejeitar aquelas variantes que são obviamente inadequadas para extrapolação. IMHO, é claro.

 
Mathemat:

E uma simples sobreposição em um único dado é pura curva, perfeita na área de treinamento e sem valor fora dela.

--> Exatamente, é.

Mas o que faz a divisão de uma trama em fragmentos? A que leva o "pseudo-aprendizado" em três fragmentos diferentes? Leva a lucro em cada parcela individual? Como é que um tal ajuste é melhor? Se você acredita nisso, então por todos os meios. Além disso, o testador lhe dá a capacidade de abafar a curva de modo que em cada fragmento A, B, C... você tem lucro.

Vamos acabar com as redes neurais, porque elas não estão nem perto deste tópico. As pessoas estão fazendo o incômodo manualmente por causa de uma vantagem duvidosa, que, aliás, eu apontei, mas não ouvi mais nada, de que maneira os resultados após a otimização na amostra e os testes na amostra fora da amostra são melhores do que uma corrida trivial? Veja, estamos falando de trabalho e resultados reais, não de teoria de rede neural. Você teria a gentileza de apontar quaisquer vantagens reais, se ainda houver alguma, além daquela que eu apontei.

Razão: