Formação, reconversão e sobretreinamento são coisas fundamentalmente diferentes.
Todo este treinamento em cada novo bar é mastigado e mastigado neste fórum e, em geral, dentro da TA.
Na luta contra o supertreinamento (superfitting) eu conheço dois métodos.
1. limpeza do conjunto de preditores a partir de preditores não relacionados com a variável alvo - limpeza a partir do ruído do conjunto de preditores de entrada. Os primeiros 100 posts deste tópico discutiram-no em detalhe.
2. Com a limpeza do conjunto de preditores a partir do ruído, começamos a ajustar o modelo com amostra de treino, depois com amostra de teste e validação, que são amostras aleatórias de um ficheiro. O erro em todos os três conjuntos deve ser aproximadamente o mesmo.
3. Depois pegue um arquivo separado do anterior e execute o modelo nele. Mais uma vez o erro deve ser mais ou menos o mesmo que os anteriores.
4. Se estas verificações forem realizadas regularmente, a pergunta "uma queda de 20% é um sinal para a reciclagem" não será de todo colocada, uma vez que os três primeiros passos resultaram numa queda como parâmetro do modelo e ir além diz que o modelo não está a funcionar e que tudo deve ser recomeçado.
Bem, isto é tudo um caso geral, sim. E em cada caso você precisa trabalhar mais com cada TS em particular, e então o entendimento virá quando ele estiver bem treinado, quando ele estiver requalificado, e quando ele tiver períodos. Por exemplo, a relação compra/venda deve ser aproximadamente a mesma, e a amostra de treino deve conter tendência para cima, para baixo e plana, caso contrário é um empate de sentido único. O principal neste caso é não se "sobretreinar" :)
Além disso, factor sazonal, factor de crise e outras muitas regularidades diferentes que precisam de ser tidas em conta
1. limpeza do conjunto de preditores a partir de preditores irrelevantes para a variável alvo - limpeza do ruído do conjunto de preditores de entrada. Nos primeiros 100 marcos desta linha, esta questão foi discutida em grande detalhe.
Que solução finalmente surgiu - como identificar os preditores não relacionados com os comandos de saída?
A neurônica e quase todos os outros modelos populares estão muito longe da inteligência artificial. Eles podem simplesmente encontrar tais combinações de valores preditores que atingem a precisão de aprendizagem desejada, e em previsões futuras eles interpolam (ou extrapolam) os resultados passados para obter uma nova previsão.
Isso significa que se tomarmos, por exemplo, Ma, Rci e Stochastic para preditores e treinarmos a rede neural usando reversões em ziguezague como objetivo de treinamento - diremos à rede neural que "esses três preditores podem prever reversões". E a própria rede neural não saberá se estes preditores realmente se encaixam. Ele se lembrará desses dados com precisão aceitável e na negociação esperamos que as mesmas combinações de Ma, Rci e Stochastic sejam salvas antes da reversão. Mas eles não vão, e isso vai falhar.
Um modelo baseado em preditores inúteis irá falhar, não importa se é gbm, neurônio ou regressão. Você pode até mesmo gerar séries aleatórias e usá-las como preditores, a neurônica encontrará combinações recorrentes entre elas e se lembrará delas. É tarefa de um mineiro de dados humanos selecionar os preditores e a finalidade do treinamento, usando outras ferramentas. E treinar o modelo (o neurónio) é um pequeno penúltimo passo.
Os preditores devem manter a correlação com o alvo nos dados de treinamento, tanto no passado como no futuro. É por isso que SanSanych fala sobre testar o modelo em diferentes arquivos, apenas para garantir que as dependências encontradas não desapareçam com novos dados. Isto é, estudamos e coletamos cuidadosamente os preditores e o alvo, treinamos o modelo e o testamos. Depois testamos em dados completamente novos para o modelo. Se a precisão da previsão em ambos os casos não coincidiu, os preditores ou o alvo não são adequados. Devíamos procurar outros.
SanSanych Fomenko:
A NS pode prever séries não estacionárias? Em caso afirmativo, que tipos de não-estacionariedade?
Na minha opinião, a neurônica é completamente inadequada para trabalhar com preço para prever séries cronológicas não-estacionárias. O comportamento dos preços está em constante mudança, os padrões encontrados param de funcionar depois do horário de trabalho, tudo é caótico. E então alguém pega num neurónio, dá-lhe preços durante alguns meses e pede para encontrar as dependências que se repetem durante este tempo. Mas não há dependências repetidas e o que o neurônio pode encontrar e lembrar será apenas uma coincidência 100% aleatória.
Se vamos usar neurônica, devemos dar-lhe apenas preços processados (não ohlc puro), por exemplo, indicadores.
Obrigado pelo resumo, não me apeteceu ler 100 páginas...)
O processo de seleção manual dos preditores, por exemplo, por combinações de 3 pcs. demorará muito tempo. No MT5 existem 38 indicadores técnicos padrão. Combinações de 3 - número enorme. Além disso, precisamos selecionar períodos, tipos de preços e outros parâmetros de entrada. E se adicionarmos indicadores não-padronizados interessantes, o número de testes irá aumentar ainda mais.
Portanto, devemos procurar uma estimativa automática de indicadores. Encontrei dois métodos comuns nos artigos de Vladimir Perervenko:
1) Remoção de variáveis altamente correlacionadas - é implementado em R.
2) Seleção das variáveis mais importantes - também resolvidas em R.
Eu ainda estou escrevendo diretamente no MT5, pode haver soluções prontas para estas perguntas? Ou um método de transferência de soluções de R para MT5, pelo menos na versão simplificada....?
Se procurarmos a correlação dos indicadores, simplesmente procuramos a diferença entre cada par de indicadores -> resumir para cada barra -> dividir pelo número de barras. (ou de outra forma?)
Com os mais importantes - não completamente resolvidos...
Talvez haja outros métodos para limpar os preditores?
Mas ainda estou a escrever directamente no MT5, talvez já existam soluções prontas para estes problemas? Ou um método de transferência de soluções de R para MT5, pelo menos em uma versão simplificada....?
Escrever tudo de uma só vez em MQL, mas confiar em R não é a melhor opção. É mais fácil desenvolver uma estratégia em R, então usando esta biblioteca https://www.mql5.com/ru/code/17468 para chamar o código R do Expert Advisor e testá-lo no testador. Muito provavelmente muita coisa será apagada e alterada durante a criação e teste, alterações de pacotes, modelos, etc., é mais fácil de alterar e testar tudo em R propriamente dito.
Finalmente, quando você gosta e tudo funciona, você pode tentar portar o código para o mql à mão. Muitos pacotes usados em R são na verdade escritos em C/C++ e você pode encontrar o código fonte para pacotes padrão aquihttps://cran.r-project.org/web/packages/available_packages_by_name.html,
A neurônica e quase todos os outros modelos populares estão muito longe da inteligência artificial. Eles podem simplesmente encontrar tais combinações de valores preditores que atingem a precisão de aprendizagem desejada, e em previsões futuras eles interpolam (ou extrapolam) os resultados passados para obter uma nova previsão.
Isso significa que se tomarmos, por exemplo, Ma, Rci e Stochastic para preditores e treinarmos a rede neural usando reversões em ziguezague como objetivo de treinamento - diremos à rede neural que "esses três preditores podem prever reversões". E a própria rede neural não saberá se estes preditores realmente se encaixam. Ele se lembrará desses dados com precisão aceitável e na negociação esperamos que as mesmas combinações de Ma, Rci e Stochastic sejam salvas antes da reversão. Mas eles não vão, e isso vai falhar.
Um modelo treinado em preditores inúteis falhará, seja em gbm, neurônica ou regressão. Você pode até mesmo gerar séries aleatórias e usá-las como preditores, a neurônica encontrará entre elas combinações repetitivas e se lembrará delas. É tarefa de um mineiro de dados humanos selecionar os preditores e a finalidade do treinamento, usando outras ferramentas. E treinar o modelo (o neurónio) é um pequeno penúltimo passo.
Os preditores devem manter a correlação com o alvo nos dados de treinamento, tanto no passado como no futuro. É por isso que SanSanych fala sobre testar o modelo em diferentes arquivos, apenas para garantir que as dependências encontradas não desapareçam com novos dados. Isto é, estudamos e coletamos cuidadosamente os preditores e o alvo, treinamos o modelo e o testamos. Depois testamos em dados completamente novos para o modelo. Se a precisão da previsão em ambos os casos não coincidiu, os preditores ou o alvo não são adequados. Devíamos procurar outro.
Na minha opinião, a neurónica não é adequada para prever séries cronológicas não estacionárias. O comportamento dos preços está em constante mudança, os padrões encontrados param de funcionar depois do horário de trabalho, tudo é caótico. E depois alguém pega num neurónio, dá-lhe preços durante alguns meses e pede para encontrar as dependências que se repetem durante este tempo. Mas não há dependências repetidas e o que o neurônio pode encontrar e lembrar será apenas uma coincidência 100% aleatória.
Se usamos um neurônio, então podemos dar-lhe apenas preços processados (não puro ohlc), por exemplo, indicadores.
O problema não é a neurônica em si ou qualquer outra coisa aplicável aos mercados. O problema é o que é introduzido na ferramenta DM. E é pura loucura usar um preço nú como insumo.
O problema são os preditores, como a CC os chama. Ou seja, o problema é como representar uma série não estacionária como estacionária. Quem estiver mais próximo de resolver este problema é o melhor.
Não é a melhor solução para escrever tudo em MQL, confiando no R ao mesmo tempo. É mais fácil desenvolver a estratégia em R e depois, usando esta biblioteca https://www.mql5.com/ru/code/17468, chamar o código R do Expert Advisor e testá-lo no Strategy Tester. Muito provavelmente enquanto se cria e testa muitas coisas serão apagadas e alteradas, os pacotes serão substituídos, os modelos serão alterados, etc. É mais fácil alterar e testar tudo no próprio R.
Finalmente, quando você gosta e tudo funciona, você pode tentar portar o código para o mql à mão. Muitos pacotes usados em R são na verdade escritos em C/C++ e você pode encontrar o código fonte para pacotes padrão aquihttps://cran.r-project.org/web/packages/available_packages_by_name.html,
É complicado... Levaria mais tempo do que compreender o algoritmo (como para a correlação K acima) e escrevê-lo. Penso que a função de tentar todas as entradas, calcular a correlação e peneirar as altamente correlacionadas levará um par de horas.
Espero que seja tão fácil de usar outras soluções para peneirar os preditores).
Então, há outras soluções para encontrar preditores desnecessários?
Formação, reconversão e sobretreinamento são coisas fundamentalmente diferentes.
Todo este treinamento em cada novo bar é mastigado e mastigado neste fórum e, em geral, dentro da TA.
Na luta contra o supertreinamento (superfitting) eu conheço dois métodos.
1. limpeza do conjunto de preditores a partir de preditores não relacionados com a variável alvo - limpeza a partir do ruído do conjunto de preditores de entrada. Os primeiros 100 posts deste tópico discutiram-no em detalhe.
2. Com a limpeza do conjunto de preditores a partir do ruído, começamos a ajustar o modelo com amostra de treino, depois com amostra de teste e validação, que são amostras aleatórias de um ficheiro. O erro em todos os três conjuntos deve ser aproximadamente o mesmo.
3. Depois pegue um arquivo separado do anterior e execute o modelo nele. Mais uma vez o erro deve ser mais ou menos o mesmo que os anteriores.
4. Se estas verificações forem realizadas regularmente, a pergunta "uma queda de 20% é um sinal para a reciclagem" não será de todo colocada, uma vez que os três primeiros passos resultaram numa queda como parâmetro do modelo e ir além diz que o modelo não está a funcionar e que tudo deve ser recomeçado.
Bem, isto é tudo um caso geral, sim. E em cada caso você precisa trabalhar mais com cada TS em particular, e então o entendimento virá quando ele estiver bem treinado, quando ele estiver requalificado, e quando ele tiver períodos. Por exemplo, a relação compra/venda deve ser aproximadamente a mesma, e a amostra de treino deve conter tendência para cima, para baixo e plana, caso contrário é um empate de sentido único. O principal neste caso é não se "sobretreinar" :)
Além disso, factor sazonal, factor de crise e outras muitas regularidades diferentes que precisam de ser tidas em conta
1. limpeza do conjunto de preditores a partir de preditores irrelevantes para a variável alvo - limpeza do ruído do conjunto de preditores de entrada. Nos primeiros 100 marcos desta linha, esta questão foi discutida em grande detalhe.
Qual foi a solução final - como definir os preditores que não estão relacionados com os comandos de saída?
Como? - Tudo depende das especificidades. Demorei dois dias a resolver um problema simples. Agora a solução parece óbvia)).
Presumo que também existam princípios gerais e universais? Bem, também é interessante saber sobre o seu exemplo particular.
Procura-o no meu blog.
Os princípios, sim, são universais. Mas não há soluções gerais. Excepto para algumas classes de tarefas.
Um resumo das cem páginas anteriores :)
A neurônica e quase todos os outros modelos populares estão muito longe da inteligência artificial. Eles podem simplesmente encontrar tais combinações de valores preditores que atingem a precisão de aprendizagem desejada, e em previsões futuras eles interpolam (ou extrapolam) os resultados passados para obter uma nova previsão.
Isso significa que se tomarmos, por exemplo, Ma, Rci e Stochastic para preditores e treinarmos a rede neural usando reversões em ziguezague como objetivo de treinamento - diremos à rede neural que "esses três preditores podem prever reversões". E a própria rede neural não saberá se estes preditores realmente se encaixam. Ele se lembrará desses dados com precisão aceitável e na negociação esperamos que as mesmas combinações de Ma, Rci e Stochastic sejam salvas antes da reversão. Mas eles não vão, e isso vai falhar.
Um modelo baseado em preditores inúteis irá falhar, não importa se é gbm, neurônio ou regressão. Você pode até mesmo gerar séries aleatórias e usá-las como preditores, a neurônica encontrará combinações recorrentes entre elas e se lembrará delas.
É tarefa de um mineiro de dados humanos selecionar os preditores e a finalidade do treinamento, usando outras ferramentas. E treinar o modelo (o neurónio) é um pequeno penúltimo passo.
Os preditores devem manter a correlação com o alvo nos dados de treinamento, tanto no passado como no futuro. É por isso que SanSanych fala sobre testar o modelo em diferentes arquivos, apenas para garantir que as dependências encontradas não desapareçam com novos dados.
Isto é, estudamos e coletamos cuidadosamente os preditores e o alvo, treinamos o modelo e o testamos. Depois testamos em dados completamente novos para o modelo. Se a precisão da previsão em ambos os casos não coincidiu, os preditores ou o alvo não são adequados. Devíamos procurar outros.
A NS pode prever séries não estacionárias? Em caso afirmativo, que tipos de não-estacionariedade?
Na minha opinião, a neurônica é completamente inadequada para trabalhar com preço para prever séries cronológicas não-estacionárias. O comportamento dos preços está em constante mudança, os padrões encontrados param de funcionar depois do horário de trabalho, tudo é caótico. E então alguém pega num neurónio, dá-lhe preços durante alguns meses e pede para encontrar as dependências que se repetem durante este tempo. Mas não há dependências repetidas e o que o neurônio pode encontrar e lembrar será apenas uma coincidência 100% aleatória.
Se vamos usar neurônica, devemos dar-lhe apenas preços processados (não ohlc puro), por exemplo, indicadores.
Obrigado pelo resumo, não me apeteceu ler 100 páginas...)
O processo de seleção manual dos preditores, por exemplo, por combinações de 3 pcs. demorará muito tempo. No MT5 existem 38 indicadores técnicos padrão. Combinações de 3 - número enorme. Além disso, precisamos selecionar períodos, tipos de preços e outros parâmetros de entrada. E se adicionarmos indicadores não-padronizados interessantes, o número de testes irá aumentar ainda mais.
Portanto, devemos procurar uma estimativa automática de indicadores. Encontrei dois métodos comuns nos artigos de Vladimir Perervenko:
1) Remoção de variáveis altamente correlacionadas - é implementado em R.
2) Seleção das variáveis mais importantes - também resolvidas em R.
Eu ainda estou escrevendo diretamente no MT5, pode haver soluções prontas para estas perguntas? Ou um método de transferência de soluções de R para MT5, pelo menos na versão simplificada....?
Se procurarmos a correlação dos indicadores, simplesmente procuramos a diferença entre cada par de indicadores -> resumir para cada barra -> dividir pelo número de barras. (ou de outra forma?)
Com os mais importantes - não completamente resolvidos...
Talvez haja outros métodos para limpar os preditores?
Mas ainda estou a escrever directamente no MT5, talvez já existam soluções prontas para estes problemas? Ou um método de transferência de soluções de R para MT5, pelo menos em uma versão simplificada....?
Escrever tudo de uma só vez em MQL, mas confiar em R não é a melhor opção. É mais fácil desenvolver uma estratégia em R, então usando esta biblioteca https://www.mql5.com/ru/code/17468 para chamar o código R do Expert Advisor e testá-lo no testador.
Muito provavelmente muita coisa será apagada e alterada durante a criação e teste, alterações de pacotes, modelos, etc., é mais fácil de alterar e testar tudo em R propriamente dito.
Finalmente, quando você gosta e tudo funciona, você pode tentar portar o código para o mql à mão.
Muitos pacotes usados em R são na verdade escritos em C/C++ e você pode encontrar o código fonte para pacotes padrão aquihttps://cran.r-project.org/web/packages/available_packages_by_name.html,
Um resumo das cem páginas anteriores :)
A neurônica e quase todos os outros modelos populares estão muito longe da inteligência artificial. Eles podem simplesmente encontrar tais combinações de valores preditores que atingem a precisão de aprendizagem desejada, e em previsões futuras eles interpolam (ou extrapolam) os resultados passados para obter uma nova previsão.
Isso significa que se tomarmos, por exemplo, Ma, Rci e Stochastic para preditores e treinarmos a rede neural usando reversões em ziguezague como objetivo de treinamento - diremos à rede neural que "esses três preditores podem prever reversões". E a própria rede neural não saberá se estes preditores realmente se encaixam. Ele se lembrará desses dados com precisão aceitável e na negociação esperamos que as mesmas combinações de Ma, Rci e Stochastic sejam salvas antes da reversão. Mas eles não vão, e isso vai falhar.
Um modelo treinado em preditores inúteis falhará, seja em gbm, neurônica ou regressão. Você pode até mesmo gerar séries aleatórias e usá-las como preditores, a neurônica encontrará entre elas combinações repetitivas e se lembrará delas.
É tarefa de um mineiro de dados humanos selecionar os preditores e a finalidade do treinamento, usando outras ferramentas. E treinar o modelo (o neurónio) é um pequeno penúltimo passo.
Os preditores devem manter a correlação com o alvo nos dados de treinamento, tanto no passado como no futuro. É por isso que SanSanych fala sobre testar o modelo em diferentes arquivos, apenas para garantir que as dependências encontradas não desapareçam com novos dados.
Isto é, estudamos e coletamos cuidadosamente os preditores e o alvo, treinamos o modelo e o testamos. Depois testamos em dados completamente novos para o modelo. Se a precisão da previsão em ambos os casos não coincidiu, os preditores ou o alvo não são adequados. Devíamos procurar outro.
Na minha opinião, a neurónica não é adequada para prever séries cronológicas não estacionárias. O comportamento dos preços está em constante mudança, os padrões encontrados param de funcionar depois do horário de trabalho, tudo é caótico. E depois alguém pega num neurónio, dá-lhe preços durante alguns meses e pede para encontrar as dependências que se repetem durante este tempo. Mas não há dependências repetidas e o que o neurônio pode encontrar e lembrar será apenas uma coincidência 100% aleatória.
Se usamos um neurônio, então podemos dar-lhe apenas preços processados (não puro ohlc), por exemplo, indicadores.
O problema não é a neurônica em si ou qualquer outra coisa aplicável aos mercados. O problema é o que é introduzido na ferramenta DM. E é pura loucura usar um preço nú como insumo.
O problema são os preditores, como a CC os chama. Ou seja, o problema é como representar uma série não estacionária como estacionária. Quem estiver mais próximo de resolver este problema é o melhor.
Não é a melhor solução para escrever tudo em MQL, confiando no R ao mesmo tempo. É mais fácil desenvolver a estratégia em R e depois, usando esta biblioteca https://www.mql5.com/ru/code/17468, chamar o código R do Expert Advisor e testá-lo no Strategy Tester.
Muito provavelmente enquanto se cria e testa muitas coisas serão apagadas e alteradas, os pacotes serão substituídos, os modelos serão alterados, etc. É mais fácil alterar e testar tudo no próprio R.
Finalmente, quando você gosta e tudo funciona, você pode tentar portar o código para o mql à mão.
Muitos pacotes usados em R são na verdade escritos em C/C++ e você pode encontrar o código fonte para pacotes padrão aquihttps://cran.r-project.org/web/packages/available_packages_by_name.html,
É complicado... Levaria mais tempo do que compreender o algoritmo (como para a correlação K acima) e escrevê-lo. Penso que a função de tentar todas as entradas, calcular a correlação e peneirar as altamente correlacionadas levará um par de horas.
Espero que seja tão fácil de usar outras soluções para peneirar os preditores).
Então, há outras soluções para encontrar preditores desnecessários?