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

 
Aleksey Vyazmikin:

Ditado interessante. No entanto, as árvores subsequentes são construídas para reduzir erros de composição de árvores existentes, mas não entendo porque não usam a amostragem então, diga-me mais em detalhe, talvez eu não entenda algo profundo...

Por acaso não estás aí a examinar folhas de árvores com número > 1, alimentando-as com dados brutos? Se sim, então o resultado deve ser aleatório, porque essas árvores não aprenderam com os dados de entrada, mas sim com os erros. Então você está resolvendo um problema que a árvore e suas folhas não foram treinadas para resolver.
Se essas árvores fossem de floresta aleatória - então todas elas são treinadas com dados brutos e você pode usá-las (mas não adianta, porque 1 árvore é fortemente inferior à floresta em termos de erro). No impulso - não, porque 1 árvore sem todas as outras árvores não tem sentido a considerar.

 
elibrarius:

Por acaso você está lá por acaso, com folhas de árvores com número > 1, alimentando-as com dados de entrada? Se assim for, o resultado deve ser aleatório, porque essas árvores não foram treinadas em dados de entrada, mas sim em erros. Então você está resolvendo um problema que a árvore e suas folhas não foram treinadas para resolver.
Se essas árvores fossem de floresta aleatória - então todas elas são treinadas com dados brutos e você pode usá-las (mas não adianta, porque 1 árvore é fortemente inferior à floresta em termos de erro). No impulso - não, porque 1 árvore sem todas as outras não faz sentido considerar.

Isto decorre da definição de boosting como um método sequencial de melhoria onde cada algoritmo sucessivo procura compensar as falhas da composição dos anteriores.
 
elibrarius:

Sim, a fim de reduzir o erro, eles tomam o erro como alvo e depois subtraem-no.

Aqui está o algoritmo para impulsionar, estou apenas estudando-o eu mesmo https://neurohive.io/ru/osnovy-data-science/gradientyj-busting/


Eu entendo que isto é um impulso clássico. Talvez a Catbust tenha inventado algo próprio...

Deu uma olhadela no artigo. Sim, parece-me que uma árvore é construída, aplicada à amostra e o delta entre as metas reais e as metas previstas é calculado, depois a árvore seguinte é construída para reduzir o erro, ou seja, para prever o delta. Mas, na verdade, novas árvores são construídas da mesma maneira na mesma amostra e novas e novas conexões são formadas, ou seja, na verdade, apenas o alvo muda. Mas tal abordagem dá uma oportunidade de encontrar novas conexões (folhas) que não serão óbvias em uma floresta aleatória, e essas conexões dependem da primeira árvore, e depende da amostra (que não é notícia), mas as árvores subseqüentes no CatBoost serão construídas ou para o número definido de iterações, ou para o sinal de parada, e esse sinal é definido em uma amostra de teste. O sinal é qualquer indicador estimado da qualidade do modelo (há uma lista de diferentes indicadores). Eu selecciono a paragem do treino no indicador, pois gostaria de obter uma melhoria em duas amostras ao mesmo tempo, e se estiver apenas na amostra de treino, é claramente um excesso de treino. Esta é a razão pela qual existe uma questão sobre o tamanho da amostra como afectando directamente a aprendizagem, ou seja, se mesmo o tamanho da amostra de treino for constante, então o tamanho da amostra de teste irá afectar a aprendizagem.


elibrarius:

Você por acaso está lá as folhas de árvores com número > 1, alimentando-as com os dados brutos? Se assim for, o resultado deve ser aleatório, porque essas árvores não estavam aprendendo com dados brutos, mas sim com erros. Então você está resolvendo um problema que a árvore e suas folhas não foram treinadas para resolver.
Se essas árvores fossem de floresta aleatória - então todas elas são treinadas com dados brutos e você pode usá-las (mas não adianta, porque 1 árvore é fortemente inferior à floresta em termos de erro). No impulso - não, porque 1 árvore sem todas as outras não faz sentido considerar.

Bem visto, estou apenas a preparar uma plataforma para estudar folhas (em catbust é mais como árvores binárias). O resultado pode ser insignificante se houver muitas árvores, mas pode haver ligações decentes, mesmo em teoria, se a primeira árvore tivesse um grande erro na sua folha, e a quarta árvore corrigiu esse erro na sua folha, então de facto a nova ligação fará sentido lógico e classificará correctamente a amostra. Tecnicamente, o catbust tem um array com o resultado da resposta de cada árvore binária (folha), então essas respostas são somadas, mas o truque é que por linha de amostra apenas uma pequena fração de árvores binárias (folhas) dá uma resposta. Portanto, teoricamente é possível remover (zero fora) árvores binárias (folhas), que têm uma capacidade preditiva muito baixa, porque ou são árvores com erro inicial ou pequenos encaixes (no fato de se reciclar) e deixam folhas apenas com valores significativos. A outra direção é usar essas conexões para estimar a importância dos preditores, onde há um grande peso na matriz final, essas conexões e, portanto, os preditores são significativos, os outros são rastreados por limiar como menos significativos. Se fizermos esse peneiramento, o modelo pode primeiro ser treinado nos preditores mais significativos e depois nos menos significativos, o que deve melhorar o resultado do treinamento, pois os preditores menos significativos não impedirão a construção de relações mais estáveis, mas só os complementarão quando possível.

O resultado final é que as árvores binárias de lixo não são realmente interessantes para encaixar, enquanto as micro-análises (2-3 árvores binárias (folhas)) com um peso elevado comum ou árvores binárias únicas também são de grande importância e podem ser usadas separadamente para classificação.

Infelizmente, eu não tenho um mecanismo para puxar árvores binárias individuais (no sentido normal das folhas) e convertê-las em uma regra de leitura normal, então tudo é apenas em teoria, mas estou aberto à cooperação.

 
Aleksey Vyazmikin:

Infelizmente eu não tenho atualmente um mecanismo para puxar árvores binárias individuais (no entendimento normal das folhas) e convertê-las em uma regra de leitura normal, então tudo ainda é apenas em teoria, mas eu estou aberto à cooperação.

E como é que se puxa o modelo em mt5? Tenho uma boa ideia para a usar no comércio ou no testador. Tenho trabalhado nisso há muito tempo, mas não faço ideia, devo usar Python e ligá-lo ao mt5 ou usar o binário katbust.

 
Maxim Dmitrievsky:

Como se desenha o modelo em mt5? O que trocar lá ou fazer no testador. Estou pensando, qual seria a melhor maneira de construí-lo, ainda não decidi: ir a Python e conectá-lo ao mt5 ou usar o binário katbust.

Vou converter um modelo para C++ para MQL5 - na verdade, apenas as matrizes são levadas lá, e há um intérprete deste modelo em MQL (não o meu código). Assim, os modelos são carregados no Expert Advisor e agora eu posso carregar centenas de modelos através do arquivo e visualizá-los no terminal, incluindo a execução através do otimizador.

 
Aleksey Vyazmikin:

Eu converti um modelo para C++ para MQL5 - na verdade, apenas arrays são levados lá, e há um intérprete deste modelo em MQL (o código não é meu). Assim, os modelos são carregados no Expert Advisor e agora eu posso carregar centenas de modelos através de um arquivo e observá-los no terminal, incluindo executá-los através do otimizador.

Bem, aqui está um artigo para escrever com alguma estrutura e ideia (a ideia não deve ser menos que espaço), e que ajuda é necessária, ou coopera o que está lá

Entendo que a comunidade está dividida: alguns estão se retirando, outros estão generalizando. I. por exemplo, não concordo com esta abordagem, pode não estar completamente compreendido a ideia
 
Maxim Dmitrievsky:

bem, aqui está um artigo para escrever com alguma estrutura e ideia (a ideia não deve ser menos que cósmica) e que ajuda é necessária, ou coopere o que está lá fora

Não tenho conhecimentos teóricos profundos para artigos, invento conceitos diferentes e mudo interpretações dos fenómenos estabelecidos - não é uma abordagem académica.

Acho que um intérprete do modelo seria interessante, mas não posso publicá-lo, pois o código não foi escrito por mim.

E tudo o que resta em teoria, com código que não pode ser aplicado (por causa de aulas fechadas), não acho que seria interessante. E o processo de criação e seleção de modelos, acho que tudo está resolvido, e não há interesse.

 
Maxim Dmitrievsky:

Entendo que a comunidade está dividida: uns estão se retirando, outros estão generalizando. Eu, por exemplo, não concordo com esta abordagem, talvez eu não tenha entendido bem a ideia.

E eu não sei sobre a comunidade, ou seja, não sei como as outras pessoas em outros campos o fazem?

Puxar dados me parece lógico, porque estou procurando um modelo de comportamento humano (ou algoritmo) com a ajuda de MO, pode haver muitos padrões de comportamento e eles podem ser independentes, então faz sentido puxar o máximo possível, porque é impossível generalizá-los todos juntos. E para alguém, o mercado é algo inteiro, o resultado do trabalho da mente coletiva, algum tipo de órgão de votação sem regras. Aparentemente, para esta situação eles estão procurando um modelo que descreva o comportamento do mercado como um organismo separado.

 
Aleksey Vyazmikin:

Se a primeira árvore teve um grande erro na sua própria folha e a quarta árvore corrigiu esse erro na sua própria folha, então, com efeito, a nova ligação fará sentido lógico e classificará correctamente a amostra.

Não tenho a certeza, a 4ª árvore corrige os erros da primeira com as suas folhas. Acho que só aos pares é que fazem sentido. Mas posso estar errado. Desde que não fiz experiências com tais coisas.

 
elibrarius:

Não tenho a certeza, a 4ª árvore corrige os erros da primeira com as suas folhas. Acho que é só aos pares que eles fazem sentido. Mas posso estar errado. Como eu não experimentei tais coisas.

Se formos muito primitivos, a primeira árvore não tem resposta à amostra, ela retorna zero, enquanto a quarta árvore tem essa resposta e considera "probabilidade" 0,6 - tecnicamente corrigimos o erro da primeira árvore, mas na verdade revelamos uma conexão que anteriormente não existia de forma alguma. Mesmo se assumirmos que todas as árvores partilham a amostra inteira (o que aparentemente não é o caso), que seja 0,1 em vez de zero, e a árvore subsequente tem 0,5, o mesmo efeito aqui. Não há exatamente probabilidade, os valores no array são então convertidos para algo semelhante à probabilidade somente depois que todos os valores das árvores binárias ativadas forem somados.

Razão: