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

 
elibrarius:

Algo similar a la permutación que encontró Maxim. ¿Pero tiene sentido sustituir un predictor con una variación de 0,1 a 0,2 por una variación de 800 a 300000 en lugar de un predictor con una variación de 0,1 a 0,2? ¡No!

Pero barajar sus filas sí. El rango de números y la distribución de probabilidades se mantendrán, pero los valores de cada ejemplo pasarán a ser aleatorios.

Sí, efectivamente algo parecido, probablemente fue cuando surgió la idea. No entendí cuál es el problema para cambiar el predictor, porque cada predictor tiene sus propios valores en la línea, además es necesario mantener el desglose de la cuadrícula de estos valores (puede ser uniforme paso 0,1 0,2 0,3 o cualquier otro - las variantes están disponibles de diferentes desarrolladores de modeladores) tal, como lo fue cuando el algoritmo de árbol trabajado, si es posible.

Y lo que también es importante es que es necesario comprobar no en toda la muestra, sino exactamente en aquellas filas en las que se activó la hoja anterior, para que los datos fueran comparables en precisión, es decir, es necesario pre-filtrar la muestra (para la evaluación en diferentes hojas, respectivamente, diferente filtración).

 
Aleksey Vyazmikin:

Sí, se parece, probablemente fue cuando surgió la idea. No entiendo cuál es el problema de cambiar el predictor, porque cada predictor tiene sus propios valores en la línea, además es necesario mantener el desglose de la rejilla de estos valores (puede ser paso uniforme 0,1 0,2 0,3 o cualquier otro - hay opciones para diferentes desarrolladores de modeladores) como lo fue cuando el algoritmo de árbol trabajó, si es posible.

Bien, en lugar del predictor cuyo máximo era 0,2 sustituya el valor de otro predictor con valor de 800 a 300000? Y resultará que siempre irá a la rama correcta. Y tenemos que comprobar ambas ramas, la derecha y la izquierda.
La normalización ayudará a encajar en el rango, pero la distribución de probabilidad puede ser diferente, como resultado las ramas de la derecha se activarán más a menudo que las de la izquierda o viceversa.
O es que he entendido mal tu idea y estamos hablando de cosas diferentes.

Aleksey Vyazmikin:

Otra cosa importante es que no debemos comprobar toda la muestra, sino precisamente las filas en las que se activó la hoja anterior, para que los datos sean comparables en cuanto a precisión, es decir, debemos prefiltrar la muestra (para la evaluación en diferentes hojas, respectivamente, diferentes filtrados).

Al descartar el predictor, dejamos caer los nodos que separan sus datos (¿por qué una hoja separada?). Al descartar cada nodo tenemos que comprobar 2 ramas. Si descartamos 10 nodos, obtenemos 11 opciones (subárboles) con 11 hojas como respuesta. Esto debe ser promediado, corriendo toda la muestra con una columna barajada mostrará aproximadamente esto en el cambio en el error final del árbol/bosque.
Lea el artículo sobre la pemutación - allí se describe todo en detalle.

 
elibrarius:

Basta con sustituir el valor del predictor con un máximo de 0,2 por el valor del otro predictor con valores entre 800 y 300000. Y resultará que siempre irá a las ramas de la derecha. Y tenemos que comprobar ambas ramas, la derecha y la izquierda.
La normalización ayudará a encajar en el rango, pero la distribución de probabilidad puede ser diferente, como resultado las ramas de la derecha se activarán más a menudo que las de la izquierda o viceversa.
O no entiendo tu idea y estamos hablando de cosas diferentes.

Al descartar el predictor estamos descartando los nodos que comparten datos en él (¿qué tiene que ver esto con una hoja aparte?). Al descartar cada nodo tenemos que comprobar 2 ramas. Si descartamos 10 nodos, obtenemos 11 opciones con 11 hojas como respuesta. Esto tiene que ser promediado, correr toda la muestra con una columna barajada mostrará aproximadamente esto en el cambio en el error final del árbol/bosque.
Lea el artículo sobre la pemutación - allí se describe todo en detalle.

Mi método no es la pemutación, así que no puedo reproducirlo.

Procedo de otro, que una hoja es una regla ya completada - una característica de alguna observación, y bien puede existir ya sin una estructura de árbol. Un árbol es una herramienta para generar reglas a partir de observaciones.

Por supuesto, estoy de acuerdo en que algunos predictores harán que una regla de la hoja modificada no funcione por completo en la misma parte de la muestra, pero esto no es un problema, ya que el objetivo es encontrar el mejor análogo y comparar sólo con él - es normal que algunos predictores que dividen la muestra por splits se pierdan, pero normalmente esto sólo afecta a la serie de valores de un predictor individual. Por ejemplo, tenemos una hoja con tres predictores A>3 && B<1 && C>=20, hay predictores D y E que no están incluidos en las reglas de la lista, respectivamente tenemos que eliminar uno por uno cada predictor, A para empezar y sustituirlo por D y E con pasos de rejilla de partición del valor del predictor y con diferentes signos de desigualdad, en este caso comprobar cada nueva regla en las mismas partes de la muestra donde se activó la original y obtener estadísticas de precisión de clasificación para cada regla. Y, en consecuencia, la mejor opción es compararlo con el original y dar una puntuación a esta comparación. Hacer este procedimiento para todas las hojas. Excluyendo las hojas que están duplicadas. Es importante que no se evalúe el resultado del árbol como un conjunto de reglas, y que cada regla enunciada en la hoja esté separada de las demás.

No estoy tratando de determinar la importancia del predictor para el árbol de la codicia, sino la importancia del predictor para la estabilidad de la regla (hoja) propuesta por el modelo.
 
Aleksey Vyazmikin:

Mi método no es la pemutación, así que no puedo reproducirlo.

Procedo de otro, que una hoja es una regla ya completada - una característica de alguna observación, y bien puede existir ya sin una estructura de árbol. Un árbol es una herramienta para generar reglas a partir de observaciones.

Por supuesto, estoy de acuerdo en que algunos predictores harán que una regla de la hoja modificada no funcione por completo en la misma parte de la muestra, pero esto no es un problema, ya que el objetivo es encontrar el mejor análogo y comparar sólo con él - es normal que algunos predictores que dividen la muestra por splits se pierdan, pero normalmente esto sólo afecta a la serie de valores de un predictor individual. Por ejemplo, tenemos una hoja con tres predictores A>3 && B<1 && C>=20, hay predictores D y E que no están incluidos en las reglas de la lista, respectivamente tenemos que eliminar uno por uno cada predictor, A para empezar y sustituirlo por D y E con pasos de rejilla de partición del valor del predictor y con diferentes signos de desigualdad, en este caso comprobar cada nueva regla en las mismas partes de la muestra donde se activó la original y obtener estadísticas de precisión de clasificación para cada regla. Y, en consecuencia, la mejor opción es compararlo con el original y dar una puntuación a esta comparación. Hacer este procedimiento para todas las hojas. Excluyendo las hojas que están duplicadas. Es importante evaluar no el resultado del árbol como un conjunto de reglas, sino cada regla enunciada en la hoja por separado de las demás.

No estoy tratando de determinar la importancia del predictor para el árbol de la codicia, sino la importancia del predictor para la estabilidad de la regla (hoja) propuesta por el modelo.
He estado haciendo el andamiaje hasta ahora. Así que en la dirección de tu MO - ya sabes lo que tienes que hacer)
 
elibrarius:
Por ahora estoy andando con un andamio. Así que en la dirección de tu MO - ya sabes lo que tienes que hacer)

Así que resulta que cada uno habla de lo suyo :)

Dígame, ¿es realista implementar en el mismo Alglib la posibilidad de construir un bosque sólo con valores predictores únicos, o al menos con divisiones únicas? Los árboles serán menos, por supuesto, pero no duplicarán sus errores/respuestas correctas, lo que debería dar más verosimilitud fuera de la formación de la muestra.

 
Aleksey Vyazmikin:

Dígame, ¿es realista implementar en el mismo Alglib la construcción de un bosque sólo con valores predictores únicos, o al menos con divisiones únicas? Esto será menos árboles, por supuesto, pero no duplicarán sus errores/respuestas correctas, lo que debería dar más plausibilidad fuera de la muestra de entrenamiento.

Por supuesto. MQL permite programar cualquier cosa, como cualquier otro lenguaje. Y Alglib puede reescribirse hasta quedar irreconocible según sus ideas.

 
Elibrarius:

Por supuesto. MQL permite programar cualquier cosa, como cualquier otro lenguaje. Y Alglib puede reescribirse hasta quedar irreconocible para adaptarse a sus ideas.

En la palabra "de forma realista" puse "tan simple como eso"...

Pero de la respuesta saco la actitud, gracias, no me molestaré.

 
Aleksey Vyazmikin:

En la palabra "de forma realista" puse "tan simple como eso"...

Pero por la respuesta entiendo la actitud, gracias, no me molestaré.

Complicado, por supuesto.
Pero hay una base en forma de función de árbol. Eso es lo que puedes modificar a tu gusto.
 
elibrarius:
Difícil, por supuesto.
Pero hay una base en forma de función de árbol. Eso es lo que puedes modificar a tu antojo.

Gracias por su respuesta. Tienes un buen conocimiento del código, ¿estás planeando un lanzamiento público con mejoras en el algoritmo de construcción de árboles? Incluso cosas como la profundidad del árbol o la poda incorporada a un tamaño de número de observación de reglas definible serían muy útiles allí. Yo no he empezado a utilizar Alglib, pero hay quienes podrían encontrarlo muy útil.

 
Aleksey Vyazmikin:

Gracias por su respuesta. Tienes un buen conocimiento del código, ¿estás planeando un lanzamiento público con mejoras en el algoritmo de construcción de árboles? Incluso cosas como la profundidad del árbol o la poda incorporada a un tamaño de número de observación de reglas definible serían muy útiles allí. Yo no he utilizado Alglib, pero hay quienes pueden encontrarlo muy útil.

Descubrirlo y hacer lanzamientos son cosas diferentes. Ahora estoy experimentando. Ahora estoy mezclando predictores. Es posible que lo abandone al igual que hice con NS debido a mi incapacidad para soportar el ruido.

Resolverlo es bastante fácil. Sólo hay que mirar el código durante unas horas y todo se aclarará.