Regressão Bayesiana - Alguém já fez um EA usando este algoritmo? - página 26

 
СанСаныч Фоменко:

Sim, eu fiz... Eu não me lembro...

Se falamos sobre o testador, este é o problema, em minha opinião.

Pegamos alguma amostra e usamos o testador para calcular, por exemplo, o fator de lucro. Em seguida, pegamos outra amostra e obtemos um novo valor de fator de lucro. Ao todo, recebemos dois números. Dois números são a base para conclusões estatísticas? Estes números não significam absolutamente nada.

Deve ser resolvido e é resolvido de maneira diferente.

Uma amostra é colhida. Alguns subconjuntos são selecionados aleatoriamente a partir desta amostra e contam como fator de lucro sobre ela. Em seguida, uma amostra aleatória é colhida e assim por diante, por exemplo, 1000 vezes. Você receberá 1000 fatores de lucro. Este conjunto já pode servir como base para conclusões estatísticas.

A propósito, este método não exclui o uso de um testador, demo...

SS, bom dia!

Uma amostra de quê? Negociações?

Eu vejo onde você quer chegar - estimando quantitativos de estatísticas de amostra por tipo bootstrap.

Mas a questão permanece, se o TS for ajustado em toda a amostra disponível, então este método mostrará o que já sabemos, que é que o fator lucro é oh-so-good.

Vou abordar a questão de forma um pouco diferente em meu blog. Primeiro, treinamento com validação cruzada k-fold; pegue 5 subconjuntos (no meu caso serão dados de 5 pares de moedas) e você terá um experimento interessante: treinamento do modelo em 4 pares e teste no 5º. Quero repetir esta experiência 5 vezes. Mas isso não é tudo. Originalmente, eu estava puramente interessado em mostrar que o forex é preditivo. Assim, os modelos m-best (no corte de validação cruzada) passarão a validação em uma grande amostra que a máquina ainda não tenha visto. Outra propriedade da amostragem de validação é que ela agrega os preços separados pelo tempo no futuro. Espero obter uma matriz de 100 * 18 com resultados de validação para os 100 principais modelos em 18 variáveis de saída previstas (de 2 a 724 minutos no futuro), por exemplo, pelo critério R^2. Isto mostrará imediatamente se minhas "caixas" prevêem melhor do que a média.

E se houvesse um patrocinador para minha autodescoberta, seria possível alugar uma nuvem amazônica e repetir a experiência 1.000 vezes, gerando cada vez um conjunto diferente de treinamento e validação. E então haveria uma matriz tridimensional de 1000 * 100 * 18 que lhe permitiria estimar o erro padrão da métrica R^2 para os melhores modelos e para diferentes alvos. Mas isso já é espesso.

Meu ponto é que devemos testar em dados futuros (ou em dados passados, mas claramente separados pelo tempo) e tudo estará bem.

 
Alexey Burnakov:

CC, boa tarde!

Uma seleção de quê? Transações?

Eu vejo onde você quer chegar - estimando quantitativos de estatísticas de amostra por tipo bootstrap.

Mas a questão permanece, se o TS for ajustado em toda a amostra disponível, então este método mostrará o que já sabemos, que é que o fator lucro é oh-so-good.

Vou abordar a questão de forma um pouco diferente em meu blog. Primeiro, treinamento com validação cruzada k-fold; pegue 5 subconjuntos (no meu caso serão dados de 5 pares de moedas) e você terá um experimento interessante: treinamento do modelo em 4 pares e teste no 5º. Quero repetir esta experiência 5 vezes. Mas isso não é tudo. Originalmente, eu estava puramente interessado em mostrar que o forex é preditivo. Assim, os modelos m-best (no corte de validação cruzada) passarão a validação em uma grande amostra que a máquina ainda não tenha visto. Outra propriedade da amostragem de validação é que ela agrega os preços separados pelo tempo no futuro. Espero obter uma matriz de 100 * 18 com resultados de validação para os 100 principais modelos em 18 variáveis de saída previstas (de 2 a 724 minutos no futuro), por exemplo, pelo critério R^2. Isto mostrará imediatamente se minhas "caixas" prevêem melhor do que a média.

E se houvesse um patrocinador para minha autodescoberta, seria possível alugar uma nuvem amazônica e repetir a experiência 1.000 vezes, gerando cada vez um conjunto de treinamento e validação diferente. E então haveria uma matriz tridimensional de 1000 * 100 * 18 que lhe permitiria estimar o erro padrão da métrica R^2 para os melhores modelos e para diferentes alvos. Mas isso já é espesso.

Meu ponto é que você precisa testar em dados futuros (ou dados passados, mas claramente separados pelo tempo) e você estará bem.

A palavra-chave de seu posto é destacada em vermelho.

O sobreajuste (overfitting) de um modelo é um problema metodológico de toda a ciência: um modelo sobreajustado (qualquer em qualquer ramo do conhecimento) é responsável por algumas particularidades nos dados de treinamento, e então essas particularidades não são encontradas fora dos dados de treinamento. Ao fazer isso, o modelo falha em capturar certos padrões que são comuns à população em geral.

Meu entendimento é que este problema não é resolvido pelos próprios modelos, ou por qualquer técnica de teste estatístico: você observa corretamente que os resultados excessivamente treinados serão justificados. A tentativa de usar técnicas de "embrutecimento" de modelos em minhas mãos não tem levado a resultados.

Para mim, o problema do excesso de treinamento é inteiramente gerado pelo conjunto de dados de entrada. Em um nível intuitivo: os dados brutos (preditores) se relacionam ou não com a variável. O caso extremo - não tenho nenhum - não considero. Intermediário: alguns o fazem e outros não. Uma situação perfeitamente viável a partir da experiência pessoal é quando os preditores que não são relevantes para a variável alvo "silêncio" preditores que são relevantes para a variável alvo. Se você conseguiu selecionar manualmente os preditores ruidosos mais odiosos, então, em algum momento, os algoritmos de triagem dos preditores começam a funcionar.

Os números são os seguintes. Eu selecionei cerca de 30 preditores do conjunto inicial de 50-200 por meus próprios métodos. Estes 30 itens não geram nenhum modelo supertreinado, ou seja, a eficácia no treinamento, AOVA, testes e amostras de validação é aproximadamente a mesma. Depois, usando pacotes (uso o varSelRF, outros também são possíveis) seleciono os preditores usando uma janela deslizante, cerca de 300-500 barras. Eu recebo um conjunto de 10-15 preditores. À medida que a janela se move, a composição dos preditores muda. Qualquer um dos conjuntos de preditores resultantes também não leva a sobretreinamento, mas aumenta o desempenho de 5% para 10%. Para tarefas de classificação, isto é cerca de 20% de erro.

 
СанСаныч Фоменко:


Para mim, o problema do sobre-aprendizado é inteiramente gerado pelo conjunto de dados de entrada. Em um nível intuitivo: se os dados brutos (preditores) são ou não relevantes para a variável. O caso extremo - não tenho nenhum - não considero. Intermediário: alguns o fazem e outros não. Uma situação perfeitamente viável a partir da experiência pessoal é quando os preditores que não são relevantes para a variável alvo "silêncio" preditores que são relevantes para a variável alvo. Se você conseguiu selecionar manualmente os preditores ruidosos mais odiosos, então, em algum momento, os algoritmos de triagem dos preditores começam a funcionar.

Os números são os seguintes. Eu selecionei cerca de 30 preditores do conjunto inicial de 50-200 por meus próprios métodos. Estes 30 itens não geram nenhum modelo supertreinado, ou seja, a eficácia no treinamento, AOVA, testes e amostras de validação é aproximadamente a mesma. Depois, usando pacotes (uso o varSelRF, outros também são possíveis) seleciono os preditores usando uma janela deslizante, cerca de 300-500 barras. Eu recebo um conjunto de 10-15 preditores. À medida que a janela se move, a composição dos preditores muda. Qualquer um dos conjuntos de preditores resultantes também não leva a sobretreinamento, mas aumenta o desempenho de 5% para 10%. Para tarefas de classificação, isto é cerca de 20% de erro.

Você pode lidar com o ruído selecionando variáveis, como você disse. Mas estou certo ao dizer que você está dizendo que dados ruidosos impedem a seleção de boas variáveis e que elas devem ser encontradas e removidas com antecedência por alguma eurística?

E outra pergunta. Você está usando uma espécie de floresta de decisão, como eu entendi desta abreviação (eu mesmo não usei tal método).

Qualquer árvore florestal de decisão é um algoritmo de seleção de variável gananciosa + métrica que permite desenhar uma divisão (limite de corte) na área de valores dessa variável. Assim, com base nas árvores "gananciosas", elas devem selecionar as variáveis mais significativas individualmente nos níveis superiores dos galhos. Nos níveis inferiores da árvore (começando já no segundo nível, de fato), a seleção das próximas variáveis mais importantes já é feita em uma subamostra de observações que foram geradas pelos cortes intermediários. E nesta subamostra também procuramos a próxima variável mais importante (para cada variável passamos por todos os cortes possíveis e selecionamos a melhor, para a qual é calculada a métrica de relevância da variável). Mas como isto já está funcionando com uma subamostra de observações, acontece que em geral a distribuição condicional entra em vigor: a var #18 é melhor na subamostra #4 dada a variável #2 usada anteriormente. Assim, o significado das variáveis torna-se cada vez mais dependente das variáveis utilizadas acima, à medida que a profundidade da árvore aumenta.

De acordo com a idéia dos autores, as variáveis de ruído devem ser deixadas de fora. MAS! a natureza gananciosa da abordagem leva ao fato de que, por exemplo, variáveis rejeitadas no nível 1, em conjunto com outras variáveis possíveis em outro possível nível 2, também podem dar um ganho significativo na métrica alvo, que por si só é exagerada. Também pode acontecer, no caso extremo, que duas variáveis independentes, cada uma das quais é ruído em termos da variável alvo, dêem uma distribuição tão conjunta com a variável alvo que se tornem uma interação significativa. Um modelo ganancioso procurará isso, mas isso raramente acontece, quero dizer esta configuração de dados.

O que você acha?

 
Por favor, respondam a uma pergunta, algum de vocês ganhou algum dinheiro em forex? Eu já passei 5 anos de minha vida e mais de um milhão de rublos e nada disso chegou até hoje.
 
Alexey Burnakov:

Você pode lidar com o ruído selecionando variáveis, como você disse. Mas estou certo ao dizer que você está dizendo que dados ruidosos nos impedem de selecionar boas variáveis e que precisamos encontrá-las e removê-las antes usando alguma eurística?

Exatamente.

E outra pergunta. Você está usando uma espécie de floresta de decisão, como entendi desta sigla (eu mesmo não usei tal método).

A floresta como exemplo, mas o modelo escolhido do problema, quando as variáveis de ruído "afogam" as variáveis normais, não resolve o problema: a seleção de variáveis é um problema independente.

 
Mikhail Gorenberg:
Por favor, respondam a uma pergunta, algum de vocês ganhou algum dinheiro em forex? Eu já passei 5 anos de minha vida e mais de um milhão de rublos e nada disso chegou até hoje.
Comece com sinais, aprenda a selecionar sinais lucrativos...
 
Mikhail Gorenberg:
Por favor, respondam a uma pergunta, algum de vocês ganhou algum dinheiro em forex? Eu já passei 5 anos de minha vida e mais de um milhão de rublos e nada disso chegou até hoje.
Não é de se admirar que você não seja botânico em termos de quantiles, avaliações cruzadas e bootstraps.
 
Mikhail Gorenberg:
Por favor, responda a uma pergunta, quem entre vocês está ganhando dinheiro com forex? Já passei 5 anos de minha vida e mais de um milhão de rublos e até agora nada saiu disso.

Acabei ficando com aproximadamente zero (talvez um pouco mais). Todos os meus empreendimentos foram arruinados pela ganância.

Mesmo que você tenha um robô comercial lucrativo (eu tenho um) - quero dizer realmente lucrativo e consistente - quando ele funciona e você está esperando por resultados durante meses, ele começa a parecer que 30% de crescimento não é suficiente. E depois vem mais longe. Isto é, mesmo com comércio totalmente automatizado, onde os riscos são calculados e o máximo de drawdown é controlado, psicologicamente eu pessoalmente não me sinto confortável.

Decidi, portanto, utilizar quantitiles.

PS: se eu fizer um bom sistema comercial automatizado, eu o tornarei disponível para todos. E vou alugá-lo para alguém com dinheiro.

 
СанСаныч Фоменко:

Você pode lidar com o ruído selecionando variáveis, como você disse. Mas estou certo ao dizer que você está dizendo que dados ruidosos nos impedem de selecionar boas variáveis e que precisamos encontrá-las e removê-las antes usando alguma eurística?

Exatamente.

E outra pergunta. Você está usando uma espécie de floresta de decisão, como eu entendo desta sigla (eu mesmo não usei tal método).

A floresta como exemplo, mas o modelo escolhido do problema acima, quando as variáveis de ruído "afogam" as variáveis normais, não resolve o problema: a seleção de variáveis é um problema independente.

Por que o ruído afoga o sinal? Não está totalmente claro para mim.

Se o próprio modelo incorpora a regularização de características, então todos os dados de ruído são ignorados após comparar seu efeito sobre a variável alvo. Se o modelo não oferecer proteção contra o sobretreinamento (por exemplo, um limite inferior de número de observações no nó terminal da árvore não foi definido), então todo o ruído será utilizado. Mas isto se resolve mesmo dentro de uma floresta aleatória.

Talvez você possa explicar sua idéia em mais detalhes?

 
Alexey Burnakov:

Por que o ruído bloqueia o sinal? Não está totalmente claro para mim.

Se o próprio modelo inclui a regularização de características, então todos os dados de ruído são ignorados após comparar seu efeito sobre a variável alvo. Se o modelo não oferecer proteção contra o excesso de treinamento (por exemplo, um limite inferior de número de observações no nó terminal da árvore não foi definido), então todo o ruído será utilizado. Mas isto se resolve mesmo dentro de uma floresta aleatória.

Talvez você possa explicar sua idéia em mais detalhes?

Por que o ruído está bloqueando o sinal? Não está muito claro para mim.

Eu não tenho.

Tenho um programa que calcula uma medida da relação entre o preditor e a variável alvo. É um valor abstrato.

Se for < 1, é ruído.

1-2 - é melhor não mexer com ela.

mais de 3 - bom.

mais de 5 - boa sorte, mas rara.

Portanto, se há muitos preditores com pontuação inferior a 2, não consigo distinguir os preditores úteis por nenhum outro meio além do meu próprio. Como interpretar isto - não sei. Não esqueçamos que os preditores têm um impacto não apenas sobre a variável alvo, mas também entre eles mesmos. Muitas vezes não é apenas a lista de preditores a serem excluídos que é importante, mas também a ordem em que eles são excluídos.

O que eu quero dizer?

O problema básico do comércio é o problema do sobretreinamento (overfitting), este é um problema por direito próprio e não depende dos modelos e métodos utilizados.

Razão: