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

 
elibrarius:

Algo parecido com a permutação que Maxim encontrou. Mas faz sentido substituir um preditor com uma variação de 0,1 a 0,2 por um preditor com uma variação de 800 a 300000 em vez de um preditor com uma variação de 0,1 a 0,2? Não!

Mas baralhar as suas filas faz. O intervalo de números e distribuição de probabilidade permanecerá, mas os valores em cada exemplo se tornarão aleatórios.

Sim, de facto algo semelhante, foi provavelmente quando surgiu a ideia. Eu não entendi qual é o problema para mudar o preditor, porque cada preditor tem seus próprios valores na linha, além de que devemos, de alguma forma, salvar uma quebra na grade desses valores (pode ser o passo uniforme 0.1 0.2 0.3 ou qualquer outro - variantes estão disponíveis de diferentes desenvolvedores de modeladores), como era quando o algoritmo da árvore estava funcionando, se for possível.

E o que também é importante é que é necessário verificar não em todas as amostras, mas exatamente naquelas linhas onde a folha anterior foi ativada, para que os dados fossem comparáveis em precisão, ou seja, é necessário pré-filtrar a amostra (para avaliação em folhas diferentes, respectivamente, filtração diferente).

 
Aleksey Vyazmikin:

Sim, é parecido, provavelmente foi aí que surgiu a ideia. Não entendo qual é o problema de mudar o preditor, pois cada preditor tem seus próprios valores na linha, além disso é necessário manter a quebra da grade desses valores (pode ser o passo uniforme 0.1 0.2 0.3 ou qualquer outro - há opções para diferentes desenvolvedores de modeladores) como era quando o algoritmo de árvore funcionava, se for possível.

Bem, em vez de predizer qual foi o máximo de 0,2, substitua o valor de outro preditor com valor de 800 a 300000? E vai acabar sempre por ir para o ramo certo. E precisamos de verificar ambos os ramos direito e esquerdo.
A normalização ajudará a encaixar na faixa, mas a distribuição de probabilidade pode ser diferente, como resultado os ramos direitos serão acionados com mais freqüência do que os ramos esquerdos ou vice-versa.
Ou estou a interpretar mal a sua ideia e estamos a falar de coisas diferentes.

Aleksey Vyazmikin:

Outra coisa importante é que não devemos verificar a amostra inteira, mas precisamente aquelas linhas onde a folha anterior foi ativada, para que os dados sejam comparáveis em precisão, ou seja, devemos pré-filtrar a amostra (para avaliação em folhas diferentes, respectivamente, filtragem diferente).

Ao descartar o preditor, deixamos cair os nós que separam seus dados (por que uma folha separada?). Ao descartar cada nó, temos de verificar 2 ramos. Se descartamos 10 nós, temos 11 opções (sub-árvores) com 11 folhas como resposta. Isto precisa de ser calculado como média, a execução de toda a amostra com uma coluna embaralhada mostrará aproximadamente isto na alteração do erro final da árvore/floresta.
Leia o artigo sobre a pemutação - tudo é descrito em detalhes.

 
elibrarius:

Basta substituir o valor do preditor com um máximo de 0,2 pelo valor do outro preditor com valores entre 800 e 300000. E vai acabar sempre por ir para os ramos da direita. E precisamos de verificar ambos os ramos direito e esquerdo.
A normalização ajudará a encaixar na faixa, mas a distribuição de probabilidade pode ser diferente, como resultado, os ramos direitos serão acionados com mais freqüência do que os esquerdos ou vice-versa.
Ou não entendo a tua ideia e estamos a falar de coisas diferentes.

Ao descartar o preditor, estamos descartando os nós que compartilham dados sobre ele (o que isso tem a ver com uma folha separada?). Ao descartar cada nó, temos de verificar 2 ramos. Se descartamos 10 nós, temos 11 escolhas com 11 folhas como resposta. Isto tem de ser calculado como média, se executar toda a amostra com uma coluna embaralhada, isso aparecerá aproximadamente na alteração do erro final da árvore/floresta.
Leia o artigo sobre a pemutação - ele descreve tudo em detalhe lá.

O meu método não é a pemutação, por isso não o posso reproduzir.

Eu procedo de outra, que uma folha é uma regra já concluída - uma característica de alguma observação, e ela pode muito bem já existir sem uma estrutura em árvore. Uma árvore é uma ferramenta para gerar regras a partir de observações.

Claro, concordo que alguns preditores farão uma regra foliar modificada completamente não funcional na mesma parte da amostra, mas isso não é um problema, já que o objetivo é encontrar o melhor análogo e comparar apenas com ele - é normal que alguns preditores que dividem a amostra por divisões sejam perdidos, mas normalmente isso só diz respeito à série de valores para um preditor individual. Por exemplo, temos uma folha com três preditores A>3 && B<1 && C>=20, existem os preditores D e E que não estão incluídos nas regras da lista, respectivamente precisamos remover um por um cada preditor, A para começar e substituí-lo por D e E com etapas da grade de partição do valor do preditor e com sinais diferentes de desigualdade, neste caso verifique cada nova regra nas mesmas partes da amostra onde o original foi ativado e obtenha estatísticas de precisão de classificação para cada regra. E, portanto, a melhor opção é compará-lo com o original e dar uma pontuação a esta comparação. Para fazer este procedimento para todas as folhas. Excluindo as folhas que estão duplicadas. É importante não avaliar o resultado da árvore como um conjunto de regras, e cada regra enunciada na folha separadamente das outras.

Não estou tentando determinar a importância do preditor para a árvore da cobiça, mas a importância do preditor para a estabilidade da regra (folha) proposta pelo modelo.
 
Aleksey Vyazmikin:

O meu método não é a pemutação, por isso não o posso reproduzir.

Eu procedo de outra, que uma folha é uma regra já concluída - uma característica de alguma observação, e ela pode muito bem já existir sem uma estrutura em árvore. Uma árvore é uma ferramenta para gerar regras a partir de observações.

Claro, concordo que alguns preditores farão uma regra foliar modificada completamente não funcional na mesma parte da amostra, mas isso não é um problema, já que o objetivo é encontrar o melhor análogo e comparar apenas com ele - é normal que alguns preditores que dividem a amostra por divisões sejam perdidos, mas normalmente isso só diz respeito à série de valores para um preditor individual. Por exemplo, temos uma folha com três preditores A>3 && B<1 && C>=20, existem os preditores D e E que não estão incluídos nas regras da lista, respectivamente precisamos remover um por um cada preditor, A para começar e substituí-lo por D e E com etapas da grade de partição do valor do preditor e com sinais diferentes de desigualdade, neste caso verifique cada nova regra nas mesmas partes da amostra onde o original foi ativado e obtenha estatísticas de precisão de classificação para cada regra. E, portanto, a melhor opção é compará-lo com o original e dar uma pontuação a esta comparação. Para fazer este procedimento para todas as folhas. Excluindo as folhas que estão duplicadas. É importante avaliar não o resultado da árvore como um conjunto de regras, mas cada regra enunciada na folha separadamente das outras.

Não estou tentando determinar a importância do preditor para a árvore da cobiça, mas a importância do preditor para a estabilidade da regra (folha) proposta pelo modelo.
Tenho andado a fazer o andaime até agora. Então, na sua direção MO - você sabe o que fazer)
 
elibrarius:
Estou a andar de andaimes, por agora. Então, na sua direção MO - você sabe o que fazer)

Então, acontece que cada um está a falar da sua própria coisa :)

Diga-me, é realista implementar no mesmo Alglib para construir uma floresta apenas com valores preditores únicos, ou pelo menos com divisões únicas? As árvores serão menos, mas não duplicarão seus erros/respostas corretas, o que deve dar mais plausibilidade a partir do treinamento de amostra.

 
Aleksey Vyazmikin:

Diga-me, é realista implementar no mesmo Alglib para construir uma floresta apenas com valores preditores únicos, ou pelo menos com divisões únicas? Isto será menos árvores, claro, mas elas não duplicarão seus erros/respostas corretas, o que deve dar mais plausibilidade fora da amostra de treinamento.

Claro que sim. MQL permite que você programe qualquer coisa, como qualquer outra língua. E Alglib pode ser reescrito além do reconhecimento, de acordo com as suas ideias.

 
Elibrarius:

Claro que sim. MQL permite que você programe qualquer coisa, como qualquer outra língua. E Alglib pode ser reescrito além do reconhecimento para se adequar às suas ideias.

Na palavra "realisticamente" coloquei "tão simples quanto isso"...

Mas, pela resposta, eu percebo a atitude, obrigado, não me vou incomodar.

 
Aleksey Vyazmikin:

Na palavra "realisticamente" coloquei "tão simples quanto isso"...

Mas pela resposta compreendo a atitude, obrigado, não me vou incomodar.

Complicado, é claro.
Mas há uma base sob a forma de uma função de árvore. Isso é o que você pode modificar como quiser.
 
elibrarius:
Difícil, claro.
Mas existe uma base sob a forma de função de árvore. Isso é o que você pode modificar como achar melhor.

Obrigado pela sua resposta. Você tem uma boa compreensão do código, está planejando um lançamento público com melhorias no algoritmo de construção de árvores? Mesmo coisas como a profundidade das árvores ou a poda incorporada com um número de observação de regras definível seria muito útil lá. Ainda não comecei a usar Alglib, mas há quem possa achá-lo muito útil.

 
Aleksey Vyazmikin:

Obrigado pela sua resposta. Você tem uma boa compreensão do código, está planejando um lançamento público com melhorias no algoritmo de construção de árvores? Mesmo coisas como a profundidade das árvores ou a poda incorporada com um número de observação de regras definível seria muito útil lá. Eu mesmo não usei Alglib, mas há quem possa achá-lo muito útil.

Descobri-lo e fazer lançamentos são coisas diferentes. Estou a experimentar agora. Estou a misturar os preditores agora. Posso abandoná-la, como abandonei a NS por causa da minha incapacidade de lidar com o ruído.

Descobrir isso é bastante fácil. Você só tem que olhar para o código por algumas horas e tudo se tornará claro.
Razão: