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

 
Maxim Dmitrievsky:

todos os castores constroem a mesma barragem, apesar de não o saberem.

mas cada um teimosamente acredita ter inventado algo novo.

O castor é uma criatura trabalhadora e justa, outra coisa muito diferente ,um castor que estuda é uma criatura má, afugenta-o com uma vassoura de todos os lados, ou melhor simplesmente ignora-o.

 
Kesha Rutov:

O castor é uma criatura trabalhadora e correta, outra coisa bem diferente, o Aprendiz de Cavaleiro é uma criatura desagradável, afugenta-o com uma vassoura de todos os lugares, ou melhor ainda, simplesmente ignora-o.

"Analista num frasco" :))) máquina de lavar louça foda-se

 
Aleksey Vyazmikin:

A questão é que, mesmo que 50% de todos sejam levados, então há uma seleção clara desses 50% para a primeira divisão da raiz (ou em Alglib não é assim?). CatBoost não só tem seleção aleatória de preditores, mas também divisão aleatória (pesos são adicionados aleatoriamente aos cálculos) nas primeiras árvores.

Eu recebo resultados diferentes, e meu objetivo não é estimar todo o modelo, mas obter folhas, que com grande probabilidade descrevem a maior parte da amostra. Então essas folhas são testadas na história ano após ano e é feita uma composição delas, que pode não descrever todo o mercado, mas acho que é melhor ter respostas mais precisas para o que você sabe do que adivinhar com 50% de probabilidade na maior parte do tempo.

Os prognosticadores, agora estarão na casa dos 600, portanto um exagero completo não é mais realista.

Alglib passa por todos os restantes 50% de preditores, divide cada um em 4 partes por quartis, e escolhe a divisão com melhor erro entre todas as variantes.

Em princípio, a partição aleatória não é difícil de fazer.
Não tenho visto árvores individuais com bons resultados nos testes (45-50%), mas uma floresta delas é mais interessante).


 
Em termos de importância dos preditores analisados:
Os pacotes xgboost, lightGBM tinham métodos incorporados para estimar a importância dos recursos para "modelos de madeira":

  1. Ganhe
    Esta medida mostra a contribuição relativa de cada característica para o modelo. Para calcular isto, passamos por cada árvore, olhamos para cada nó da árvore cuja característica leva a uma divisão do nó, e quanto a incerteza do modelo é reduzida de acordo com a métrica (impureza de Gini, ganho de informação).
    Para cada característica, a sua contribuição é somada sobre todas as árvores.
  2. Capa
    Mostra o número de observações para cada característica. Por exemplo, você tem 4 características, 3 árvores. Suponha que a ficha 1 tem 10, 5 e 2 observações nos nós de árvore 1, 2 e 3 respectivamente. Então a importância para esta ficha seria de 17 (10 + 5 + 2).
  3. Frequência
    Mostra com que frequência uma determinada característica é encontrada em nós de árvore, ou seja, o número total de nós de árvore divididos para cada característica em cada árvore é contado.
Eles realmente não dividem a importância corretamente.
Eu tenho uma floresta treinada em 5 bares com resultados melhores num teste do que 100. Mas quando se ensina por 100, os primeiros 5 não são marcados como importantes, mas alguns como longínquos.
Quando se treina a 100, o erro de cada árvore e floresta é menor - obviamente devido ao sobretreinamento e dando importância a 30-100 barras. Mas é óbvio que não são importantes de acordo com a lógica habitual, mas porque a floresta a 5 bares dá melhores resultados.
 
A propósito, não percebo a diferença entre Cobertura e Frequência? Mais especificamente, o que é uma observação de recurso na Capa? (Eu entendo com a quebra por um chip em Frequência). As árvores parecem estar divididas por características, não observadas.
 
Aleksey Vyazmikin:

Há um script R com um algoritmo genético para criar uma árvore, selecionar gerações por melhoramento da entropia. Depois há algum tipo de selecção final. Eu pego todas as árvores para a seleção final e puxo as folhas delas para medições adicionais separadas em MT5. O script não foi publicado publicamente, por isso também não há descrições detalhadas. Aparentemente é como selecionar a melhor árvore da floresta, mas há uma limitação de profundidade para evitar o excesso de treinamento, bem, o processo leva cerca de 2 dias em todos os núcleos na última amostra, onde não todas as barras, mas apenas sinais para entrar, e se todas as barras durante 3 anos, então o cálculo leva 1,5 meses lá. Após os cálculos eu faço a divisão da árvore, ou seja, eu removo a coluna com o preditor raiz da melhor árvore populacional e começo tudo de novo, parecia que mesmo em 40 este procedimento às vezes são criadas folhas muito boas, então eu cheguei à conclusão, que a melhor árvore matemática nem sempre é mais eficaz, e uma informação interfere com outra, que apareceu mais tarde utilizada no mesmo CatBoost, quando os preditores são escolhidos aleatoriamente de todas as amostras para construir uma árvore.

Após uma rápida olhada no código, eu vi uma seleção genética de características para a construção da árvore a partir do pacote rpart. Assim, cada árvore foi oferecida para aprender o seu próprio conjunto de características. Devido à genética, tal conjunto de características é mais rápido do que a força bruta completa.
Mas a árvore não é mágica, é a oferecida pelo rpart. Acho que é normal lá.
 
Maxim Dmitrievsky:

primeiro treinar o modelo em todas as características, salvar os erros

Depois, um a um, randomize cada um dos preditores, digamos por distribuição normal, e verifique novamente o erro em todas as características, incluindo esta randomizada (alterada), e compare-a com a inicial. Não há necessidade de reeducar o modelo. E então verifica cada um dos prognosticadores. Se o preditor foi bom, o erro em toda a amostra (incluindo todos os outros preditores originais) aumentará drasticamente em comparação com o original. Salve as diferenças de erro, peneirando as melhores fichas com base nelas. Depois, no final, treinar apenas os melhores e modelo para a produção. Maus preditores são ruídos para o modelo, não precisam deles com o seu 1%. Os bons normalmente permanecem 5-10, a importância do resto diminui exponencialmente (lei Zipf).

Eu tentei ensinar filtros, mas não muito, não vejo muito sentido, é melhor colocar tudo em um modelo de uma só vez.

Se você puder, apenas sobre a seleção de preditores MUITO competente(já jogado anteriormente)

Encontrei o seu posto sobre permutação.
É uma variante interessante. Vou ter de tentar.
Embora receie que se eu o aplicar a um modelo em 100 barras, e tentar remover 95 barras e deixar as primeiras 5, o resultado será 50%. Afinal de contas, os primeiros 5 quase não estavam envolvidos em rupturas (em média apenas 5% dos nós são construídos sobre eles).
 
elibrarius:
Encontrei o seu posto sobre permutação.
Variante interessante. Tenho de tentar.
Embora eu tenha medo que se eu aplicá-lo no modelo de 100 barras e tentar remover 95 barras e deixar as primeiras 5, o resultado será de 50%. Afinal de contas, os primeiros 5 quase não estavam envolvidos em rupturas (em média apenas 5% dos nós são construídos sobre eles).

Não sei o que estás a fazer com 100 barras, provavelmente deves aplicá-lo correctamente e vais ficar bem.

 
Maxim Dmitrievsky:

Eu não sei o que você está fazendo com 100 barras, você provavelmente precisa aplicá-lo corretamente e ele vai funcionar

Eu quero automatizar o processo de peneirar os preditores sem importância)

 
Maxim Dmitrievsky:

primeiro treinar o modelo em todas as características, salvar os erros

Depois, um a um, randomize cada um dos preditores, digamos por distribuição normal, e verifique novamente o erro em todas as características, incluindo esta randomizada (alterada), e compare-a com a inicial. Não há necessidade de reeducar o modelo. E então verifica cada um dos prognosticadores. Se o preditor foi bom, o erro em toda a amostra (incluindo todos os outros preditores originais) aumentará drasticamente em comparação com o original. Salve as diferenças de erro, peneirando as melhores fichas com base nelas. Depois, no final, treinar apenas os melhores e modelo para a produção. Maus preditores são ruídos para o modelo, não precisam deles com o seu 1%. Os bons normalmente permanecem 5-10, a importância do resto diminui exponencialmente (lei Zipf).

Eu tentei ensinar filtros, mas não muito, não vejo muito sentido, é melhor colocar tudo em um modelo de uma só vez.

Se você puder, apenas sobre a seleção de preditores MUITO competente(já jogado anteriormente)

Eu entendi este método de forma diferente.
Para o preditor em estudo, não devemos alimentar valores aleatórios com uma distribuição normal, mas apenas embaralhar as linhas nesta coluna.

De qualquer forma, os resultados do artigo são impressionantes. Eu devia tentar na prática.