Redes Neurais - página 14

 
Sim, treinamento vs. previsto. Eu construí uma nova rede com os primeiros 6-7 anos de dados usados para treinar, testar e validar transversalmente. Depois alimentei os 3 anos restantes de dados como um teste sem aprendizagem, sendo a idéia imitar um teste ao vivo. A linha de regressão do treinamento tinha uma inclinação de 0,99995 e quando a alimentei com cerca de 3 anos de dados antes não vistos que mergulharam para 0,9995. Não tenho certeza de como interpretar isto. Parece um pouco exato demais para algo que eu juntei em menos de uma hora.

Vou explicar a você usando um exemplo.

Vamos dizer que você quer prever uma variável que pode ter valores de 100 a 250 /como GBPJPY/. Você quer prever etapas de tempo muito pequenas em comparação com dados de treinamento /como H1 ou H4/. Para alguma etapa o valor desejado é, digamos, 174.850 e a saída NN é 176.350. O erro é muito pequeno / cerca de 0,8%/ mas em termos de Forex o erro é grande - 150 pips.

É muito mais fácil prever a taxa de retorno normal ou logarítmica. Mesmo que você cometa um erro, o resultado provavelmente ainda será útil /se você prever um aumento de 20% do preço, e realmente é 10%, mesmo que o erro seja 50% o resultado ainda é muito ok/.

Certamente, se você gerar a primeira população ao acaso, não há uma chance de gerar uma população na qual nenhum programa resolva o problema?

É impossível.

Mesmo que o NN dê uma previsão muito ruim, ainda assim é uma solução.

Mais do que dizer que a área de trabalho média poderia lidar

Você pode usar um computador de mesa. Hoje, os computadores são muito melhores do que aqueles de onde eu comecei.

 

mrwobbles,

Você seria tão gentil e nos informaria sobre suas entradas e saídas para seus resultados NN? Eu gostaria de passar por NeuroShell e ver se posso gerar o nível de correlação R em torno do mesmo aperto. Obrigado de antemão.

 
Kazam:
Explicarei isso a você usando um exemplo.

Digamos que você queira prever uma variável que pode ter valores de 100 a 250 /como GBPJPY/. Você quer prever etapas de tempo muito pequenas em comparação com dados de treinamento /como H1 ou H4/. Para alguma etapa o valor desejado é, digamos, 174.850 e a saída NN é 176.350. O erro é muito pequeno / cerca de 0,8%/ mas em termos de Forex o erro é grande - 150 pips.

É muito mais fácil prever a taxa de retorno normal ou logarítmica. Mesmo que você cometa um erro, o resultado provavelmente ainda será útil /se você prever um aumento de 20% do preço, e é realmente 10%, mesmo que o erro seja 50%, o resultado ainda é muito bom/.

Sim, mas estou falando de erros uma ordem de magnitude menor do que isso. O erro médio em pips da rede que treinei é cerca de 10-20, o que está se aproximando de um nível aceitável. Ainda existem alguns resultados anômalos, alguns com mais de 100 pips, o que é obviamente inaceitável.

Isso é impossível.

Mesmo que o NN dê uma previsão muito ruim, ainda é uma solução.

Sim, acho que você poderia chamá-los de soluções, mas começar com uma população aleatória não levaria a um tempo de convergência mais longo? Nesse caso, começar com uma população de redes pré-treinadas certamente aceleraria a convergência da rede e, espera-se, resultaria em resultados mais precisos.

 
Sim, mas estou falando de erros uma ordem de magnitude menor do que isso. O erro médio em pips da rede que treinei é cerca de 10-20, o que está se aproximando de um nível aceitável. Ainda existem alguns resultados anômalos, alguns com mais de 100 pips, o que é obviamente inaceitável.

Mas você ainda está olhando para os dados do treinamento. Eu fiz um exemplo rápido - veja a foto abaixo. As medidas de erro são pequenas, o coeficiente de correlação é muito alto, mas veja o que acontece quando você tenta prever os próximos 10 passos.

Sim, acho que você poderia chamá-los de soluções, mas começar com uma população aleatória não levaria a um tempo de convergência mais longo? Nesse caso, começar com uma população de redes pré-treinadas certamente aceleraria a convergência da rede e, espera-se, resultaria em resultados mais precisos.

A aleatoriedade é a chave

Com muitas redes aleatórias, você tem uma chance maior de encontrar a melhor solução possível no final. Veja a segunda foto. Se você fizer uma pré seleção de NN's você pode ficar preso ao ótimo local, mas se você usar NN's aleatórios você tem uma chance maior de encontrar o ótimo global.

É claro que há maneiras de superar o problema de ficar preso ao ótimo local.

Arquivos anexados:
 

