Discussão do artigo "Florestas Aleatórias na Previsão das Tendências" - página 10

 
TheXpert:

Overtraining é um termo bem estabelecido e bastante específico. Você não está apenas substituindo-o, mas também não está explicando o que ele é em seu entendimento.

Isso me lembra muito Sulton) na forma de comunicação.

O treinamento do modelo é quando o modelo extrai a essência do processo, no jargão local "padrões", que ocorrem não apenas na amostra de treinamento, mas também fora dela.

O supertreinamento (overfitting) ocorre quando o modelo começa a selecionar alguma aleatoriedade que não existe fora da amostra de treinamento e, por causa disso, o modelo apresenta um valor de erro muito diferente do erro de treinamento.

Muitas pessoas neste fórum enfrentaram o supertreinamento (talvez sem perceber), pois é muito fácil obter um EA supertreinado com a ajuda da otimização no testador.

Mas tudo isso é filosofia.

A realidade está na habilidade específica, nas ferramentas que são usadas nesse processo.

Com meu artigo e livro, não estou tentando resolver o problema do treinamento excessivo, mas apenas abrir a porta para o mundo dos modelos preditivos, que (modelos) ensinam a prever coisas de qualidade no futuro. Se o estimado gpwr tivesseexaminado o Rattle depois de passar algumas horas, suas perguntas teriam muito mais conteúdo sem demonstrar que ele não se deu ao trabalho de ler meu artigo, mas tem uma opinião sobre seu conteúdo. Mas o mais importante é que o Rattle abrange todo o processo de criação de modelos muito complexos, incluindo a estimativa do desempenho de modelos fora da amostra, a lista de preditores significativos, o número de padrões encontrados ..... Eu ainda uso o Rattle, embora os modelos atuais sejam diferentes. Apenas para descobrir, teste uma ideia..... 20 a 30 minutos e a direção do desenvolvimento pode mudar radicalmente.

Uma meta muito limitada.

Além do artigo e do livro, ofereço serviços pagos. E cabe a cada um decidir se tenho as qualificações necessárias para realizar a lista de trabalhos anunciada. E eu, antes de aceitar um determinado pedido, decido se o cliente é capaz de entender o resultado do meu trabalho.

Arquivos anexados:
PredictTrend.zip  858 kb
 
faa1947:


1. formar um conjunto bastante grande de preditores, por exemplo, 50 peças com o número de barras 15000

2. Usando um dos algoritmos acima, selecionamos os preditores nessas 15 mil barras - geralmente obtemos de 15 a 20 partes, que são usadas na criação de modelos com mais frequência do que em 20% dos casos.

3. Em seguida, pegamos uma janela menor, por exemplo, 2.000 barras, e começamos a movê-la uma barra de cada vez, selecionando preditores significativos entre os 20 de 50 selecionados anteriormente.

4. A lista específica de preditores significativos muda o tempo todo.


1 Como? Você precisa de 60 anos de histórico diário?

2. O senhor está olhando para o futuro, ilustre colega. Você seleciona de 15 a 20 preditores em todo o histórico e depois os verifica na amostra "não treinada" das mesmas 15.000 barras? Se alguém me dissesse hoje quais 15-20 preditores serão "amostrados" no futuro, eu não precisaria de mais nada para me tornar um bilionário.

Eu uso o MatLab. Há muitas caixas de ferramentas diferentes lá. Portanto, você não precisa presumir que eu não conheço seus métodos. Tampouco deve presumir que eu tenha uma abordagem superficial ou superficial (apenas penso isso sobre sua abordagem). Todos podem usar diferentes pacotes e caixas de ferramentas. Mas nem todos podem entender sua essência. E você não precisa fazer propaganda de seus serviços e livros para mim. Meus problemas são muito mais complicados do que a definição de overtraining. Tenho 10 mil indicadores-previsores econômicos, e é muito difícil escolher aqueles que influenciam o mercado. Se eu analisar cada indicador individualmente, perderei situações como a do exemplo acima, quando a série-alvo não coincide com um dos indicadores, mas esse indicador está incluído no modelo da série-alvo. Se você analisar todas as combinações possíveis de diferentes preditores, não terá tempo suficiente para fazer isso. Até mesmo a pesquisa de dois preditores entre 10.000 leva mais de uma semana. Até o momento, tenho uma rede biológica de autoprogressão (leva muito tempo para explicar, você precisa de algum treinamento para entender) para selecionar N variáveis relevantes. Essa rede é mais rápida do que a pesquisa de todas as combinações possíveis de preditores, mas ainda é lenta. Portanto, se você tiver uma ideia brilhante de como determinar que x1 faz parte do modelo y observando apenas y e x1 no meu exemplo, eu lhe darei uma medalha de ouro.

 
gpwr:

1. Como é isso? São necessários 60 anos de história diária?

2. Você está olhando para o futuro, meu caro. Você seleciona 15-20 preditores em todo o histórico e depois os verifica na amostra "não treinada" das mesmas 15.000 barras? Se alguém me dissesse hoje quais 15-20 preditores serão "amostrados" no futuro, eu não precisaria de mais nada para me tornar um bilionário.

Eu uso o MatLab. Há muitas caixas de ferramentas diferentes lá. Portanto, você não precisa presumir que eu não conheço seus métodos. Tampouco deve presumir que tenho uma abordagem superficial ou diligente (que é exatamente o que penso de sua abordagem). Todos podem usar diferentes pacotes e caixas de ferramentas. Mas nem todos podem entender sua essência. E você não precisa fazer propaganda de seus serviços e livros para mim. Meus problemas são muito mais complicados do que a definição de overtraining. Tenho 10 mil indicadores-previsores econômicos, e é muito difícil escolher aqueles que influenciam o mercado. Se eu analisar cada indicador individualmente, perderei situações como a do exemplo acima, quando a série-alvo não coincide com um dos indicadores, mas esse indicador está incluído no modelo da série-alvo. Se você analisar todas as combinações possíveis de diferentes preditores, não terá tempo suficiente para fazer isso. Até mesmo a pesquisa de dois preditores entre 10.000 leva mais de uma semana. Até o momento, tenho uma rede biológica de autoprogressão para selecionar N variáveis relevantes (explicação longa, você precisa de algum treinamento para entender). Essa rede é mais rápida do que a pesquisa de todas as combinações possíveis de preditores, mas ainda é lenta. Portanto, se você tiver uma ideia brilhante de como determinar que x1 faz parte do modelo y observando apenas y e x1 no meu exemplo, eu lhe darei uma boa ideia.

1. Como é isso? São necessários 60 anos de histórico diário?

Não vamos exagerar.

Eu trabalho com forex. Prevejo tendências e fico bastante satisfeito com tendências que têm reversões de 50-100 pips. Não preciso de um histórico diário para isso. Em meus exemplos, este é o H1, 18.000 são três anos.

2. O senhor olha para o futuro, ilustre colega. Você seleciona 15-20 preditores em todo o histórico e depois os testa em uma amostra "não treinada" das mesmas 15.000 barras?

Eu já expliquei isso. É muito desejável que você leia o que estou explicando para você pessoalmente. Eu não olho para o futuro. O desempenho está sempre fora da amostra. O Rattle não oferece a outra possibilidade que você sugere, mesmo que eu quisesse.

Tenho problemas muito mais complexos do que definir o supertreinamento. Tenho 10 mil indicadores econômicos - indicadores de previsão, e é muito difícil escolher aqueles que influenciam o mercado. Se você analisar cada indicador individualmente,

Não existe uma pesquisa completa. As florestas aleatórias funcionam melhor quando o número de preditores é medido em milhares; certa vez, vi um número de 50 mil. Em meus dados, os números são os seguintes: 90 preditores, 10.000 linhas (barras) - tempo de treinamento do modelo de cerca de um minuto em um núcleo. Como resultado: rótulos de classe, probabilidade de rótulos de classe, importância de cada preditor na criação do modelo.

Essa rede é mais rápida do que uma pesquisa de todas as combinações possíveis de preditores,

Não há pesquisa de preditores. O algoritmo é o seguinte. Há um parâmetro - o número de preditores em um nó da árvore, com base no qual a decisão sobre a classificação é tomada. Você mesmo pode defini-lo, padrão = sqrt (eu tenho 90 do número máximo de preditores). Aproximadamente, 9 preditores são usados em cada nó. O algoritmo, ao considerar cada nó da árvore, sempre usa 9 preditores, mas sempre escolhe aleatoriamente entre o número total = 90. Por meio da validação cruzada, os preditores mais significativos são eventualmente selecionados e usados na construção final da árvore.

PS.

Por que você não usa o R? Se for pago, então SAS....

O Matlab não está entre os pacotes estatísticos especializados.

 
Explique, por favor, por que você se dá ao trabalho de selecionar preditores? Afinal de contas, os algoritmos modernos são capazes de processar milhares de preditores, mesmo que a maioria desses preditores seja aleatória. Nesse caso, os modelos são confiáveis.
 
CyberCortex:
Explique, por favor, por que você se dá ao trabalho de selecionar preditores? Afinal de contas, os algoritmos modernos são capazes de processar milhares de preditores, mesmo que a maioria desses preditores seja aleatória. E os modelos são confiáveis.

Infelizmente, esse não é o caso. Pelo menos não para mim.

Não tenho conhecimento de algoritmos de seleção de preditores (embora eu conheça várias dezenas de algoritmos de seleção), após os quais (algoritmos) o treinamento excessivo do modelo seria excluído.

A velha regra da estatística ainda se aplica: "Lixo entra - lixo sai".

 
faa1947:

Infelizmente, não é. Pelo menos para mim.

Não tenho conhecimento de nenhum algoritmo de seleção de preditores (embora conheça várias dezenas de algoritmos de seleção), após a operação dos quais (algoritmos) o treinamento excessivo do modelo seria excluído.

A antiga regra da estatística ainda se aplica: "Garbage in - rubbish out".

Não sei, testei meu programa e ele parece estar funcionando bem.

Se me permite citar o que escrevi em outro recurso: "Testamos a exatidão do programa nos dados retirados daqui:

http://archive.ics.uci.edu/ml/index.html

(Site do Centro de Aprendizado de Máquina e Sistemas Inteligentes).

Nesse caso, usamos dados de análise de sangue de pessoas saudáveis e de pessoas com câncer. A hipótese era criar um modelo capaz de prever o câncer em humanos com base em suas análises. A classificação foi exigida em duas classes (doente - não doente).

O tamanho do exemplo de treinamento foi de 10.000 recursos. 3.000 deles eram de natureza aleatória e foram adicionados especialmente para testar a qualidade da classificação. No total, 100 exemplos foram usados na amostra de treinamento, o que, sem dúvida, é muito pequeno, mas não conseguimos encontrar mais. Durante o teste, usamos outros exemplos no valor de 100 peças também.

http://archive.ics.uci.edu/ml/datasets/Arcene

(Link para o arquivo com os dados originais).

A precisão do reconhecimento foi de 75% em dados desconhecidos. Estamos convencidos de que, se houvesse mais dados para treinar, poderíamos aumentar significativamente a precisão das previsões." Fim da citação.

P.S.: O tempo de treinamento levou cerca de 2 minutos em um PC com um processador de 8 núcleos e 8 Gb de memória, porque o tempo de treinamento do algoritmo não cresce exponencialmente com o número de preditores. E os preditores não informativos não são usados automaticamente.

Se alguém estiver interessado, aqui está o link cybercortex.blogspot.ru (não considere isso uma propaganda:)

 
CyberCortex:

Não sei, testei meu programa e tudo parece estar bem.

Se me permite citar o que escrevi em outro recurso: "Testamos a exatidão do programa com os dados obtidos aqui:

, como indicadores. E, como se vê, é muito fácil incluir vários tipos de lixo no modelo e a regra "entra lixo - sai lixo" começa a funcionar.

A inclusão de preditores indesejados no modelo, ou seja, preditores que têm uma influência fraca sobre a variável-alvo, leva ao treinamento excessivo do modelo, no qual tudo está bem na amostra de treinamento, mas surgem problemas fora da amostra.

 
faa1947:

Você tem um exemplo excelente e típico para mostrar o problema.

1. Na superfície, há o fato de que, diferentemente do seu exemplo, todas as séries financeiras pertencem à chamada série temporal, na qual a ordem dos valores é importante. Portanto, os modelos dos mercados financeiros, diferentemente dos modelos da medicina, devem levar em conta essa nuance.

2. Mas há uma circunstância muito mais séria, que está diretamente relacionada ao tópico de sua pergunta.

Na medicina, a solução da questão "doente-não doente" refere-se ao diagnóstico, e isso é metade de toda a medicina. Muitas pessoas pesquisam, justificam, procuram "preditores" em nossa terminologia, que, de acordo com esses pesquisadores, são relevantes para o veredicto "doente ou não doente". Não vemos nada do gênero no mercado de câmbio. No mercado de ações, é comum a pesquisa sobre a relação entre as causas econômicas e a direção do movimento, mas nada disso se aplica a intervalos intradiários.

Portanto, ao criar modelos de aprendizado de máquina em intervalos intradiários, são usados valores formais e matemáticos , como indicadores. E, como se vê, é muito fácil incluir vários tipos de lixo no modelo e a regra "entra lixo - sai lixo" começa a funcionar.

A inclusão de preditores de lixo no modelo, ou seja, preditores que têm uma influência fraca sobre a variável-alvo, leva ao retreinamento do modelo, no qual tudo está bem na amostra de treinamento, mas fora da amostra há problemas.

1. "Todas as séries financeiras pertencem à chamada série temporal, na qual a ordem dos valores é importante." - Ninguém nega isso e essa ordem não é violada, mesmo sendo uma série temporal. Você, depois de treinar o modelo com os preços P1, P2, P3... Pn, não altera a ordem deles ao testar em Out Of Samples ou em uso real.

2. Concordo com você em uma coisa: se a entrada for 100% de preditores ruins, obteremos 100% de lixo na saída. Isso é óbvio e ninguém está discutindo isso. Tudo o que estou dizendo é que há algoritmos em que não faz diferença selecionar os dados, pois eles apresentam bons resultados em Out Of Samples com qualquer quantidade de dados inúteis que não seja 100%, porque os dados inúteis não são usados de fato. Aqui também é importante distinguir entre algoritmos para os quais a redução da dimensionalidade dos dados é essencial, como a análise de componentes principais ou autoencoders, e algoritmos que não são sensíveis à dimensionalidade dos dados.

"No mercado de ações, a pesquisa sobre a relação entre as causas econômicas e a direção do movimento é comum, mas nada disso se aplica a intervalos intradiários." - Bem, sim, e isso se aplica a intervalos intradiários, como a divulgação do Non-Farm Payrolls.

3. é claro que eu o entendo, cada um ganha o que pode, mas você já implementou algum algoritmo de aprendizado de máquina? Estou convencido de que, para entender como um algoritmo funciona, você mesmo precisa escrevê-lo do zero. Acredite em mim, nesse caso você descobrirá coisas que não estão escritas em livros. E mesmo elementos aparentemente óbvios que pareciam fáceis antes, na verdade funcionam de forma diferente do que você pensava:) Com os melhores cumprimentos.

 
faa1947:

Além disso, ao criar modelos de aprendizado de máquina em intervalos intradiários, são usados valores formais e matemáticos , como indicadores. E, como se vê, é muito fácil incluir vários tipos de lixo no modelo e a regra "entra lixo - sai lixo" começa a funcionar.

E sim, a propósito, não é necessário usar "quantidades matemáticas como indicadores". Você pode criar muitas de suas próprias heurísticas ligadas a preço, volume, tempo e delta, se quiser. Os únicos indicadores matemáticos que eu usaria e que são realmente matemáticos são a média, o desvio padrão e a correlação.
 
CyberCortex:
....

3. é claro que eu o entendo, cada um ganha como sabe, mas você já implementou algum algoritmo de aprendizado de máquina? Estou convencido de que, para entender como um algoritmo funciona, você mesmo precisa escrevê-lo do zero. Acredite em mim, nesse caso você descobrirá coisas que não estão escritas nos livros. E mesmo elementos aparentemente óbvios que pareciam fáceis antes, na verdade funcionam de forma diferente do que você pensava:) Com todo o respeito.

Eu não poderia deixar passar essa frase. Respeitosamente!