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

 
Ivan Negreshniy:

En mi opinión, hay que trabajar primero en python, donde está más o menos depurado, de lo contrario hay mucha incertidumbre

Sí, parece que la dll es de 32 bits y el mt5 es de 64.

volveré más tarde, por ahora python está bien.

 
Maxim Dmitrievsky:

No creo que pueda hacerlo yo mismo, tendré que usar Python después de todo :D

Debería recibir el título de "Especialista destacado en crearse dificultades a sí mismo". Exclusivamente de la película: los héroes normales siempre van al revés.


Aquí está el proverbial traqueteo, sólo unos pocos clics para el modelo xgboost que mencionaste.

Lo conseguimos para el muestreo de la formación:

Error matrix for the Extreme Boost model on Df1.num [**train**] (counts):

      Predicted
Actual    0    1 Error
     0 1930   90   4.5
     1   42 2152   1.9

Error matrix for the Extreme Boost model on Df1.num [**train**] (proportions):

      Predicted
Actual    0    1 Error
     0 45.8  2.1   4.5
     1  1.0 51.1   1.9

Overall error: 3.1%, Averaged class error: 3.2%

Rattle timestamp: 2018-05-31 11:21:20 user

Para la muestra de validación.

Error matrix for the Extreme Boost model on Df1.num [validate] (counts):

      Predicted
Actual   0   1 Error
     0 306 119  28.0
     1 111 367  23.2

Error matrix for the Extreme Boost model on Df1.num [validate] (proportions):

      Predicted
Actual    0    1 Error
     0 33.9 13.2  28.0
     1 12.3 40.6  23.2

Overall error: 25.5%, Averaged class error: 25.6%

Rattle timestamp: 2018-05-31 11:22:15 user

Para el muestreo de la prueba.

Error matrix for the Extreme Boost model on Df1.num [test] (counts):

      Predicted
Actual   0   1 Error
     0 314 118  27.3
     1 112 360  23.7

Error matrix for the Extreme Boost model on Df1.num [test] (proportions):

      Predicted
Actual    0    1 Error
     0 34.7 13.1  27.3
     1 12.4 39.8  23.7

Overall error: 25.5%, Averaged class error: 25.5%

Rattle timestamp: 2018-05-31 11:22:50 user


Si estás satisfecho con el resultado, puedes mirar el código en R. Este es el reto:

crs$ada <- xgboost(Long_Short ~ .,
  data              = crs$dataset[crs$train,c(crs$input, crs$target)],
  max_depth         = 6,
  eta               = 0.3, 
  num_parallel_tree = 1, 
  nthread           = 2, 
  nround            = 50,
  metrics           = 'error',
  objective         = 'binary:logistic')


De hecho, usted puede tomar todo el código R de rattle y llamar a esta función de MT4/5 Expert Advisor y ver el resultado en el probador. Dll primitivo, funciona desde hace mucho tiempo y de forma constante, mucha gente que lo utiliza...

Todo esto en una hora. NO HAY PROBLEMAS CON LOS MODELOS

Hay problemas con los objetivos y los correspondientes predictores de objetivos o viceversa. Pero para resolver este problema hay que tener un conjunto de herramientas con una mano de obra extremadamente baja para probar variantes.


PS.

Si vas a rattle, puedes construir en un clic un árbol (rPart), randomForest, SVM, regresión logística glm, tu red neuronal favorita, aunque la nnet más simple. Y para un tentempié, un modelo vivo (para conseguir beneficios desorbitados o lograr un vertido de depósitos), si eres capaz de formular el objetivo y sus predictores.


LO ANTES POSIBLE.

Ya que se ha despertado el amor por el xgboost y se puede alimentar este amor con cálculos preliminares aceptables en rattle, aquí está la documentación para usted:

Descripción del paquete - https://cran.r-project.org/web/packages/xgboost/xgboost.pdf

Comprenda su conjunto de datos con Xgboost - https://cran.r-project.org/web/packages/xgboost/vignettes/discoverYourData.html

xgboost: eXtreme Gradient Boosting - https://cran.r-project.org/web/packages/xgboost/vignettes/xgboost.pdf

Y para empezar, la presentación de Xgboost https://cran.r-project.org/web/packages/xgboost/vignettes/xgboostPresentation.html


Teniendo en cuenta el nivel que demuestran aquí, no tienen ningún problema con R.


Buena suerte.

 
SanSanych Fomenko:

Gracias sanSanSanych... es que no lo entendía, ¿tiene xgb el ratoncito? curiosamente

De todos modos, sólo necesito adjuntar este modelo en lugar del andamiaje de algleb, para las tareas de RL

No necesito investigar nada, sólo necesito algo mejor con regularización y validación cruzada... No sé sobre R, pero en python, por ejemplo, la validación cruzada es fácilmente atornillada a xgb fallback, también

y luego R no tiene librerías propias para RL, todas están en python, es decir, tengo que poner R sobre python de nuevo... en fin, todavía no he decidido lo que necesito :)

 

Estamos hablando de árboles...

No sé si se trata de objetivos de una barra, pero cuando los objetivos son realmente eventos que ocurrirán después de N barras (estoy considerando específicamente el comercio de tendencia, u otros casos en los que una posición se cierra por SL/TP, después de N barras o un período de tiempo fijo), y su resultado será considerado y clasificado, es importante prestar atención no a la tabla de contingencia para evaluar los resultados, sino a

1. La frecuencia de variación de los resultados de la clasificación en una ventana de N barras

2. Agrupación de reglas por N barras (densidad de reglas)

En el primer caso, se necesita un indicador para estimar la frecuencia de cambio del objetivo predicho, si es alto, entonces el modelo es inestable, aunque puede marcar un gran porcentaje de soluciones correctas.

En el segundo caso, necesitamos aplicar una regla por ventana (N barras) una regla repetida para estimar el refuerzo y la propagación de esta regla a través del modelo.

Por lo tanto, es necesario cambiar las estimaciones cuando se entrena la calidad del modelo, incluyendo el andamiaje y otros modelos que requieren el autoanálisis de sus resultados para hacer correcciones.

¿Qué opina de estos pensamientos?

 

Una vez más me convencí de que R no es lo mío :) la sintaxis casi no se destaca, el código es ilegible, los errores casi no se destacan. El propio código y el lenguaje no son estéticamente agradables

aquí podrían estar sus contraargumentos

Sí, puedes entrenar un algoritmo en 3 líneas en lugar de 5 en python, eso es todo. La legibilidad en python sería mejor. No veo ninguna ventaja para los paquetes de MO, es todo lo mismo.

 
Maxim Dmitrievsky:

Una vez más me convencí de que R no es lo mío :) la sintaxis casi no se destaca, el código es ilegible, los errores casi no se destacan. El propio código y el lenguaje no son estéticamente agradables

aquí podrían estar sus contraargumentos

Sí, puedes entrenar un algoritmo en 3 líneas en lugar de 5 en python, eso es todo. La legibilidad en python sería mejor. No veo ninguna ventaja en los paquetes de MO, es todo lo mismo.

Estoy en pleno proceso de ver un videocurso en ruso sobre programación en R :) El lenguaje es ciertamente un infierno de una sintaxis y supuestos, por ejemplo, la capacidad de declarar una variable global en una función puede distorsionar el código, especialmente si la función se llama más de una vez, después de lo cual se tropezó y buscar el error, pero no será para el compilador.

Estoy realmente molesto con el uso de la memoria en R - actualmente el archivo csv de 187 megabytes se extiende en la memoria como 1,5 Gbytes para trabajar con el árbol (mientras que en Rattle 7,5 Gbytes para construir el bosque), el multihilo se implementa como procesos separados lanzados que no saben cómo trabajar con la memoria compartida, como resultado en lugar de cargar 6 núcleos de procesador puedo cargar sólo 4, siendo limitado por 8 Gbytes de memoria disponible.

¿Cómo maneja python este caso?

 
Aleksey Vyazmikin:

Estoy en pleno proceso de ver un videocurso en ruso sobre programación en R :) El lenguaje es sin duda el más difícil en términos de sintaxis y supuestos, por ejemplo, la posibilidad de declarar una variable global en la función puede hacer un gran lío de código, sobre todo si la función se llama más de una vez, entonces usted va a tropezar y buscar el error, pero no será para el compilador.

Estoy realmente molesto con el uso de la memoria en R - actualmente el archivo csv de 187 megabytes se reparte en la memoria como 1,5 Gbytes para trabajar con el árbol (mientras que en Rattle 7,5 Gbytes para construir el bosque), el multi-threading se implementa como procesos separados lanzados que no pueden trabajar con la memoria compartida, por lo que en lugar de cargar 6 núcleos de procesador puedo cargar sólo 4, estando limitado por 8 Gbytes de memoria disponible.

¿Qué tal le va a Python en este caso?

No he mirado la memoria, ya que nunca he utilizado archivos tan grandes :) Pero he oído que las primeras versiones de R tenían un problema con la memoria y su limpieza

Python es un lenguaje más avanzado en todos los sentidos, ya que se utiliza para una gran variedad de tareas.

Tampoco entiendo lo curioso de la visualización de tramas en R - es feo comparado con python, el IDE de Rstudio también es un monstruo de la selva, cómo es posible soportar en 2018

he escrito 100 líneas de código y me he confundido, todo se ha difuminado en un lío ilegible con sintaxis no iluminada :) así que si quieres sacarle partido, usa python en vscode o jupyter notebooks

Lasactualizaciones de los árboles y los bosques ocupan mucha memoria, dependiendo del tamaño del conjunto y del número de árboles y su profundidad. Por ejemplo, mi comisión de 20 bosques de 50 árboles y un conjunto de 1000 ejemplos ocupa ~40mb
 

Escribe tonterías sobre R: no sé, no puedo y no quiero.

1. La velocidad y la facilidad de depuración de código en R es sorprendente en comparación con los lenguajes que tienen la ventaja del compilador es intérprete. En este sentido, el resaltado es muy limitado, ya que no hay nada que resaltar: el código es casi inmediatamente viable. Código de gran capacidad. Escribir código "spoilery" es probablemente el resultado de una falta de conocimiento de R en sí mismo y de la funcionalidad de los paquetes. Y si realmente ocurrió así, un buen mauvais ton exige dividirlo en funciones, la POO está presente.

2. el uso de variables globales en todos los idiomas debe ser cuidadoso. En R su necesidad es muy dudosa, porque los parámetros de las funciones y el retorno de las mismas pueden ser "objeto", mientras que en R es cualquier cosa. Aparte de eso, puedes controlar el espacio al que se adjuntan los nombres de las variables.

2. Los gráficos son uno de los mejores del mundo - hay de todo, desde la trama más simple hasta los dibujos animados, varios niveles de gráficos: desde los primitivos hasta los espacios en blanco especializados para las estadísticas.

3. Es imposible comparar con python: son aproximadamente iguales en prevalencia, pero python tiene muchos usuarios "ajenos", principalmente desarrolladores de sitios, mientras que R es un sistema de estadística, nuestro nativo, doblemente nativo, porque el modus operandi está incluido en la estadística. Si hablamos de paquetes para nosotros, deberíamos comparar con otros paquetes especializados (SAS...), pero son de pago.

4. R es el estándar algorítmico en estadística. Casi todas las publicaciones modernas contienen necesariamente código R.


El último. R es parte de Microsoft, y python es un subdelegado, aquí en un hilo cercano gente muy experta en programación no se ponía de acuerdo en la fuente de la distribución. Para mí eso es un veredicto.


En la programación se elige muy a menudo lo que es más conveniente en lugar de lo que es útil, funcional, pero regar para hacer una elección extremadamente cuestionable no lo es.

 
SanSanych Fomenko:

SanSanych, la única fuente de la distribución allí es el sitio web de python :)

Para la estadística y la extensión de aprendizaje automático IPython y anaconda. Vaya a la comunidad de opendatascience en ruso o vea los vídeos de Yandex. No han oído hablar de R en absoluto. ¿Qué es lo que cuenta como norma? Pruebe python para formarse su propia opinión y comparar. Además saber python, como has dicho, te permitirá hacer no sólo estadísticas sino otras cosas, si es necesario.

También es un lenguaje interpretado, pero está perfectamente resaltado y comprueba la sintaxis sobre la marcha, no sólo después de ejecutar el script, + plegado de código, bloc de notas y un montón de otras cosas

 
Maxim Dmitrievsky:

No he mirado la memoria ya que nunca he usado archivos tan grandes :) Pero he oído que las primeras versiones de R tenían un problema con la memoria y la limpieza

Python es un lenguaje más avanzado en todos los aspectos, ya que se utiliza para una amplia gama de propósitos.

Tampoco entiendo lo curioso de la visualización de tramas en R - es miserable comparado con python, el IDE de Rstudio también es un monstruo de la selva, cómo es posible soportar en 2018

He escrito 100 líneas de código y me he confundido, todo se ha desdibujado en un lío ilegible con sintaxis no iluminada :) en resumen, si quieres sacarle partido, usa python en vscode o jupyter notebooks

Las actualizaciones de los árboles y el bosque en sí ocupan mucha memoria, dependiendo del tamaño del conjunto y del número de árboles y su profundidad. Por ejemplo, mi comisión de 20 bosques de 50 árboles y un conjunto de 1000 ejemplos ocupa ~40mb

Mi sensación hasta ahora es que R es una calculadora genial. La ausencia de ayuda en idioma ruso en las funciones principales me mata, bueno, es muy importante para mí debido a mi debilidad en la lingüística.

Visualización - hay algunas dificultades, para mí los árboles de gran tamaño no se ajustan a la visualización correctamente, sólo la conversión a PDF ayuda, eso ya es bueno.