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

 
Yury Reshetov:
Bem, a sustentabilidade é alcançada através da prevenção de potencial sobre-aprendizagem. E uma amostra desequilibrada de treinamento é uma causa potencial de sobretreinamento para classes de baixa representatividade. Afinal de contas, o algoritmo de aprendizagem tenta agir como entende, e não como precisa, a fim de aumentar a generalização. Se a amostra for desequilibrada, irá minimizar os erros de aprendizagem nas aulas menos representativas, porque os exemplos para estas aulas são poucos e é mais fácil de os distribuir em vez de os generalizar. Depois de tal aprendizagem não há nada que surpreenda que fora da amostra de treinamento os erros do algoritmo ocorram mais provavelmente em aulas que não sejam representativas.
Não tenho nada contra equilibrar a amostra de treino. Eu não tenho nada contra levar uma subamostra aleatória para validação sem corte por datas. Sobrestimaria a métrica de validação.
 
Alexey Burnakov:

O raciocínio é simples. Na vida real, ninguém permitirá que você tire uma amostra mista contendo observações do futuro para avaliar a qualidade da negociação real. Todas as observações serão feitas após o dia X.

Assim, ao retirar uma amostra mista na validação (sem separação de datas), o usuário está superestimando a métrica de qualidade na validação. É isso mesmo. Então haverá surpresas desagradáveis.

O que é que o pensamento tem a ver com isso? O pensamento é subjectivo. Pensar pode ser tanto correcto como deliberadamente errado. Porque a imaginação é problematicamente limitada. O critério da verdade é sempre a experiência.

Pegue duas amostras de treinamento, uma pré-balanceada e a outra altamente desequilibrada. Treinar o algoritmo em ambas as amostras e medir a capacidade de generalização nas peças de teste. Depois compare a capacidade de generalização. O que dá a melhor capacidade de generalização será o critério da verdade.

Caso contrário, estaremos a pensar e a especular ao ponto de perder o nosso pulso. Afinal de contas, o desacordo nasce no debate, a verdade nasce na experiência.

Por isso, acabei com a discussão do tema da amostra de formação equilibrada. Caso contrário, este coro pode continuar indefinidamente, pois existem duas opiniões diferentes e continuar a medir quem de nós pensa mais correctamente é uma perda de tempo.

 
Yury Reshetov:
Bem, a estabilidade é conseguida evitando o excesso de treino. E uma amostra de treinamento desequilibrado é um motivo potencial para o excesso de treinamento para classes de baixa representação. Afinal de contas, o algoritmo de aprendizagem tenta agir como entende, e não como precisa, a fim de aumentar a generalização. Se a amostra for desequilibrada, irá minimizar os erros de aprendizagem nas aulas menos representativas, porque os exemplos para estas aulas são poucos e é mais fácil de os distribuir em vez de os generalizar. Após tal aprendizagem, não é surpreendente que fora da amostra de treinamento, os erros do algoritmo nas aulas menos representativas sejam os mais prováveis de ocorrer.

1. Em classes desequilibradas, é uma confusão: o erro entre classes pode divergir por várias vezes. E qual é a certa?

2. Está longe de ser sempre possível equilibrar as classes.

O seu exemplo com BUY|SELL. Quando o número de observações (barras) for superior a 3000, a diferença de desequilíbrio será de 10% no máximo 20%. É bem possível equilibrar.

E aquio Dr.Trader sugeriu a variável alvo "Pivot/Not Pivot". Acho que ele a tirou da ZZ. Assim, nesta variável alvo, as classes desequilibradas irão variar por ordens de magnitude. Se aumentarmos ao máximo a aula, podemos ensinar em uma amostra tão equilibrada? A mim parece-me que não.

Então não é assim tão simples com o equilíbrio.

Pela minha própria experiência:

  • se o desequilíbrio não for grande (não mais do que 20%), então o equilíbrio é obrigatório.
  • Se o desequilíbrio for grande (múltiplo), então não se pode equilibrar e não se deve usar esta variável alvo em absoluto.

Eu não consegui encontrar outras soluções.

 
Yury Reshetov:
Vou largar tudo e tornar-me adepto do R para poder jogar números com uma cara séria na cara.
Até agora ainda não reparei em ti a jogar aos números, mas não sei da tua cara.
 
SanSanych Fomenko:
Até agora não reparei em ti a jogar aos números, mas não sei da cara - não consigo vê-la.
Bem, eu tenho uma cara muito séria no meu avatar, não tenho? Pelo menos esforcei-me muito para que fosse o mais sério possível. Mas aparentemente não correu muito bem, pois não?
 
Yury Reshetov:

O que é que o pensamento tem a ver com isso? O pensamento é subjectivo. Pensar pode ser tanto correcto como deliberadamente errado. Porque a imaginação é problematicamente limitada. O critério da verdade é sempre a experiência.

Pegue duas amostras de treinamento, uma pré-balanceada e a outra altamente desequilibrada. Treinar o algoritmo em ambas as amostras e medir a capacidade de generalização nas peças de teste. Depois compare a capacidade de generalização. O que dá a melhor capacidade de generalização será o critério da verdade.

Caso contrário, estaremos a pensar e a especular ao ponto de perder o nosso pulso. Afinal, a discordância nasce na discussão e a verdade nasce na experiência.

E por isso vou parar de discutir o tópico de equilibrar mais a amostra de treino. Caso contrário, este colívar pode continuar indefinidamente, pois existem duas opiniões diferentes e continuar a medir a qual de nós pensa correctamente - uma perda de tempo.

Quero dizer uma coisa, tu queres dizer outra. Eu digo que devemos dividir o conjunto estritamente por datas. E tu estás a falar de equilíbrio.
 
Alexey Burnakov:
Quero dizer uma coisa, tu queres dizer outra. Eu digo que você precisa dividir o conjunto estritamente por datas. E tu estás a falar de equilíbrio.

Desculpa, mas já disse que não vejo qualquer utilidade em continuar este refrão. Eu já tentei explicar as falhas de equilíbrio com exemplos. Provavelmente não é muito convincente, pois não? Não sou bom em retórica negra, por isso não posso simplesmente transformar negro em branco com uma cara séria. Por isso, não sejas muito duro comigo.

É mais provável que você esteja tentando me convencer de que está supostamente tentando "forçar" você a equilibrar a realidade? Mas eu não tenho essa intenção. Sei que a realidade é, infelizmente para mim, muitas vezes desequilibrada e as oportunidades de equilibrá-la nem sempre estão disponíveis. Por isso, nos meus cargos tentei explicar-vos que não é necessário tentar equilibrar a realidade fora da amostra de treino, mas é necessário e suficiente para equilibrar a amostra de treino, para que o modelo obtido a partir dele não seja enviesado na direcção de aulas altamente representativas. Ao dividir a amostra geral em partes por datas, também é muitas vezes impossível alcançar um equilíbrio. É por isso que eu equilibro a amostra de treinamento não por datas, mas por igual representatividade das aulas nela.

Não vou responder a mais perguntas sobre o equilíbrio do conjunto de treino. Então este refrão já se arrastou.

 
Yury Reshetov:

Desculpa, mas já disse que não vejo qualquer utilidade em continuar este refrão. Eu já tentei explicar as falhas de equilíbrio com exemplos. Provavelmente não é muito convincente, pois não? Não sou bom em retórica negra, por isso não posso simplesmente transformar negro em branco com uma cara séria. Por isso, não sejas muito duro comigo.

É mais provável que você esteja tentando me convencer de que está supostamente tentando "forçar" você a equilibrar a realidade? Mas eu não tenho essa intenção. Sei que a realidade é, infelizmente para mim, muitas vezes desequilibrada e as oportunidades de equilibrá-la nem sempre estão disponíveis. Por isso, nos meus cargos tentei explicar-vos que não é necessário tentar equilibrar a realidade fora da amostra de treino, mas é necessário e suficiente para equilibrar a amostra de treino, para que o modelo obtido a partir dele não seja enviesado na direcção de aulas altamente representativas. Ao dividir a amostra geral em partes por datas, também é muitas vezes impossível alcançar um equilíbrio. Portanto, eu equilibro a amostra de treinamento não por datas, mas por igual representatividade de classes nela.

Eu não vou responder mais perguntas sobre o equilíbrio do conjunto de treino. Então, já estamos a entrar num desentendimento.

OK . Não te vou convencer.
 

Quero saltar para a completude e reiterar a minha opinião acima do fio condutor.

1. Você precisa ter dois conjuntos de dados: o segundo é uma extensão do primeiro no tempo.

2. Equilibrar o primeiro conjunto de dados. Nós definitivamente equilibramo-lo.

3. Nós dividimos aleatoriamente o primeiro conjunto de dados em três partes: treinamento, teste e validação.

  • Nós ensinamos o modelo usando validação cruzada no conjunto de dados de treinamento.
  • Nós executamos o modelo treinado através dos conjuntos de teste e validação.
  • Caso contrário, passamos ao passo 4. Caso contrário, passamos à busca de preditores mais decentes, pois uma diferença significativa no erro prova que o modelo está excessivamente treinado devido à presença de preditores de ruído (tendo fraca relação com a variável alvo).

4. Obtemos um erro no segundo conjunto, que é uma continuação do primeiro conjunto no tempo.

Se o erro em todos os QUATRO conjuntos for aproximadamente o mesmo, então o modelo não é retrabalhado. Se o erro tiver um valor decente, podemos ir mais longe em segurança, ou seja, passar através do testador.

Se houver uma diferença significativa (mais de 30%), então o conjunto preditor original leva à reconversão do modelo e, por experiência pessoal, substituir o tipo de modelo não pode corrigir nada, em termos de reconversão. Precisamos de nos livrar dos preditores de ruído. Pode facilmente acontecer que NÃO existam quaisquer preditores de ruído entre os preditores.

 
Vou apoiar a vossa conversa cavalheiros, porque tenho usado o optimizador do Yuri há mais de um ano e concordo absolutamente com ele sobre a amostragem com o gerador HSPF. A questão é que a tarefa é identificar as informações nos dados de entrada sobre as informações de saída. Ou seja, o optimizador diz-lhe como os dados de entrada são informativos para a nossa saída (o que é ideal). Ou seja, o optimizador responde a esta pergunta. E se os dados mostrarem um resultado ruim, significa que ele não traz informações sobre a saída ou, melhor dizendo, leva àquele nível de generalização que o preditor dá. E agora imagine o seguinte caso: suponha que temos 10 entradas. Questão, quantas entradas (stroi) precisamos ter para dividir a amostra a zero???? Vou dar-te uma dica. 100 entradas com 10 entradas devem ser otimizadas para zero. Porque com 100 entradas será uma enumeração total de dados. Talvez eu não me tenha feito entender, peço desculpa. Yuri certamente não fala sobre isso, mas há uma nuance de usar um preditor, que não é anunciada, mas que aumenta a generalidade de quaisquer dados. Ou seja, para 10 entradas, dadas 100 linhas, mesmo completamente irrelevantes para os dados do sistema. O algoritmo irá construir um modelo onde a generalizabilidade é alta. Na faixa de 90% e acima. Não é certo que este modelo funcione adequadamente no futuro, porque os dados são retirados do teto e não se relacionam de forma alguma com o sistema. Mas o Predictor é capaz de serrar um espaço multidimensional com o mínimo de erro. Mas para isso você precisa realizar uma manipulação de dados complicada. Mas eu concordo completamente com o Yuri. A tarefa é identificar a informatividade das entradas em relação às saídas e a ordem dos dados, neste caso, não tem qualquer papel. HSPF é uma opção neste caso....