Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 253
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Sob "coisas interessantes". ))
algoritmo DTW
Imagine que você precisa encontrar algumas partes iguais do preço na série, mas como o preço não é estacionário, claro, por causa desta propriedade o tamanho destas partes será diferente, como lidar com este caso?
Eu conheço duas soluções possíveis - interpolação e algoritmo dwt.
про dwt - https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D1%82%D1%80%D0%B0%D0%BD%D1%81%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%B8_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9_%D1%88%D0%BA%D0%B0%D0%BB%D1%8B
Não me preocuparei com fórmulas, pois eu mesmo não as conheço, também não me preocuparei com palavras, só darei o código comentado para que qualquer um se reproduza...
Então, este código foi usado para resolver um problema:
Temos um certo padrão, chamemos-lhe "padrão principal" de tamanho (comprimento) 8 pontos (o número é um palpite arbitrário)
Você deve encontrar padrões semelhantes ao padrão principal, mas sua dimensão é de 5 e 13 pontos (os números são tomados ao acaso)
O resultado está na imagem
como ela pode ser usada e é mesmo possível é uma questão em aberto, acho que a apliquei com sucesso, mas você precisa lembrar que tudo isso é apenas uma ferramenta para implementar sua idéia, mas não a idéia em si ...
Vou afixar o código abaixo
Em termos simples, o objectivo do código é este:
X <- rnorm(10)
Y <- rnorm(20)
my.dtw <- dtw(X ,Y)
my.dtw$distance
onde
[1] 14.17198
é uma medida de proximidade (distância euclidiana), quanto menor for, maior é a proximidade de X e Y
Em termos simples, o objectivo do código é este:
X <- rnorm(10)
Y <- rnorm(20)
my.dtw <- dtw(X ,Y)
my.dtw$distance
onde
[1] 14.17198
é uma medida de proximidade (distância euclidiana), quanto menor for, maior é a proximidade de X e Y
Só no caso de: Se a medida de proximidade = 1, então a segunda linha é obtida a partir da primeira por distorção?
Normalmente quando você quer mudar a proximidade entre duas linhas, a regra é que essas linhas devem ter o mesmo comprimento.
dtw pode medir a proximidade de duas filas com dimensões diferentes, claro que irá distorcer as filas para encontrar o valor de proximidade correto
mytarmailS:
Temos um padrão, chamemos-lhe "padrão principal" tamanho (comprimento) de 8 pontos (a figura está ao acaso)
você precisa encontrar padrões similares ao padrão principal, mas eles têm 5 e 13 pontos (os números são tomados ao acaso)
Estava no mesmo fio, pg. 130.
Em resumo, o clássico algoritmo DTW compara dois segmentos de comprimento fixo n e m respectivamente, preenche a matriz [1..n, 1..m] e toma o resultado da célula [n, m]. Se você quiser que algum segmento tenha comprimento aleatório, por exemplo, n=8 e m toma valores de 5 a 13, você preenche o array 8*13 e toma o resultado mínimo das células [8,5] a [8,13] dividido pelo comprimento do caminho.
Acontece que a wikipedia russa reescreveu todo o artigo durante este tempo, e eu não sabia sobre isso. No artigo inglês nada mudou e o pseudo-código permanece, pelo que é mais fácil entender o princípio do algoritmo.
Aproximação #4) Mas não chegou ao clube dos "primeiros cem"(133) (0,68705), levando um murro na cara dos nerd-assholes))))
Estava no mesmo fio, pg. 130.
Em suma, no clássico algoritmo DTW ....................
Ou pode fazê-lo de outra forma, basta interpolar sem rodeios todas as secções arbitrárias para um único tamanho, e medir a correlação ou Euclidiano lá...
Olá a todos!
Peço ajuda e proponho-me juntar esforços para criar um algoritmo chamado "aproximação poliarmonica" - esta é uma aproximação de funções muito profunda e inteligente no contexto da família de algoritmos "MSUA", porque penso que assim o farei mais tarde com explicações e possivelmente com imagens
ссылка https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%83%D1%87%D1%91%D1%82%D0%B0_%D0%B0%D1%80%D0%B3%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2
trecho do link
Вместо полинома Колмогорова-Габора можно использовать ряды Фурье. Их имеет смысл применять, если в исходных данных наблюдается периодичность (например, уровень воды в реках, температура воздуха, объём осадков). Полученная в таком случае модель будет полигармонической [1].
===================================================
Também um link para um dos muitos livros sobre este maravilhoso método daqueles "MSUA".
O livro tem idéias muito fortes e é fácil de ler (até que as fórmulas comecem)MUITO recomendado a leiturahttps://www.gmdh.net/articles/theory/bookNoiseIm.pdf
===================================================
também alguns comentários confirmando que a aproximação poliarmónica é a forma correcta de pré-processar dados para o MO
fragmento de comentário
…. И вот с такой моделью мне удалось построить сеть, которая имела очень хорошие обобщающие свойства: новые данные почти все правильно распознавала........................
link para a fonte originalhttp://www.kamynin.ru/archives/4917
Parece complicado e não há certeza do resultado, vou passar.
R tem um pacote GMDH ("MGUA" em inglês).
A propósito, em Numerai também finalizei o modelo para logloss <0,69
0,68930
Mas de algum lugar saiu uma centena de pessoas com resultados 0,4-0,5, algum inferno, agora até prêmios geralmente como a lua.