Esse pensamento tinha passado pela minha cabeça. Quero dizer, se a população de NNs pré-treinados for muito pequena ou com pouca variação genética, então algumas soluções podem não ser consideradas. Como você disse, há sempre a chance de escolher 12 NNs que estão todos presos a diferentes mínimos locais e isso não seria bom. Ou pior ainda, 12 NNs que estão todos presos ao mesmo mínimo local. Embora você sempre pudesse codificar algumas mutações genéticas aleatórias para tentar aumentar o estoque genético, a cada 10 gerações, dizem. Começando com uma estrutura completamente aleatória, você garantiria que a maioria das possibilidades fossem consideradas.

Ah, estou vendo, ok, acabei de descobrir como usar a rede depois de sua formação, a função sim aparentemente... oh as alegrias de arquivos de ajuda Você terá que perdoar minha ignorância, eu sou bastante novo a trabalhar com NNs. Eu teria ficado desapontado se tivesse resolvido isso tão facilmente. Isto é suposto ser o que estou fazendo durante as férias de verão bem isso e trabalhando

Edição: Treinei a rede nos primeiros 7 anos de dados e depois simulei seu desempenho nos últimos anos de entradas. O erro médio em pips foi de 40, mas se você olhar para o gráfico, ele recebe os primeiros 1500 pontos bonitos, então ele o perde e começa a errar o preço, mas a direção está, na maioria das vezes, certa. Aí ele atinge cerca de 10.000 e o pega novamente (bem a tempo para o grande acidente). Dê uma olhada nisto e me diga o que você pensa. O azul escuro é o alvo azul claro de saída. Btw Eu não forneci à rede alvos que estavam sobrepostos para análise.

Arquivos anexados:
gbpjpy60-4.jpg  40 kb
gbpjpy60-8.jpg  55 kb
 

Não posso dizer nada olhando para as fotos porque pode haver um "efeito de sombra" e as fotos são muito pequenas para dizer isso.

Mas posso lhe dizer como verificar se o NN está bem. Exportar / há uma exportação e um assistente de importação em Matlab/ a saída de teste para um arquivo XLS ou CSV / arquivo Excel/. Depois coloque os valores reais ao lado da saída do NN e na coluna seguinte coloque uma fórmula que verifique se o NN previu a direção correta do movimento de preços.

Ao contar quantos "1" você obtém, você saberá a precisão da rede.

O usuário pode escrever uma fórmula que calcula o lucro e a perda para cada passo. Veja a foto abaixo / Estou usando a versão polonesa do Excel para não saber se acertei as fórmulas /. Pule o spread por enquanto.

Arquivos anexados:
 

Oi Kazam,

İs é possível implementar este pacote NN para Metatrader?

Arquivos anexados:
example.zip  106 kb
 

Parece que pode estar tudo bem, eu passei a fórmula pela planilha do Open Office e ela retornou 73% de precisão na direção do comércio. Ainda tenho mais alguns dados para dar à rede que eu acho que irá melhorar a precisão. Aqui está a planilha, salvei-a no formato xls, você deve ser capaz de lê-la.

Arquivos anexados:
gj60.rar  831 kb
 

Em amostra, fora de amostra

mrwobbles:
Parece que pode estar tudo bem, eu passei a fórmula pela planilha do Open Office e ela retornou 73% de precisão na direção do comércio. Ainda tenho mais alguns dados para dar à rede que eu acho que irá melhorar a precisão. Aqui está a planilha, salvei-a no formato xls, você deve ser capaz de lê-la.

Bom...Em amostra ou fora de amostra?

Grande diferença fará em sua conta,73% Em amostra é um assassino de conta,73% Fora de amostra é um talvez...

Tente acreditar apenas nos resultados da amostra, e quanto menos entradas você tiver, menos sobreposição terá...então, se você adicionar novas entradas, pense em apagar algumas das antigas ...ou expandir o conjunto de dados fora de amostra no qual você forjará suas crenças

Como uma regra geral: Menos entradas, menos conexões, mais pontos de amostra... melhor generalização.

Cumprimentos

Simba

 

biddick

É uma DLL, então dê uma olhada aqui:

http://www.metatrader.info/node/150[/CODE]

There's an example of how to use DLL functions in Metatrader.

mrwobbles

It's either the training data or you got something wrong - the results are to good .

If one could get an accuracy of 73% with a simple back propagation network no one would give a shit about more complicated stuff

SIMBA

You're right. Choosing the proper input is a the most important thing in the process of creating a NN /there's a rule "trash goes in, trash comes out" /.

But you can always use data mining tools to analyze many different variables and choose those that affect the one you want to predict.

There's a nice book about data minig /and about genetic algorithms, Bayesian classification etc./ - "Data Mining Methods and Models." by Daniel T. Larose. It also shows how to use WEKA /a free, open source software for machine learning/.

My preferred way is to use GA - for the propose of time series prediction I usually allow them to choose from 15-40 previous steps.

PS

I've mentioned using Bayesian probability for the classification tasks but it can also be used for time series prediction

[CODE]http://www.cis.hut.fi/juha/papers/ESTSPfinal.pdf