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

 
Maxim Dmitrievsky:

todos los castores construyen la misma presa, aunque no lo sepan.

pero cada uno se obstina en creer que ha inventado algo nuevo.

El castor es una criatura trabajadora y justa, otra cosa es que un castor estudioso sea una criatura malvada, ahuyéntalo con una escoba de cualquier sitio, o mejor simplemente ignóralo.

 
Kesha Rutov:

El castor es una criatura trabajadora y correcta, otra cosa es que el Aprendiz de Jinete sea una criatura desagradable, ahuyéntalo con una escoba de todas partes, o mejor aún, ignóralo.

"Analista en un frasco" :)) lavavajillas a la mierda

 
Aleksey Vyazmikin:

La cuestión es que incluso si el 50% de todos se toman, entonces más allá hay una clara selección de este 50% a la primera división de la raíz (o en Alglib no es así?). CatBoost no sólo tiene una selección aleatoria de predictores, sino también una división aleatoria (los pesos se añaden aleatoriamente a los cálculos) en los primeros árboles.

Obtengo resultados diferentes, y mi objetivo no es estimar todo el modelo, sino obtener hojas, que con alta probabilidad describen la mayor parte de la muestra. Luego esas hojas se prueban en la historia año a año y se hace una composición de las mismas, que tal vez no describa todo el mercado, pero creo que es mejor tener respuestas más precisas a lo que se sabe que adivinar con un 50% de probabilidad en la mayoría de las veces.

Los predictores, ahora serán del orden de 600, por lo que un exceso total ya no es realista.

Alglib revisa todos los predictores restantes del 50%, divide cada uno en 4 partes por cuartiles y elige la división con el mejor error de todas las variantes.

En principio, la partición aleatoria no es difícil de hacer.
No he visto árboles individuales con buenos resultados en las pruebas (45-50%), pero un bosque de ellos es más interesante).


 
En cuanto a la importancia de los predictores examinados:
Los paquetes xgboost, lightGBM tenían métodos incorporados para estimar la importancia de las características para los "modelos de madera":

  1. Ganar
    Esta medida muestra la contribución relativa de cada característica al modelo. Para calcularla, recorremos cada árbol, miramos en cada nodo del árbol qué característica lleva a una división del nodo y cuánto se reduce la incertidumbre del modelo según la métrica (impureza de Gini, ganancia de información).
    Para cada característica, su contribución se suma en todos los árboles.
  2. Portada
    Muestra el número de observaciones de cada característica. Por ejemplo, tienes 4 características, 3 árboles. Supongamos que la ficha 1 tiene 10, 5 y 2 observaciones en los nodos del árbol 1, 2 y 3 respectivamente. Entonces la importancia para esta ficha sería 17 (10 + 5 + 2).
  3. Frecuencia
    Muestra la frecuencia con la que se encuentra una determinada característica en los nodos del árbol, es decir, se cuenta el número total de nodos del árbol divididos para cada característica en cada árbol.
En realidad, no dividen la importancia correctamente.
Tengo un bosque entrenado en 5 barras que resulta mejor en una prueba que en 100. Pero cuando se enseña por 100, no se marcan los 5 primeros como importantes, sino algunos lejanos.
Cuando se entrena a 100, el error de los árboles y bosques individuales es menor, obviamente debido al sobreentrenamiento y a la importancia que se da a las barras de 30 a 100. Pero es evidente que no son importantes según la lógica habitual, sino porque el bosque a 5 bares da mejores resultados.
 
Por cierto, no entiendo la diferencia entre Cobertura y Frecuencia. Más concretamente, ¿qué es una observación de características en Cover? (Entiendo que con avería por un chip en Frecuencia). Los árboles parecen estar divididos por rasgos, no observados.
 
Aleksey Vyazmikin:

Hay un script en R con un algoritmo genético para crear un árbol, seleccionar generaciones por mejora de entropía. Luego hay una especie de selección final. Tomo todos los árboles para la selección final y extraigo hojas de ellos para realizar otras mediciones por separado en MT5. El guión no se ha hecho público, por lo que tampoco hay descripciones detalladas. Aparentemente es como seleccionar el mejor árbol del bosque, pero hay una limitación de profundidad para evitar el sobreentrenamiento, bueno el proceso toma alrededor de 2 días en todos los núcleos en la última muestra, donde no todas las barras, pero sólo las señales para entrar, y si todas las barras durante 3 años, entonces el cálculo toma 1,5 meses allí. Después del cálculo hago una división del árbol, es decir, quito la columna con el predictor raíz del mejor árbol de la población y empiezo de nuevo, parecía que incluso en 40 este procedimiento a veces se crean hojas muy buenas, así que he llegado a la conclusión, de que el mejor árbol matemático no es siempre el más efectivo, y una información interfiere con otra, que apareció más tarde utilizada en el mismo CatBoost, cuando los predictores son elegidos al azar de toda la muestra para construir un árbol.

Después de un rápido vistazo al código, vi la selección genética de las características para la construcción del árbol del paquete rpart. Así, a cada árbol se le ofreció aprender su propio conjunto de características. Debido a la genética, este conjunto de características es más rápido que la fuerza bruta completa.
Pero el árbol no es mágico, es el que ofrece rpart. Creo que es lo normal allí.
 
Maxim Dmitrievsky:

primero entrenar el modelo en todas las características, guardar los errores

Luego, uno por uno, aleatorice cada uno de los predictores, digamos por distribución normal, y compruebe el error de nuevo en todas las características, incluyendo esta aleatorizada (cambiada), y compárelo con el inicial. No es necesario volver a entrenar el modelo. Y así comprobar cada uno de los predictores. Si el predictor era bueno, el error de toda la muestra (incluidos todos los demás predictores originales) aumentará drásticamente en comparación con el original. Guarde las diferencias de error y seleccione las mejores fichas en función de ellas. Luego, al final, entrenar sólo a los mejores y modelar en la producción. Los malos predictores son ruido para el modelo, no los necesitamos con su 1%. Los buenos suelen quedarse en 5-10, la importancia del resto disminuye exponencialmente (ley de Zipf).

He intentado enseñar filtros, pero no mucho, no le veo mucho sentido, es mejor meter todo en un modelo a la vez

Si se puede, sólo sobre la selección de predictores MUY competente(ya tiró antes)

Encontré tu post sobre la permutación.
Es una variante interesante. Tendré que probarlo.
Aunque me temo que si lo aplico a un modelo sobre 100 barras, e intento eliminar 95 barras y dejar las 5 primeras, el resultado será del 50%. Al fin y al cabo, esos 5 primeros apenas participaron en escisiones (de media, sólo el 5% de los nodos se construyen en ellos).
 
elibrarius:
Encontré tu post sobre la permutación.
Una variante interesante. Tengo que probarlo.
Aunque me temo que si lo aplico al modelo de 100 barras e intento quitar 95 barras y dejar las 5 primeras, el resultado será del 50%. Al fin y al cabo, esos 5 primeros apenas participaron en escisiones (de media, sólo el 5% de los nodos se construyen en ellos).

No sé lo que estás haciendo con 100 barras, probablemente deberías aplicarlo correctamente y estarás bien

 
Maxim Dmitrievsky:

No sé qué estás haciendo con las 100 barras, probablemente tengas que aplicarlo bien y funcionará

Quiero automatizar el proceso de selección de los predictores sin importancia)

 
Maxim Dmitrievsky:

primero entrenar el modelo en todas las características, guardar los errores

Luego, uno por uno, aleatorice cada uno de los predictores, digamos por distribución normal, y compruebe el error de nuevo en todas las características, incluyendo esta aleatorizada (cambiada), y compárelo con el inicial. No es necesario volver a entrenar el modelo. Y así comprobar cada uno de los predictores. Si el predictor era bueno, el error de toda la muestra (incluidos todos los demás predictores originales) aumentará drásticamente en comparación con el original. Guarde las diferencias de error y seleccione las mejores fichas en función de ellas. Luego, al final, entrenar sólo a los mejores y modelar en la producción. Los malos predictores son ruido para el modelo, no los necesitamos con su 1%. Los buenos suelen quedarse en 5-10, la importancia del resto disminuye exponencialmente (ley de Zipf).

He intentado enseñar filtros, pero no mucho, no le veo mucho sentido, es mejor meter todo en un modelo a la vez

Si se puede, sólo sobre la selección de predictores MUY competente(ya tiró antes)

Yo entendí este método de otra manera.
Para el predictor en estudio, no debemos alimentar valores aleatorios con una distribución normal, sino simplemente barajar las filas de esta columna.

De todos modos, los resultados del artículo son impresionantes. Debería probarlo en la práctica.