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

 
elibrarius:
Acho que SanSanych pretendia não se preocupar em escrever seu próprio código, mas sim em usar funções prontas de R

Não se trata apenas do código. O código pronto é para implementar algumas ideias.

Ver

gafs - seleção de preditores por algoritmo genético
e o modelo final é baseado num subconjunto do preditor, que está ligado ao número óptimo de gerações determinado pela reamostragem


rfe - seleção retrospectiva de preditores

implementa a seleção regressiva de preditores com base no ranking de importância do preditor.

Os preditores são ordenados, e os menos importantes são removidos sequencialmente antes da modelação.

O objetivo é encontrar um subconjunto de preditores que possa ser usado por um modelo mais preciso.

cofres - - robustez de seleção de preditor simulada (recozimento de preditor)

Durante uma busca, é necessáriauma medida de aptidão (ou seja, o valor energético da SA) para a busca. Esta é uma medida interna de desempenho. Durante a pesquisa, os dados que estão disponíveis são as instâncias selecionadas por reamostragem de alto nível (por exemplo, as nove décimas partes mencionadas acima). A abordagem geral deve fazer um procedimento de reamostragem diferente. A outra opção deve usar múltiplos out-of-samples para determinar a avaliação interna do desempenho


Ao fazer isso, lembre-se sempre: "lixo dentro, lixo fora".

 
SanSanych Fomenko:

Não se trata apenas do código. O código pronto é para implementar algumas ideias.

Ver

gafs - seleção de preditores por algoritmo genético
e o modelo final é baseado em um subconjunto do preditor, que é anexado com o número ótimo de gerações determinado pela resamostragem


rfe - seleção retrospectiva de preditores

implementa a seleção regressiva de preditores com base no ranking de importância do preditor.

Os preditores são ordenados, e os menos importantes são removidos sequencialmente antes da modelação.

O objetivo é encontrar um subconjunto de preditores que possa ser usado por um modelo mais preciso.

cofres - - robustez de seleção de preditor simulada (recozimento de preditor)

Durante uma busca, é necessáriauma medida de aptidão (ou seja, o valor energético da SA) para a busca. Esta é uma medida interna de desempenho. Durante a pesquisa, os dados que estão disponíveis são as instâncias selecionadas por reamostragem de alto nível (por exemplo, as partes de nove décimos mencionadas acima). A abordagem geral deve fazer um procedimento de reamostragem diferente. A outra opção deve usar múltiplos out-of-samples para determinar a avaliação interna do desempenho


Ao fazer isso, lembre-se sempre: "lixo dentro, lixo fora".

Ideias interessantes. Não se pode escrever tal coisa sozinho...

Fiz uma triagem de correlação. Para começar.
Eu separo os preditores por correlação total, depois vou de menos correlacionados, e removo aqueles que estão correlacionados com ele. Então repito isto com os restantes preditores.

Pearson Corr M
1.00,0.97,0.86,0.88,0.84,0.80,
0.97,1.00,0.92,0.84,0.79,0.75,
0.86,0.92,1.00,0.73,0.67,0.63,
0.88,0.84,0.73,1.00,0.99,0.98,
0.84,0.79,0.67,0.99,1.00,1.00,
0.80,0.75,0.63,0.98,1.00,1.00,
Corr + Kfull - soma das colunas
5.35,5.26,4.80,5.42,5.30,5.16,

Kfull classificado
4.80(2),5.16(5),5.26(1),5.30(4),5.35(0),5.42(3),
Entradas para apagar: 1,3,4,
Entradas a manter: 0,2,5,

 
SanSanych Fomenko:

Não se trata apenas do código. O código pronto é para implementar algumas ideias.

Ver

gafs - seleção de preditores por algoritmo genético
e o modelo final é baseado num subconjunto do preditor que está ligado ao número óptimo de gerações determinado pela reamostragem


rfe - seleção retrospectiva de preditores

implementa a seleção regressiva de preditores com base no ranking de importância do preditor.

Os preditores são ordenados, e os menos importantes são removidos sequencialmente antes da modelação.

O objetivo é encontrar um subconjunto de preditores que possa ser usado por um modelo mais preciso.

cofres - - robustez de seleção de preditor simulada (recozimento de preditor)

Durante uma busca, é necessáriauma medida de aptidão (ou seja, o valor energético da SA) para a busca. Esta é uma medida interna de desempenho. Durante a pesquisa, os dados que estão disponíveis são as instâncias selecionadas por reamostragem de alto nível (por exemplo, as nove décimas partes mencionadas acima). A abordagem geral deve fazer um procedimento de reamostragem diferente. A outra opção deve usar múltiplos out-of-samples para determinar a avaliação interna do desempenho


Ao fazer isso, lembre-se sempre de "entrar o lixo, sair o lixo".

Idéias interessantes, claro que você não pode escrever isso você mesmo, nem você mesmo pode inventar a idéia)

A questão permanece se ideias tão complexas são necessárias para fins comerciais. Vou tentar remover os altamente correlacionados por enquanto, se o resultado for inaceitável, terei que mudar para R
 
elibrarius:

Idéias interessantes, claro que você não pode escrevê-las você mesmo, e você não pode ter a idéia).

A questão permanece se ideias tão complexas são necessárias para fins comerciais. Vou tentar remover os altamente correlacionados por enquanto, se o resultado for inaceitável, terei que mudar para R

Você está preso à algália no sentido de que é extremamente inútil no trabalho de pesquisa. R intérprete e tentar qualquer coisa é uma brisa.

A remoção de preditores altamente correlacionados - (multicolineares) é uma obrigação.

Correlação entre o preditor e o alvo - certamente interessante. Eu posso dar uma ideia para este tipo de correlação. Construa uma regressão linear (há mais sofisticados) e jogue fora aqueles preditores que NÃO têm coeficientes significativos. Isso não funcionou para mim. Talvez o consigas fazer.

Mas a seleção de preditores é uma obrigação no MO

 

O artigo https://www.mql5.com/ru/articles/497 sugeriu alterar a inclinação da função de ativação dependendo do número de entradas.

Em Algli e em R, a inclinação é padrão ou é auto-optimizada dependendo do número de entradas? Ou será que quase ninguém sabe o que está dentro destas caixas pretas?

Нейронные сети - от теории к практике
Нейронные сети - от теории к практике
  • 2012.10.06
  • Dmitriy Parfenovich
  • www.mql5.com
В наше время, наверное, каждый трейдер слышал о нейронных сетях и знает, как это круто. В представлении большинства те, которые в них разбираются, это какие-то чуть ли не сверхчеловеки. В этой статье я постараюсь рассказать, как устроена нейросеть, что с ней можно делать и покажу практические примеры её использования.
 
elibrarius:

O artigo https://www.mql5.com/ru/articles/497 sugeriu alterar a inclinação da função de ativação dependendo do número de entradas.

Em Algli e em R, a inclinação é padrão ou é auto-optimizada dependendo do número de entradas? Ou o que está dentro daquelas caixas pretas que quase ninguém sabe?


Algumas bibliotecas de redes neurais oferecem ao usuário amplas oportunidades para personalizar a rede neural que está sendo criada, até mesmo para configurar funções para ativar neurônios individuais ou para adicionar/remover conexões individuais. No entanto, a prática mostra que muitas vezes não é necessária uma funcionalidade extensa - existem algumas arquiteturas genéricas que não podem ser significativamente melhoradas através de um ajuste fino, e a situação é semelhante com os métodos de treinamento de redes neurais. Finalmente, há outra razão para não dar ao usuário uma caixa de ferramentas muito rica - se uma rede neural requer um ajuste fino, então esse ajuste não é difícil para o autor de um pacote de software, mas pode muitas vezes confundir o usuário final. Daí a conclusão - um bom pacote de rede neural não deve exigir uma personalização complexa. Seguindo este princípio, o pacote ALGLIB tenta resolver automaticamente o maior número possível de questões, deixando apenas as decisões realmente importantes para o usuário.

Arquiteturas disponíveis
O pacote ALGLIB permite a criação de redes neurais sem camadas ocultas, com uma camada oculta, e com duas camadas ocultas. As conexões vão da camada de entrada para a primeira camada oculta (se houver), depois para a segunda, depois para a camada de saída. Não existem ligações "curtas" desde a camada de entrada até à camada de saída. As camadas ocultas têm uma das funções de ativação compressiva padrão, mas é possível uma maior variedade para a camada de saída da rede neural. A camada de saída pode ser linear (tais redes são usadas em problemas de aproximação), pode ter uma função de ativação compressiva (caso as saídas de rede sejam limitadas a um determinado intervalo). Também estão disponíveis redes com uma função de ativação delimitada por cima (ou por baixo). No caso mais simples (o limite é zero) esta função tende a x quando x tende a +∞, e exponencialmente tende a zero quando x tende a -∞.
Um caso especial são as redes neurais com camada de saída linear e normalização das saídas SOFTMAX. São utilizados para problemas de classificação, nos quais as saídas da rede devem ser não negativas e sua soma deve ser estritamente igual a uma, o que permite utilizá-los como probabilidades de atribuição do vetor de entrada a uma das classes (no caso limite as saídas da rede treinada convergem para essas probabilidades). O número de saídas de tal rede é sempre pelo menos duas (limitação ditada pela lógica elementar).
Tal conjunto de arquiteturas, apesar de seu caráter minimalista, é suficiente para resolver a maioria dos problemas práticos. A ausência de detalhes supérfluos permite que se concentre no problema (classificação ou aproximação) sem prestar atenção excessiva a detalhes sem importância (por exemplo, a escolha de uma determinada função de ativação para uma camada não linear geralmente tem pouco efeito sobre o resultado).

http://alglib.sources.ru/dataanalysis/neuralnetworks.php

 
Leia mais cedo, mas isso não responde à pergunta(
"As camadas ocultas têm uma das funções de ativação compressiva padrão" - qual delas? Ajusta os seus coeficientes ao número de ligações de entrada? O fato de que o número de entradas afeta o resultado foi mostrado no artigo. Caso contrário, batemos 100 neurónios numa camada oculta (ou mesmo numa camada de entrada), e os neurónios seguintes podem funcionar bem com apenas 5 entradas...
 
elibrarius:
Leia mais cedo, mas isso não responde à pergunta(
"As camadas ocultas têm uma das funções de ativação compressiva padrão" - qual delas? Ajusta os seus coeficientes ao número de ligações de entrada? O facto de o número de entradas afectar o resultado foi mostrado no artigo. Caso contrário, disparamos 100 neurónios numa camada oculta (ou mesmo na camada de entrada) e os neurónios seguintes podem funcionar bem com apenas 5 entradas...


somente se você mexer no código ou perguntar ... se existem 2 tipos de grade, provavelmente sigmóide e algum outro na saída, que varia dependendo se é linear ou no alcance

e a arquitectura da grelha é um pouco incómoda... Terei de passar por muitos problemas, mas felizmente só há duas camadas escondidas, por isso já é mais fácil :) Li algures que a camada oculta, em geral, deve ser 2 vezes menos que a entrada... ou mais, esqueci-me )

 

A propósito, verifiquei a correlação com períodos de 10 a 60 (6 peças) no gráfico EURUSD M1, em direcção à saída (não tenho um ziguezague, mas algo próximo).

-0.00,0.01,0.00,0.01,0.01,-0.01

A correlação é de -0,01 a 0,01, ou seja, não há correlação alguma.

No entanto, o seu Expert Advisor mostra lucro. Acho que é muito mais fácil escrever um Expert Advisor comum que irá trabalhar de acordo com estas regras.

 
Maxim Dmitrievsky:


Li algures que a camada oculta, em geral, deve ser 2 vezes menor que a camada de entrada... ou mais, esqueci-me )

Uma das regras "Número ótimo de neurônios em camada oculta (# de neurônios ocultos) = (# de entradas + # de saídas)/2 , ou SQRT(# de entradas * # de saídas)".

E na rede Reshetov que você usou, 2nInInputs