Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 253

 

En "cosas interesantes". ))

Algoritmo DTW

Imagina que necesitas encontrar algunas partes iguales del precio en la serie, pero como el precio no es estacionario, por supuesto debido a esta propiedad el tamaño de estas partes será diferente, ¿cómo tratar este caso?

Conozco dos posibles soluciones: la interpolación y el 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

No me molestaré con las fórmulas ya que no las conozco, tampoco me molestaré con las palabras, simplemente daré el código comentado para que cualquiera pueda reproducirlo...

Así que este código se utilizó para resolver un problema:

Tenemos un determinado patrón llamémoslo "patrón principal" de tamaño (longitud) 8 puntos (el número es una suposición arbitraria)

Deberías encontrar patrones similares al patrón principal pero su dimensión es de 5 y 13 puntos (las cifras están tomadas al azar)

el resultado está en la imagen

ч

cómo se puede utilizar y si es posible es una pregunta abierta, creo que lo he aplicado con éxito, pero hay que recordar que todo esto es sólo una herramienta para implementar su idea, pero no la idea en sí ...

Voy a publicar el código a continuación

Алгоритм динамической трансформации временной шкалы — Википедия
  • ru.wikipedia.org
Алгоритм динамической трансформации временно́й шкалы (DTW-алгоритм, от англ.  ) — алгоритм, позволяющий найти оптимальное соответствие между временными последовательностями. Впервые применен в распознавании речи, где использован для определения того, как два речевых сигнала представляют одну и ту же исходную произнесённую фразу. Впоследствии...
Archivos adjuntos:
zzz.txt  4 kb
 

En términos sencillos, el objetivo del código es este:

library(dtw)

X <- rnorm(10)
Y <- rnorm(20)

my.dtw <- dtw(X ,Y)

my.dtw$distance

donde

my.dtw$distance
[1] 14.17198

es una medida de proximidad (distancia euclidiana), cuanto más pequeña es mayor es la proximidad de X e Y

 
mytarmailS:

En términos sencillos, el objetivo del código es este:

library(dtw)

X <- rnorm(10)
Y <- rnorm(20)

my.dtw <- dtw(X ,Y)

my.dtw$distance

donde

my.dtw$distance
[1] 14.17198

es una medida de proximidad (distancia euclidiana), cuanto más pequeña es mayor es la proximidad de X e Y

Por si acaso: Si la medida de proximidad = 1, ¿la segunda fila se obtiene a partir de la primera por distorsión?
 
SanSanych Fomenko:
Por si acaso: Si la medida de proximidad = 1, ¿la segunda fila se obtiene a partir de la primera por distorsión?

Normalmente, cuando se quiere cambiar la proximidad entre dos filas, la regla es que estas filas deben tener la misma longitud.

dtw puede medir dos filas de diferentes dimensiones, por supuesto distorsionará las filas para encontrar el valor de proximidad correcto

 

mytarmailS:

Tenemos un patrón, llamémoslo "patrón principal" de tamaño (longitud) de 8 puntos (la cifra es al azar)

Necesito encontrar patrones similares al patrón principal pero que tengan 5 y 13 puntos (las cifras están tomadas al azar)

Fue en el mismo hilo, pg. 130.

En resumen, el algoritmo DTW clásico compara dos segmentos de longitud fija n y m respectivamente, llena la matriz [1...n, 1...m] y toma el resultado de la celda [n, m]. Si quieres que algún segmento tenga una longitud aleatoria, por ejemplo n=8 y m toma valores de 5 a 13, llenas el array 8*13 y tomas el resultado mínimo de las celdas [8,5] a [8,13] dividido por la longitud del camino.

Resulta que la wikipedia rusa reescribió todo el artículo durante este tiempo, y yo no lo sabía. En el artículo en inglés no ha cambiado nada y se mantiene el pseudocódigo, con el que es más fácil entender el principio del algoritmo.

 
Vizard_:

Enfoque #4) Pero no entró en el club de los "cien primeros"(133) (0,68705), recibiendo un puñetazo en la cara por parte de los empollones))


¡Wow! ¡Impresionante!
 
Escritor de Awl:

Fue en el mismo hilo, pg. 130.

En resumen, en el algoritmo DTW clásico ....................

O puedes hacerlo de otra manera, interpolar sin más todas las secciones arbitrarias a un tamaño único, y simplemente medir la correlación o la euclidiana allí...

 

Hola a todos.

Pido ayuda y propongo aunar esfuerzos para crear un algoritmo llamado "aproximación polifarmónica" - se trata de una aproximación de funciones muy profunda e inteligente en el contexto de la familia de algoritmos "MSUA" por qué lo pienso lo expresaré más adelante con explicaciones y posiblemente imágenes

ссылка 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

extracto del enlace

Обычно степень полинома опорной функции выбирается не выше {\displaystyle N-1} N-1, где {\displaystyle N} N - количество точек выборки. Часто бывает достаточно использовать в качестве опорных функции полиномы второй степени. В таком случае на каждом шаге итерации степень результирующего полинома удваивается.

Вместо полинома Колмогорова-Габора можно использовать ряды Фурье. Их имеет смысл применять, если в исходных данных наблюдается периодичность (например, уровень воды в реках, температура воздуха, объём осадков). Полученная в таком случае модель будет полигармонической [1].

===================================================

También un enlace a uno de los muchos libros sobre este maravilloso método de aquellos "MSUA".

El libro tiene ideas muy fuertes y es fácil de leer (hasta que empiezan las fórmulas) LecturaMUY recomendablehttps://www.gmdh.net/articles/theory/bookNoiseIm.pdf

===================================================

también algunos comentarios que confirman que la aproximación poliarmónica es la forma correcta de preprocesar los datos para MO

extracto del comentario

...................................…Следующим шагом была новая модель: к цене закрытия применяем фильтр низких частот (я использовал фильтр Батерворта 2-го порядка), применяем полиномиально-гармоническую аппроксимацию, преобразуем A*cos(wx)+B*sin(wx) к виду M*sin(wx+f) и в качестве вторичных признаков берем M и f.
…. И вот с такой моделью мне удалось построить сеть, которая имела очень хорошие обобщающие свойства: новые данные почти все правильно распознавала........................

enlace a la fuente originalhttp://www.kamynin.ru/archives/4917

 
mytarmailS:

Parece complicado y no hay certeza del resultado, paso.
R dispone de un paquete GMDH ("MGUA" en inglés).

Por cierto en Numerai también he finalizado el modelo a logloss <0.69
0,68930
Pero de algún lugar salió un centenar de personas con resultados 0,4-0,5, algunos infierno, ahora hasta premios generalmente como la luna.