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

 
fxsaber #:

Hay cierta astucia en ello. Los enlaces son sólo para asegurarse de que se abren. Nadie que esté "interesado" profundizará en ellos. Nadie leerá los artículos masticados de Andrei, y mucho menos obras de carácter académico.


¿Alguien ha visto este TOP de fácil comprensión con la posibilidad de calcular el ranking de su propio algoritmo de optimización?

https://habr.com/ru/users/belyalova/publications/articles/


Son métodos de optimización basados en gradiente para neuronas ,

y estamos hablando de métodos de optimización globalsin gradiente,

Vamos, Saber.

Es el ABC.

De los que, por cierto, tu experto local en optimizaciones no dice nada en sus artículos (porque él mismo es un roble en AO).

 
Aleksey Nikolayev #:

Lea esto, especialmente la sección "Función de pérdida != métrica de calidad". No puedo escribir más claro.

No he podido abrirlo, estamos un poco bloqueados(

Aleksey Nikolayev #:
Esto lleva a un número potencialmente ilimitado de parámetros, ya que los espacios de funciones son de dimensión infinita. En la práctica, esto conduce a la necesidad de controlar el número de parámetros de alguna manera - para los árboles es la poda de hojas, por ejemplo.

Por ejemplo, AMO forrests, boosts consisten en primitivas, reglas.


Podemos crear una gramática Beckus Naur de las reglas que necesitamos.

así.

grammarDef
<ex3> ::= <ex2> | <ex2> & <ex2> | <ex2> & <ex3>
<ex2> ::= <ex1> | <com>(<ex1>, <ex1>)
<ex1> ::= <op>(<var>, <var>)
<com> ::= "&" | "|"
<op>  ::= ">=" | "<=" | "==" | "!="
<var> ::= x1 | x2 | x3 | x4

detrás de cada regla hay un código/cadena/genotipo.

2 3 1 3 2 4 3 2 3 1 4 4 1 2 1 4 3 2 4 3 4 1 3 4 3 1 2 1 1 3 2 4 1 4 2 4 3 3 1 4 3 2 3  ->  (x1 == x4 | x2 != x1) & (x4 >= x3 & x1 != x2) & (x3 <= x2 & x3 != x1) 
1 1 4 4 1 4 1 4 2 3 1 4 1 1 1 3 1 4 2 3 4 1 1 3 4 3 2 4 1 4 2 3 4 3 3 2 3 4 2 2 4 4 3  ->  x1 <= x2 & x4 == x2 & x2 <= x4 
2 4 1 4 1 1 1 2 1 4 4 1 2 1 3 1 2 3 3 3 3 4 4 2 2 3 1 3 4 2 2 1 2 4 2 1 4 4 3 3 1 4 3  ->  x2 >= x2 & x1 >= x2 & x2 != x3 
4 3 1 3 2 4 2 2 3 4 4 1 1 2 2 1 3 2 4 3 4 3 3 1 3 1 3 2 2 2 4 4 2 3 2 1 4 1 3 1 3 2 4  ->  (x1 == x3 | x1 != x1) & (x2 == x4 | x4 >= x1) 
1 3 3 1 4 2 2 3 4 3 3 4 4 2 2 4 3 1 4 2 1 1 3 4 2 3 1 2 3 1 1 1 3 3 2 2 2 2 2 3 3 1 2  ->  (x3 >= x3 | x4 >= x4) & x3 == x1 
2 1 2 1 3 3 1 2 3 3 2 3 3 3 2 3 4 4 4 3 4 3 2 2 3 1 4 3 4 2 4 3 4 1 2 3 1 2 1 3 1 4 3  ->  x4 != x2 & x4 != x3 & (x1 != x1 | x1 != x4) 
3 3 1 1 3 3 3 2 4 2 2 3 1 2 2 3 2 4 1 4 3 4 4 2 2 4 1 2 2 4 3 4 2 2 3 4 3 4 4 3 4 4 2  ->  x4 != x4 | x3 >= x3 
3 2 1 1 3 4 2 3 2 2 2 4 3 2 3 4 2 2 4 4 1 1 3 1 2 3 2 4 1 2 1 2 1 2 1 4 3 2 4 1 1 4 2  ->  x4 <= x1 
4 2 3 2 4 4 3 3 3 4 1 4 3 3 3 2 4 3 1 3 4 4 1 4 4 2 1 2 3 1 3 3 4 2 4 1 4 2 3 4 3 4 3  ->  x1 == x1 & (x2 >= x1 | x4 != x3) 
3 2 2 1 2 3 2 4 3 3 4 2 4 4 2 4 3 4 2 2 1 1 2 2 1 3 1 4 3 4 3 2 4 4 3 2 2 2 2 2 3 1 1  ->  x3 <= x4 

a la izquierda está el genotipo, a la derecha está la regla que se genera, este genotipo se puede buscar con la ayuda de AO.

La suma de las reglas es el mismo impulso o bosque..

Es como una obviedad.


Aquí está el código que lo implementa todo

library(gramEvol)
grammarDef <- CreateGrammar(list(
  ex3 = grule(ex2, ex2 & ex2, ex2 & ex3),
  ex2 = grule(ex1, com(ex1, ex1)),
  ex1 = grule( op(var, var) ),
  com = grule("&","|"),
  op = grule(">=","<=","==","!="),
  var = grule(x1,x2,x3,x4)))


for(i in 1:10){
  genotype <- sample(1:4,size = 43,replace = T)
  rule <- as.character(GrammarMap(genotype, grammarDef))
  cat(as.character(genotype), " -> ", rule, "\n")
}

Documentación del paquete

Así que no veo ningún obstáculo para implementar mi AMO puramente en la optimización y la gramática.


Y tenemos las manos libres en todos los frentes, cualquier función, transformación, cualquier dato, en general, se puede implementar cualquier cosa.



El mismo Forrest, no hay diferencia.

X <- iris[,1:(ncol(iris)-1)]
target <- iris[,"Species"] 


library(inTrees)
library(RRF)

target |> 
as.factor() |> 
RRF(x = X,ntree=100) |> 
RF2List() |> 
extractRules(X = X) 






697 rules (length<=6) were extracted from the first 100 trees.
       condition                                                                        
  [1,] "X[,4]<=0.8"                                                                     
  [2,] "X[,4]>0.8 & X[,4]<=1.65 & X[,4]<=1.45"                                          
  [3,] "X[,3]<=4.95 & X[,4]>0.8 & X[,4]<=1.65 & X[,4]>1.45 & X[,4]<=1.55"               
  [4,] "X[,3]>4.95 & X[,4]>0.8 & X[,4]<=1.65 & X[,4]>1.45 & X[,4]<=1.55"                
  [5,] "X[,4]>0.8 & X[,4]<=1.65 & X[,4]>1.45 & X[,4]>1.55"                              
  [6,] "X[,3]<=4.75 & X[,4]>0.8 & X[,4]>1.65 & X[,4]<=1.85 & X[,4]<=1.75"               
  [7,] "X[,3]>4.75 & X[,4]>0.8 & X[,4]>1.65 & X[,4]<=1.85 & X[,4]<=1.75"                
  [8,] "X[,1]<=5.95 & X[,3]<=4.85 & X[,4]>0.8 & X[,4]>1.65 & X[,4]<=1.85 & X[,4]>1.75"  
  [9,] "X[,1]>5.95 & X[,3]<=4.85 & X[,4]>0.8 & X[,4]>1.65 & X[,4]<=1.85 & X[,4]>1.75"   
 [10,] "X[,3]>4.85 & X[,4]>0.8 & X[,4]>1.65 & X[,4]<=1.85 & X[,4]>1.75"                 
 [11,] "X[,4]>0.8 & X[,4]>1.65 & X[,4]>1.85"                                            
 [12,] "X[,4]<=0.8"                                                                     
 [13,] "X[,3]<=4.95 & X[,4]>0.8 & X[,4]<=1.55"                                          
 [14,] "X[,3]>4.95 & X[,4]>0.8 & X[,4]<=1.55"                                           
 [15,] "X[,1]<=5.45 & X[,4]>0.8 & X[,4]>1.55 & X[,4]<=1.75"                             
 [16,] "X[,1]>5.45 & X[,3]<=5.45 & X[,4]>0.8 & X[,4]>1.55 & X[,4]<=1.75"                
 [17,] "X[,1]>5.45 & X[,3]>5.45 & X[,4]>0.8 & X[,4]>1.55 & X[,4]<=1.75"                 
 [18,] "X[,1]<=5.95 & X[,3]<=4.9 & X[,4]>0.8 & X[,4]>1.55 & X[,4]>1.75"                 
 [19,] "X[,1]>5.95 & X[,3]<=4.9 & X[,4]>0.8 & X[,4]>1.55 & X[,4]>1.75"                  
 [20,] "X[,3]>4.9 & X[,4]>0.8 & X[,4]>1.55 & X[,4]>1.75"                                
 [21,] "X[,4]<=0.8"                                                                     
 [22,] "X[,3]<=4.85 & X[,4]>0.8 & X[,4]<=1.7"                                           
 [23,] "X[,1]<=5.95 & X[,3]<=4.85 & X[,4]>0.8 & X[,4]>1.7"                              
 [24,] "X[,1]>5.95 & X[,3]<=4.85 & X[,4]>0.8 & X[,4]>1.7"                               
 [25,] "X[,1]<=6.6 & X[,3]>4.85 & X[,4]>0.8 & X[,4]<=1.65"                              
 [26,] "X[,1]>6.6 & X[,3]>4.85 & X[,4]>0.8 & X[,4]<=1.65"                               
 [27,] "X[,3]>4.85 & X[,4]>0.8 & X[,4]>1.65"                                            
 [28,] "X[,3]<=2.45"                                                                    
 [29,] "X[,3]>2.45 & X[,3]<=5.35 & X[,4]<=1.75"                                         
 [30,] "X[,3]>2.45 & X[,3]>5.35 & X[,4]<=1.75"                                          
 [31,] "X[,1]<=5.95 & X[,3]>2.45 & X[,3]<=4.85 & X[,4]>1.75"                            
 [32,] "X[,1]>5.95 & X[,3]>2.45 & X[,3]<=4.85 & X[,4]>1.75"                             
 [33,] "X[,3]>2.45 & X[,3]>4.85 & X[,4]>1.75"                                           
 [34,] "X[,3]<=2.45"           
...
..
..
..
.
.
.
 
mytarmailS #:
No pude abrirlo, estamos un poco bloqueados(

Estamos bloqueados mucho, de alguna manera nos adaptamos.

mytarmailS #:
Bueno, por ejemplo los bosques AMO, boosts consisten en primitivas , reglas.

No he afirmado que la ausencia de un conjunto fijo de parámetros haga imposible el aprendizaje (optimización). Sólo hablaba de diferencias significativas respecto a la optimización convencional con un conjunto fijo de parámetros. Si no me cree, puede intentar implementar árboles o gramáticas en MT5 (donde el optimizador trabaja para un conjunto fijo). No es que sea absolutamente imposible, pero es extremadamente inconveniente.

 
Aleksey Nikolayev #:

No he afirmado que la ausencia de un conjunto fijo de parámetros haga imposible el aprendizaje (optimización). Sólo hablaba de diferencias significativas respecto a la optimización convencional con un conjunto fijo de parámetros. Si no me cree, puede intentar implementar árboles o gramáticas en MT5 (donde el optimizador trabaja para un conjunto fijo). No es que sea absolutamente imposible, pero es extremadamente inconveniente.

El lenguaje MQL5 permite compensar la ausencia de funciones estándar del comprobador y el optimizador. Cuando se requiere un conjunto dinámico de parámetros, puede escribir un optimizador externo para el modelo en MQL5.

 
Andrey Dik #:

El lenguaje MQL5 permite compensar la falta de funciones estándar del comprobador y el optimizador. Cuando se requiere un conjunto dinámico de parámetros, puede escribir un optimizador externo para el modelo en MQL5.

Es obligatorio escribir gradient bousting en mql5 para convertirse en el creador de la bicicleta más calamitosa.
 

Un estudiante hace preguntas a una inteligencia artificial.

Pregunta: ¿Cómo te llamas?

Respuesta: Vasya. Vete al infierno.

Pregunta: ¿Qué es ir al infierno?

Respuesta: Es la respuesta a tu segunda pregunta, Vasya.

P.Z.

La pregunta conmociona el sistema neuronal.

 
Aleksey Nikolayev #:
Es obligatorio escribir gradient bousting en mql5 para convertirse en el creador de la bicicleta más cutre.

¿Y cuál es la diferencia fundamental entre bousting en mql5 y escrito en cualquier otro lenguaje? mql5 es tan rápido como C# y casi tan rápido como C++. La sintaxis no difiere mucho de estos lenguajes. Para las necesidades de MO, recientemente se han añadido muchas características incorporadas al lenguaje.
Un probador estándar es conveniente como un entorno de negociación ya hecho, pero todo lo que se refiere a MO y optimización puede ser implementado sin él si alguien se siente acalambrado en él.
No hay limitaciones fundamentales en MT5.
 
Andrey Dik #:

¿Y cuál es la diferencia fundamental entre bousting en mql5 y bousting escrito en cualquier otro lenguaje? mql5 es tan rápido como C# y casi tan rápido como C++. La sintaxis no difiere mucho de estos lenguajes. Para las necesidades de MO, recientemente se han añadido muchas características incorporadas al lenguaje.
El probador estándar es conveniente como un entorno comercial ya hecho, pero todo lo que se refiere a MO y la optimización puede ser implementado sin él, si alguien está acalambrado en él.
No hay limitaciones fundamentales en MT5.
Qué mecanismos de paralelización de cálculos en CPU en mql5 conoces?
 
Aleksey Nikolayev #:
¿Qué mecanismos de paralelización de cálculos sobre CPU en mql5 conoces?

OpenCL para más o menos avanzados.

Para menos avanzados - ejecutando agentes en gráficos separados. Cada gráfico en un hilo separado, se usarán todos los núcleos de CPU en total.

Además, los propios agentes terminales se pueden utilizar para paralelizar los cálculos de la aplicación en un gráfico terminal, esto no es conocido por mucha gente.

En este artículo te mostraré cómo escribir un AG binario que cubra todos los dígitos significativos de un número doble con un paso de parámetros ilimitadamente pequeño en MQL5 (de hecho, está limitado a 16 decimales para doble). E incluso esto no es el limite, puedes escribir extensiones de tipos estandar de numeros en MQL5.

 
Andrey Dik #:

OpenCL es para los más o menos avanzados.

Para los menos avanzados - ejecutar agentes en gráficos separados. Cada gráfico en un hilo separado, se utilizarán todos los núcleos del procesador en total.

Además, los propios agentes terminales se pueden utilizar para paralelizar los cálculos de la aplicación en un gráfico terminal, esto no es conocido por mucha gente.

En este artículo te mostraré cómo escribir un AG binario que cubra todos los dígitos significativos de un número doble con un paso de parámetros ilimitadamente pequeño en MQL5 (de hecho, está limitado a 16 decimales para doble). E incluso este no es el limite, puedes escribir extensiones de tipos estandar de numeros en MQL5.

Eso es lo que estoy diciendo - usted conseguirá una bicicleta con un montón de calambres.

Y OpenCL es tan bueno que metaquotes no escribió su optimizador de GPU en él, probablemente sólo porque cualquiera de nosotros puede escribir fácilmente el suyo propio.

Vale, paro, o me banearán como a Maxim si digo todo lo que pienso sobre tu demagogia.

Razón de la queja: