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

 
elibrarius:
Creo que SanSanych se refería a no molestarse en escribir su propio código, sino a utilizar funciones ya hechas de R

No se trata sólo del código. El código listo consiste en aplicar algunas ideas.

Ver

gafs - selección de predictores por algoritmo genético
y el modelo final se basa en un subconjunto del predictor, que se adjunta al número óptimo de generaciones determinado por el remuestreo


rfe - selección regresiva de predictores

implementa la selección hacia atrás de los predictores basada en la clasificación de la importancia del predictor.

Los predictores se ordenan y los menos importantes se eliminan secuencialmente antes de la modelización.

El objetivo es encontrar un subconjunto de predictores que puedan ser utilizados por un modelo más preciso

safs - - robustez de la selección de predictores simulada (recocido de predictores)

Durante una búsqueda, se necesitauna medida de aptitud (es decir, el valor energético de SA) para la búsqueda, que es una medida interna de rendimiento. Durante la búsqueda, los datos disponibles son las instancias seleccionadas por el remuestreo de alto nivel (por ejemplo, las partes de nueve décimas mencionadas anteriormente). El enfoque general debe realizar un procedimiento de remuestreo diferente. La otra opción debe utilizar múltiples fuera de muestra para determinar la evaluación interna del rendimiento


Al hacerlo, recuerde siempre: "basura que entra, basura que sale".

 
SanSanych Fomenko:

No se trata sólo del código. El código listo consiste en aplicar algunas ideas.

Ver

gafs - selección de predictores por algoritmo genético
y el modelo final se basa en un subconjunto del predictor, que se adjunta con el número óptimo de generaciones determinado por el remuestreo


rfe - selección regresiva de predictores

implementa la selección hacia atrás de los predictores basada en la clasificación de la importancia del predictor.

Los predictores se ordenan y los menos importantes se eliminan secuencialmente antes de la modelización.

El objetivo es encontrar un subconjunto de predictores que puedan ser utilizados por un modelo más preciso

safs - - robustez de la selección de predictores simulada (recocido de predictores)

Durante una búsqueda, se necesitauna medida de aptitud (es decir, el valor energético de SA) para la búsqueda, que es una medida interna de rendimiento. Durante la búsqueda, los datos disponibles son las instancias seleccionadas por el remuestreo de alto nivel (por ejemplo, las partes de nueve décimas mencionadas anteriormente). El enfoque general debe realizar un procedimiento de remuestreo diferente. La otra opción debe utilizar múltiples fuera de muestra para determinar la evaluación interna del rendimiento


Al hacerlo, recuerde siempre: "basura que entra, basura que sale".

Ideas interesantes. No puedes escribir algo así...

Hice un examen de correlación. Para empezar.
Ordeno los predictores por correlación total, luego voy de menos a más y quito los que están correlacionados. Luego repito esto con el resto de los predictores.

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 - suma de columnas
5.35,5.26,4.80,5.42,5.30,5.16,

Kfull clasificado
4.80(2),5.16(5),5.26(1),5.30(4),5.35(0),5.42(3),
Entradas a eliminar: 1,3,4,
Entradas a mantener: 0,2,5,

 
SanSanych Fomenko:

No se trata sólo del código. El código listo consiste en aplicar algunas ideas.

Ver

gafs - selección de predictores por algoritmo genético
y el modelo final se basa en un subconjunto del predictor que está unido al número óptimo de generaciones determinado por el remuestreo


rfe - selección regresiva de predictores

implementa la selección hacia atrás de los predictores basada en la clasificación de la importancia del predictor.

Los predictores se ordenan y los menos importantes se eliminan secuencialmente antes de la modelización.

El objetivo es encontrar un subconjunto de predictores que puedan ser utilizados por un modelo más preciso

safs - - robustez de la selección de predictores simulada (recocido de predictores)

Durante una búsqueda, se necesitauna medida de aptitud (es decir, el valor energético de SA) para la búsqueda, que es una medida interna de rendimiento. Durante la búsqueda, los datos disponibles son las instancias seleccionadas por el remuestreo de alto nivel (por ejemplo, las partes de nueve décimas mencionadas anteriormente). El enfoque general debe realizar un procedimiento de remuestreo diferente. La otra opción debe utilizar múltiples fuera de muestra para determinar la evaluación interna del rendimiento


Al hacerlo, recuerde siempre que "la basura entra y sale".

Ideas interesantes, por supuesto que no puedes escribir esto tú mismo, ni se te ocurre la idea)

La cuestión sigue siendo si esas ideas complejas son necesarias para el comercio. Por ahora intentaré eliminar los que están muy correlacionados, si el resultado es inaceptable, tendré que cambiar a R
 
elibrarius:

Ideas interesantes, claro que no puedes escribirlas tú mismo, ni se te ocurre la idea).

La cuestión sigue siendo si estas ideas complejas son necesarias para el comercio. Intentaré eliminar los que están altamente correlacionados por ahora, si el resultado es inaceptable, tendré que cambiar a R

Estás atascado con alglib en el sentido de que es muy poco útil en el trabajo de investigación. El intérprete de R y probar cualquier cosa es muy fácil.

Es imprescindible eliminar los predictores altamente correlacionados (multicolineales).

Correlación entre el predictor y el objetivo: ciertamente interesante. Puedo aportar una idea para este tipo de correlación. Construya una regresión lineal (hay otras más sofisticadas) y deseche los predictores que no tengan coeficientes significativos. Eso no funcionó para mí. Tal vez puedas hacerlo.

Pero la selección de los predictores es imprescindible en MO

 

El artículo https://www.mql5.com/ru/articles/497 sugería cambiar la pendiente de la función de activación en función del número de entradas.

En Algli y en R, ¿la pendiente es estándar o se autooptimiza en función del número de entradas? ¿O es que casi nadie sabe lo que hay dentro de estas cajas negras?

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

El artículo https://www.mql5.com/ru/articles/497 sugería cambiar la pendiente de la función de activación en función del número de entradas.

En Algli y en R, ¿la pendiente es estándar o se autooptimiza en función del número de entradas? ¿O qué hay dentro de esas cajas negras que casi nadie conoce?


Algunas bibliotecas de redes neuronales ofrecen al usuario amplias posibilidades de personalizar la red neuronal que se está creando, hasta configurar funciones para activar neuronas individuales o añadir/eliminar conexiones individuales. Sin embargo, la práctica demuestra que, a menudo, no es necesaria una gran funcionalidad: hay algunas arquitecturas genéricas que no pueden mejorarse significativamente con un ajuste fino, y la situación es similar con los métodos de entrenamiento de las redes neuronales. Por último, hay otra razón para no dar al usuario una caja de herramientas demasiado rica: si una red neuronal requiere un ajuste fino, éste no es difícil para el autor de un paquete de software, pero a menudo puede desconcertar al usuario final. De ahí la conclusión: un buen paquete de redes neuronales no debería requerir una compleja personalización. Siguiendo este principio, el paquete ALGLIB intenta resolver automáticamente el mayor número posible de problemas, dejando sólo las decisiones realmente importantes al usuario.

Arquitecturas disponibles
El paquete ALGLIB permite crear redes neuronales sin capas ocultas, con una capa oculta y con dos capas ocultas. Las conexiones van de la capa de entrada a la primera capa oculta (si la hay), luego a la segunda y después a la capa de salida. No hay conexiones "cortas" entre la capa de entrada y la de salida. Las capas ocultas tienen una de las funciones de activación de compresión estándar, pero es posible una mayor variedad para la capa de salida de la red neuronal. La capa de salida puede ser lineal (este tipo de redes se utilizan en problemas de aproximación), puede tener una función de activación compresiva (en caso de que las salidas de la red estén limitadas a un determinado rango). También hay redes con una función de activación limitada por arriba (o por abajo). En el caso más simple (el límite es cero) esta función tiende a x cuando x tiende a +∞, y tiende exponencialmente a cero cuando x tiende a -∞.
Un caso especial son las redes neuronales con capa de salida lineal y normalización SOFTMAX de las salidas. Se utilizan para problemas de clasificación, en los que las salidas de la red deben ser no negativas y su suma debe ser estrictamente igual a uno, lo que permite utilizarlas como probabilidades de asignación del vector de entrada a una de las clases (en el caso límite las salidas de la red entrenada convergen a estas probabilidades). El número de salidas de una red de este tipo es siempre al menos dos (limitación dictada por la lógica elemental).
Este conjunto de arquitecturas, a pesar de su carácter minimalista, es suficiente para resolver la mayoría de los problemas prácticos. La ausencia de detalles superfluos permite concentrarse en el problema (clasificación o aproximación) sin prestar excesiva atención a detalles sin importancia (por ejemplo, la elección de una función de activación concreta para una capa no lineal suele tener poco efecto en el resultado).

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

 
Lee antes, pero eso no responde a la pregunta(
"Las capas ocultas tienen una de las funciones de activación de compresión estándar", ¿cuál? ¿Adapta sus coeficientes al número de conexiones entrantes? El hecho de que el número de entradas afecte al resultado se demostró en el artículo. De lo contrario, nos cargamos 100 neuronas en una capa oculta (o incluso en una capa de entrada), y las siguientes neuronas pueden funcionar bien con sólo 5 entradas...
 
elibrarius:
Lee antes, pero eso no responde a la pregunta(
"Las capas ocultas tienen una de las funciones de activación de compresión estándar", ¿cuál? ¿Adapta sus coeficientes al número de conexiones entrantes? El hecho de que el número de entradas afecte al resultado se demostró en el artículo. Si no, alimentamos 100 neuronas en una capa oculta (o incluso en la capa de entrada) y las siguientes neuronas pueden funcionar bien con sólo 5 entradas...


sólo si hurgas en el código o les preguntas... si hay 2 tipos de rejilla, probablemente sigmoide y alguna otra en la salida, que varía dependiendo de si es lineal o en rango

y la arquitectura de rejilla es un poco molesta... Voy a tener que pasar por un montón de problemas, pero por suerte sólo hay 2 capas ocultas, así que ya es más fácil :) He leído en algún sitio que la capa oculta, en general, debe ser 2 veces menor que la capa de entrada... o más, lo he olvidado )

 

Por cierto, he comprobado la correlación con periodos de 10 a 60 (6 piezas) en el gráfico M1 del EURUSD, hacia la salida (no tengo zigzag, pero sí algo parecido).

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

La correlación es de -0,01 a 0,01, es decir, no hay ninguna correlación.

Sin embargo, su Asesor Experto muestra beneficios. Creo que es mucho más fácil escribir un Asesor Experto ordinario que funcione según estas reglas.

 
Maxim Dmitrievsky:


Leí en algún sitio que la capa oculta, en general, debe ser la mitad del tamaño de la capa de entrada... o más, lo he olvidado )

Una de las reglas "Número óptimo de neuronas en la capa oculta (# de neuronas ocultas) = (# de entradas + # de salidas)/2 , o SQRT(# de entradas * # de salidas) "

Y en la red Reshetov que usaste, 2nEntradas

Razón de la queja: