Discusión sobre el artículo "Los bosques aleatorios predicen las tendencias" - página 11

 
CyberCortex:


Me ocupo de cosas muy concretas, así que no me inclino a hablar de nada "en general".

Así que más específicamente.

Hay unos 140 paquetes de aprendizaje automático en el shell de caret. En mi trabajo utilizo dos paquetes para bosques de árboles aleatorios y un paquete para máquinas de vectores soporte (SVM). Como se puede ver hacer cualquier generalización de las herramientas de aprendizaje automático disponibles en R no es algo que soy capaz de hacer.

Además.

Esta es una rama que utiliza el muy limitado shell Rattle, del cual sólo he utilizado el paquete randomforest en este artículo.

Además.

De dicho paquete sólo uso una parte de las funciones en este artículo.

Más adelante comentaré tu post usando sólo estas limitaciones, pero puedo poner el código del programa y los resultados de su uso bajo mis palabras.

Asi que

1. "Todas las series financieras son las llamadas series temporales, en las que el orden de los valores es importante". - nadie lo niega y este orden no se rompe, aunque sea una serie temporal. 2. "Usted, habiendo entrenado el modelo sobre los precios P1, P2, P3...Pn, no cambia su orden al probar sobre Fuera de Muestras o al utilizarlos realmente.

Esto es totalmente incoherente con los paquetes especificados. Es posible implementar su observación dentro de otros paquetes, pero sería un código mucho más complejo. El código utilizado en el artículo (que es el enfoque más común en los algoritmos de aprendizaje automático) es el siguiente:

La muestra inicial (conjunto de datos) se divide en tres partes: entrenar (70%), probar(15%), validar(15). El algoritmo de partición es el siguiente: por ejemplo, para entrenar, el 70% de las filas del conjunto de datos original se seleccionan aleatoriamente en lugar de secuencialmente. Del 30% restante, se vuelve a seleccionar aleatoriamente otro 15%. Está claro que el 15% restante también es una secuencia aleatoria de filas. No cabe duda de que no se respeta la secuencia de barras.

Pero eso no es todo.

El entrenamiento en el conjunto de entrenamiento sólo utiliza una parte de los datos (aproximadamente el 66%). La parte restante de los datos es la estimación fuera de muestra (OOS). Es decir, las barras sobre las que se calculó el OOV eran diferentes, pero estaban mezcladas con las barras sobre las que se realizó el entrenamiento. El papel da esta estimación y siempre da el mejor rendimiento.

Luego en rattle se puede obtener una estimación del modelo entrenado sobre otros dos conjuntos de datos. Comparando TRES estimaciones se pueden sacar conclusiones.

Una vez más, se requiere un esfuerzo especial para entrenar modelos en series temporales. Si desea utilizar rattle, la variable objetivo y los predictores correspondientes deben permitir el orden aleatorio de las barras en el entrenamiento y la prueba.

2. Estoy de acuerdo contigo en una cosa: si la entrada es 100% predictores basura, obtendremos 100% basura en la salida. Esto es obvio y nadie lo discute. Lo único que digo es que hay algoritmos en los que no importa sacrificar los datos, porque dan buenos resultados en Fuera de Muestras con cualquier cantidad de datos basura que no sea el 100%, porque los datos basura no se utilizan de facto. También es importante distinguir aquí entre algoritmos para los que la reducción de la dimensionalidad de los datos es crítica, como con el análisis de componentes principales o los autocodificadores, y algoritmos que son insensibles a la dimensionalidad de los datos.

No lo son. Randomforest tiene un algoritmo incorporado para determinar la importancia de los predictores. Este algoritmo es completamente inútil si hay basura entre los predictores. El propio paquete randomforest tiene una función adicional para preseleccionar los predictores basura, pero no está disponible en rattle.

"En el mercado de valores, la investigación sobre la relación entre las causas económicas y la dirección del movimiento es común, pero nada de esto se aplica a los intervalos intradía". - Pues sí, y sí se aplica a intervalos intradía, como la publicación de las Nóminas No Agrícolas.

No sé, no conozco este recurso. Pero conozco bien la economía. Y puedo afirmar con seguridad que los datos horarios de Gazprom no dependen de ningún dato económico de otras empresas. No hay preguntas sobre los resultados del mes.

3. por supuesto que te entiendo, cada uno gana como sabe, pero ¿has implementado alguna vez tú mismo algún algoritmo de aprendizaje automático? Estoy convencido de que para entender cómo funciona un algoritmo, tienes que escribirlo tú mismo desde cero. Créeme, en este caso descubrirás cosas que no están escritas en los libros. E incluso elementos aparentemente obvios que antes parecían fáciles, en realidad funcionan de forma diferente a lo que pensabas:)

Una cosa es hacer mercenarios y otra conducirlos. Yo prefiero conducirlos, pero cada uno hace su elección.

PD.

He escrito un libro con respuestas más profundas a las preguntas que me has planteado.

PSPS

Mi experiencia personal muestra que el tiempo principal hasta el 70% se gasta en la selección de predictores - trabajo aburrido y tedioso. Con el fin de vender el libro se ha formado algún colectivo - nadie consigue hacer una selección rápida y eficaz de predictores, que no genere modelos sobreentrenados. Y la mayoría de los lectores ya han superado el libro y utilizan mejores herramientas para el trabajo.

Con agradecimiento por su interés significativo en el hilo.

 
faa1947:


Gracias por su detallada respuesta.

Pero le pediría que aclarara algunos puntos.

En primer lugar, usted escribió más arriba que el ejemplo de mi programa trabajando con datos médicos es "ilustrativo" y se refirió al hecho de que las series temporales tienen una secuencia estricta.

"Todas las series financieras son las llamadas series temporales, en las que el orden de los valores es importante".

Y luego escribes que en Random Forest, que utilizas:"No puede haber ninguna cuestión de adherencia a la secuencia de barras".

Y permítame preguntarle: ¿cómo funciona entonces Random Forest en series temporales si el algoritmo utiliza inicialmente el método del subespacio aleatorio y baraja estas series temporales?

"Una vez más, aprender modelos sobre series temporales requiere un esfuerzo especial". - entonces volvemos otra vez al principio. Entonces, ¿por qué perder el tiempo con estos algoritmos si se requiere un esfuerzo especial para que funcionen en series temporales? No estamos hablando desde un punto de vista académico en el contexto de la investigación universitaria, donde se fomenta este tipo de trabajo, sino desde un punto de vista práctico.

"Puedo afirmar con seguridad que el sentimiento de Gazprom no depende de ningún dato económico de otras empresas".- ¿Significa eso que las acciones de Gazprom en intervalos intradiarios no se ven afectadas en modo alguno por el índice RTS, que incluye a Gazprom y a otras empresas?

"Una cosa es fabricar un Mercedes y otra conducirlo. Yo prefiero conducirlo, pero cada cual hace su elección. "En sofistería a esto se le llama desviarse de la tesis original:) Yo estaba hablando de algoritmos y su realización, y tú imperceptiblemente planteas una tesis sobre los coches, que exteriormente está conectada con la tesis inicial, pero no es idéntica a ella. Creo que hay una "pequeña" distancia entre los algoritmos y los coches. No me hagas caso, es que me gusta fijarme en esas peculiaridades:)

Resumiendo: lo que escribes concretamente sobre Rattle y Random Forest es muy probablemente relevante para la realidad y tienes conocimientos sobre ello.

Pero una pregunta sigue abierta: ¿por qué una persona, teniendo la posibilidad de elegir entre dos algoritmos de igual calidad (el primero de los cuales funciona perfectamente bien en series temporales sin esfuerzos y habilidades especiales, y el segundo - con ellos), hacer una elección a favor de este último? ¿Y será óptima en este caso?

 
joo:
No pude pasar de esa frase. ¡Respeto!
Gracias:)
 
CyberCortex:


Pero sigue abierta una pregunta: ¿por qué una persona, pudiendo elegir entre dos algoritmos de calidad de clasificación equivalente (el primero de los cuales funciona perfectamente en series temporales sin esfuerzos y habilidades especiales, y el segundo - con tales), debería decantarse por el segundo? ¿Y será óptima en este caso?

Diferentes herramientas resuelven diferentes problemas, que a su vez vienen determinados por el material disponible.

El sonajero es una gran herramienta para probar una idea rápidamente. Pero será bastante difícil construir un modelo funcional con ella.

Puedes profundizar en rattle y extraer de él un registro de accesos listos como parte del paquete randomforest. Si tu variable objetivo es, por ejemplo, predecir incrementos de activos en lugar de tendencias, y has conseguido encontrar predictores para eso, entonces randomforest será muy útil. Si va a predecir tendencias, tendrá que dividir manualmente la muestra en trozos, preservando la secuencia, lo que es difícil (aunque posible) en rattle y trabajar directamente en el paquete randomforest, que no impone ninguna restricción al algoritmo de formación de la muestra de entrada. Existe un conjunto bastante amplio de herramientas de generación de muestras para pruebas. Estos son paquetes separados.

Y así sucesivamente. La conclusión general es que no existe una herramienta "óptima".

Cada uno de los paquetes tiene muchas sutilezas que resuelven ciertos problemas en los datos brutos. En general, el proceso ni siquiera es muy sencillo.

PD. Cuando escribí sobre Gazprom, me refería a la relación entre las cotizaciones y los valores de tipo beneficio. Y el índice es aritmético, el mismo pavo..... Pero ese es otro problema... Aunque el uso de aprendizaje automático en el mercado de valores es más prometedor que en forex. Como me parece a mí.

 
faa1947:

Distintas herramientas resuelven distintos problemas, que a su vez vienen determinados por el material disponible.

El sonajero es una gran herramienta para probar una idea rápidamente. Pero es difícil construir un modelo de trabajo con ella.

Puedes profundizar en rattle y extraer de él un registro de accesos listos como parte del paquete randomforest. Si tu variable objetivo es, por ejemplo, predecir incrementos de activos en lugar de tendencias, y has conseguido encontrar predictores para ello, entonces randomforest te será muy útil. Si va a predecir tendencias, tendrá que dividir manualmente la muestra en trozos, preservando la secuencia, lo que es difícil (aunque posible) en rattle y trabajar directamente en el paquete randomforest, que no impone ninguna restricción al algoritmo de formación de la muestra de entrada. Existe un conjunto bastante amplio de herramientas de generación de muestras para pruebas. Estos son paquetes separados.

Y así sucesivamente. La conclusión general es que no existe una herramienta "óptima".

Cada uno de los paquetes tiene muchas sutilezas que resuelven ciertos problemas en los datos brutos. En general, el proceso ni siquiera es muy sencillo.

PD. Cuando escribí sobre Gazprom, me refería a la relación entre las cotizaciones y los valores de tipo beneficio. Y el índice es aritmético, el mismo pavo..... Pero ese es otro problema... Aunque el uso de aprendizaje automático en el mercado de valores es más prometedor que en forex. Me parece a mí.

Gracias, no tengo más preguntas.
 
buen artículo
 
¡Buen trabajo!
 
Interesante artículo, gracias. He oído hablar de R por primera vez, parece algo muy útil. Hace tiempo que quiero hacer una red neuronal que pueda operar por sí misma basándose en datos históricos, intentaré descargar el histórico de mt5 (ohlc, spread, volúmenes), pasarlo a rattle y ver qué pasa.
 
Dr.Trader:
Interesante artículo, gracias. He oído hablar de R por primera vez, parece algo muy útil. Hace tiempo que quiero hacer una red neuronal que pueda operar en base a datos históricos, voy a intentar descargar el histórico de mt5 (ohlc, spread, volúmenes), pasarlo a rattle, y ver que pasa.

Rattle tiene seis modelos, uno de ellos es NS. Te recomiendo que compares los resultados de NS con random forests, ada y SVM. Creo que te sorprenderán mucho los resultados.

 
Dr.Trader:
Interesante artículo, gracias. He oído hablar de R por primera vez, parece algo muy útil. Hace tiempo que quiero hacer una red neuronal que pueda operar en base a datos históricos, voy a intentar descargar el histórico de mt5 (ohlc, spread, volúmenes), pasarlo a rattle y ver que pasa.

Esto es exactamente para lo que rattle no está diseñado. Necesitas trabajar directamente en R. Aquí hay una variante de tal solución https://www.mql5.com/es/articles/1103.

Suerte

Третье поколение нейросетей: "Глубокие нейросети"
Третье поколение нейросетей: "Глубокие нейросети"
  • 2014.11.27
  • Vladimir Perervenko
  • www.mql5.com
Статья посвящена новому и очень перспективному направлению в машинном обучении — так называемому "глубокому обучению" и конкретней "глубоким нейросетям". Сделан краткий обзор нейросетей 2 поколения, их архитектуры связей и основных видов, методов и правил обучения и их основных недостатков. Далее рассмотрена история появления и развития нейросетей 3 поколения, их основные виды, особенности и методы обучения. Проведены практические эксперименты по построению и обучению на реальных данных глубокой нейросети, инициируемой весами накапливающего автоэнкодера. Рассмотрены все этапы от выбора исходных данных до получения метрик. В последней части статьи приведена программная реализация глубокой нейросети в виде индикатора-эксперта на MQL4/R.