Discusión sobre el artículo "Los bosques aleatorios predicen las tendencias" - página 10
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Sobreentrenamiento es un término bien establecido y bastante específico. Usted no sólo lo está sustituyendo sino que además no está explicando lo que a su entender es.
Me recuerda mucho a Sulton ) en la forma de comunicación.
El entrenamiento de un modelo se produce cuando el modelo extrae la esencia del proceso, en la jerga local "patrones", que tienen lugar no sólo en la muestra de entrenamiento, sino también fuera de ella.
El sobreentrenamiento (overfitting) se produce cuando el modelo empieza a escoger algún azar que no existe fuera de la muestra de entrenamiento y, debido a ello, el modelo da un valor de error muy distinto del error de entrenamiento.
Mucha gente en este foro se ha enfrentado al sobreentrenamiento (quizás sin darse cuenta), ya que es muy fácil conseguir un EA sobreentrenado con la ayuda de la optimización en el probador.
Pero todo esto es filosofía.
La realidad está en la habilidad específica, en las herramientas que se utilizan en este proceso.
Con mi artículo y mi libro no intento solucionar el problema del sobreentrenamiento, sino sólo abrir la puerta al mundo de los modelos predictivos, que (los modelos) enseñan a predecir cosas de calidad en el futuro. Si el estimado gpwr hubieraconsultado Rattle después de dedicarle un par de horas, sus preguntas tendrían mucho más contenido sin demostrar que no se molestó en leer mi artículo pero opina sobre su contenido. Pero lo más importante es que Rattle cubre todo el proceso de creación de modelos muy complejos, incluida la estimación del rendimiento de los modelos fuera de muestra, la lista de predictores significativos, el número de patrones encontrados ...... Sigo utilizando Rattle, aunque los modelos reales son diferentes. Sólo para darse cuenta, probar una idea..... 20-30 minutos y la dirección de desarrollo puede cambiar radicalmente.
Un objetivo muy limitado.
Además del artículo y el libro ofrezco servicios de pago. Y cada uno decide si tengo la cualificación necesaria para realizar la lista de trabajos anunciada. Y yo, antes de asumir un encargo concreto, decido si el cliente es capaz de entender el resultado de mi trabajo.
1. formar un conjunto bastante grande de predictores, por ejemplo, 50 piezas con el número de barras 15000
2. Utilizando uno de los algoritmos anteriores, seleccionamos predictores en estas 15 mil barras - normalmente obtenemos de 15 a 20 piezas, que se utilizan en la construcción del modelo más a menudo que en el 20% de los casos.
3. A continuación, tomamos una ventana más pequeña, por ejemplo 2000 barras y empezamos a moverla una barra cada vez, seleccionando predictores significativos de los 20 seleccionados previamente de entre 50.
4. La lista específica de predictores significativos cambia todo el tiempo.
1. ¿Cómo? ¿Necesita 60 años de historial diario?
2. Usted mira hacia el futuro, Señoría. ¿Seleccionas 15-20 predictores en toda la historia, y luego los compruebas en la muestra "no entrenada" de las mismas 15000 barras? Si alguien me dijera hoy qué 15-20 predictores se "muestrearán" en el futuro, no necesitaría nada más para hacerme multimillonario.
Yo uso MatLab. Hay muchas cajas de herramientas diferentes. Así que no tiene por qué suponer que no conozco sus métodos. Tampoco debes suponer que tengo un enfoque superficial o diligente (que es exactamente lo que pienso de tu enfoque). Todo el mundo puede utilizar diferentes paquetes y cajas de herramientas. Pero no todo el mundo puede entender su esencia. Y no necesitas anunciarme tus servicios y tu libro. Mis problemas son mucho más complicados que la definición de sobreentrenamiento. Tengo 10 mil indicadores-predictores económicos, y es muy difícil elegir los que influyen en el mercado. Si reviso cada predictor individualmente, me perderé situaciones como mi ejemplo anterior, cuando la serie objetivo no colisiona con uno de los predictores, pero este predictor está incluido en el modelo de la serie objetivo. Si recorre todas las combinaciones posibles de los distintos predictores, no tendrá tiempo suficiente para hacerlo. Incluso buscar dos predictores de entre 10.000 lleva más de una semana. Hasta ahora tengo una red biológica de autopoda (lleva mucho tiempo explicarlo, necesitas algo de entrenamiento para entenderlo) para seleccionar N variables relevantes. Esta red es más rápida que la búsqueda de todas las combinaciones posibles de predictores, pero sigue siendo lenta. Así que si tienes una idea brillante de cómo determinar que x1 forma parte del modelo y mirando sólo y y x1 en mi ejemplo, te daré una medalla de oro.
1. ¿Cómo es eso? Se necesitan 60 años de historia cotidiana?
2. Estás mirando hacia el futuro, honorable. ¿Seleccionas 15-20 predictores sobre toda la historia, y luego los compruebas sobre la muestra "no entrenada" de las mismas 15000 barras? Si alguien me dijera hoy qué 15-20 predictores se "muestrearán" en el futuro, no necesitaría nada más para hacerme multimillonario.
Yo uso MatLab. Hay muchas cajas de herramientas diferentes. Así que no tiene por qué suponer que no conozco sus métodos. Tampoco debes suponer que tengo un enfoque superficial o diligente (que es exactamente lo que pienso de tu enfoque). Todo el mundo puede utilizar diferentes paquetes y cajas de herramientas. Pero no todo el mundo puede entender su esencia. Y no necesitas anunciarme tus servicios y tu libro. Mis problemas son mucho más complicados que la definición de sobreentrenamiento. Tengo 10 mil indicadores-predictores económicos, y es muy difícil elegir los que influyen en el mercado. Si reviso cada predictor individualmente, me perderé situaciones como mi ejemplo anterior, cuando la serie objetivo no colisiona con uno de los predictores, pero este predictor está incluido en el modelo de la serie objetivo. Si recorre todas las combinaciones posibles de los distintos predictores, no tendrá tiempo suficiente para hacerlo. Incluso buscar dos predictores de entre 10.000 lleva más de una semana. Hasta ahora tengo una red biológica de autopoda para seleccionar N variables relevantes (largo de explicar, necesitas algo de entrenamiento para entenderlo). Esta red es más rápida que la búsqueda de todas las combinaciones posibles de predictores, pero sigue siendo lenta. Así que si tienes una idea brillante de cómo determinar que x1 forma parte del modelo y mirando sólo y y x1 en mi ejemplo, te daré una buena idea.
1. ¿Qué te parece? ¿Se necesitan 60 años de historia diaria?
No exageremos.
Yo trabajo en forex. Predigo tendencias y estoy bastante satisfecho con las tendencias que tienen 50-100 pips de reversión. No necesito un historial diario para eso. En mis ejemplos, esto es H1, 18000 son tres años.
2. Usted mira hacia el futuro, honorable. ¿Seleccionas 15-20 predictores en todo el historial y luego los pruebas en una muestra "no entrenada" de las mismas 15000 barras?
Eso ya lo he explicado. Es muy conveniente que leas lo que te explico personalmente. Yo no miro al futuro. El rendimiento siempre está fuera de muestra. Rattle no ofrece la otra posibilidad que sugieres, aunque quisiera.
Tengo problemas mucho más complejos que definir el sobreentrenamiento. Tengo 10 mil indicadores-predictores económicos, y cómo elegir los que influyen en el mercado es muy difícil. Si revisas cada predictor individualmente,
No hay tal cosa como una búsqueda completa. Los bosques aleatorios funcionan mejor cuando el número de predictores se mide en miles, una vez vi una cifra de 50 mil. En mis datos las cifras son las siguientes: 90 predictores, 10000 filas (barras) - tiempo de entrenamiento del modelo alrededor de un minuto en un núcleo. Como resultado: etiquetas de clase, probabilidad de etiquetas de clase, importancia de cada predictor en la construcción del modelo.
Esta red es más rápida que una búsqueda de todas las combinaciones posibles de predictores,
No hay búsqueda de predictores. El algoritmo es el siguiente. Hay un parámetro - el número de predictores en un nodo del árbol, sobre la base de los cuales se toma la decisión sobre la clasificación. Puede establecerlo usted mismo, por defecto = sqrt (tengo 90 del número máximo de predictores). Aproximadamente, 9 predictores se utilizan en cada nodo. El algoritmo, al considerar cada nodo del árbol siempre toma 9 predictores, pero siempre elige al azar del número total=90. Mediante validación cruzada, se seleccionan finalmente los predictores más significativos y se utilizan en la construcción final del árbol.
PS.
¿Por qué no usas R? Si es de pago, entonces SAS....
Matlab no se encuentra en absoluto entre los paquetes estadísticos especializados.
Explíquenos, por favor, por qué se toma la molestia de seleccionar predictores. Al fin y al cabo, los algoritmos modernos son capaces de procesar miles de predictores, aunque la mayoría de ellos sean aleatorios. Y los modelos son fiables.
Por desgracia, no es el caso. Al menos no para mí.
No conozco algoritmos de selección de predictores (aunque conozco varias decenas de algoritmos de selección), tras los cuales (algoritmos) quedaría excluido el sobreentrenamiento del modelo.
La vieja regla de la estadística sigue siendo válida: "Basura dentro - basura fuera".
Por desgracia, no lo es. Al menos para mí.
No conozco ningún algoritmo de selección de predictores (aunque conozco varias decenas de algoritmos de selección), tras cuya operación (algoritmos) quedaría excluido el sobreentrenamiento del modelo.
La vieja regla de la estadística sigue siendo válida: "Basura dentro - basura fuera".
No sé, he probado mi programa y parece ir bien.
Si se me permite citar lo que escribí en otro recurso: "Probamos la corrección del programa con los datos tomados de aquí:
http://archive.ics.uci.edu/ml/index.html
(Sitio del Centre for Machine Learning and Intelligent Systems).
La longitud del ejemplo de entrenamiento era de 10000 características. 3000 de las cuales eran de naturaleza aleatoria y se añadieron especialmente para probar la calidad de la clasificación. En total, se utilizaron 100 ejemplos en la muestra de entrenamiento, lo que sin duda es muy poco, pero no pudimos encontrar más. Durante las pruebas utilizamos también otros ejemplos en cantidad de 100.
(Enlace al archivo con los datos originales).
La precisión del reconocimiento fue del 75% en los datos desconocidos. Estamos convencidos de que si hubiera más datos para entrenar, podríamos aumentar significativamente la precisión de las predicciones." Fin de la cita.
P.D.: El tiempo de entrenamiento fue de unos 2 minutos en un PC con un procesador de 8 núcleos y 8 Gb de memoria, porque el tiempo de entrenamiento del algoritmo no crece exponencialmente con el número de predictores. Y los predictores no informativos no se utilizan automáticamente.
Si alguien está interesado, aquí tiene el enlace cybercortex.blogspot.ru (no lo considere un anuncio:)
No sé, he probado mi programa y todo parece ir bien.
Si se me permite citar de mi escrito en otro recurso: "Hemos probado la corrección del programa en los datos tomados de aquí:
como indicadores. Y resulta que es muy fácil incluir varios tipos de basura en el modelo y la regla "basura dentro - basura fuera" empieza a funcionar.
La inclusión de predictores basura en el modelo, es decir, predictores que influyen poco en la variable objetivo, conduce a un sobreentrenamiento del modelo, en el que todo va bien en la muestra de entrenamiento, pero surgen problemas fuera de la muestra.
Tienes un ejemplo estupendo y típico para mostrar el problema.
1. En la superficie está el hecho de que, a diferencia de tu ejemplo, todas las series financieras pertenecen a las llamadas series temporales, en las que el orden de los valores es importante. Por lo tanto, los modelos en los mercados financieros, a diferencia de los modelos en medicina, deben tener en cuenta este matiz.
2. Pero hay una circunstancia mucho más grave, y está directamente relacionada con el tema de su pregunta.
En medicina, la solución de la pregunta "enfermo-no enfermo" se refiere al diagnóstico, y esto es la mitad de toda la medicina. Mucha gente investiga, justifica, busca "predictores" en nuestra terminología, que según estos investigadores son relevantes para el veredicto "enfermo o no enfermo". No vemos nada parecido en el mercado de divisas. En el mercado de valores, la investigación sobre la relación entre las causas económicas y la dirección del movimiento es habitual, pero nada de esto se aplica a los intervalos intradía.
Por lo tanto, cuando se construyen modelos de aprendizaje automático sobre intervalos intradía, se utilizan valores formales y matemáticos como indicadores. Y resulta que es muy fácil incluir varios tipos de basura en el modelo y la regla "basura dentro - basura fuera" empieza a funcionar.
La inclusión de predictores basura en el modelo, es decir, predictores que tienen una influencia débil en la variable objetivo, conduce al reentrenamiento del modelo, en el que todo va bien en la muestra de entrenamiento, pero fuera de la muestra hay problemas.
1. "Todas las series financieras pertenecen a las llamadas series temporales, en las que el orden de los valores es importante". - nadie lo niega y este orden no se viola, aunque se trate de una serie temporal. Tú, habiendo entrenado el modelo sobre los precios P1, P2, P3...Pn, no cambias su orden al probar sobre Fuera de Muestras o en uso real.
2. Estoy de acuerdo contigo en una cosa: si el input es 100% basura de predictores, obtendremos 100% basura en el output. 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.
"En el mercado de valores, la investigación sobre la relación entre las causas económicas y la dirección del movimiento es habitual, pero nada de esto se aplica a los intervalos intradiarios". - Pues sí, y sí se aplica a intervalos intradiarios, como la publicación de las Nóminas No Agrícolas.
3. claro que te entiendo, cada uno gana como puede, pero ¿has implementado alguna vez tú mismo algún algoritmo de machine learning? 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:) Saludos.
Además, cuando se construyen modelos de aprendizaje automático sobre intervalos intradiarios, se utilizan valores formales y matemáticos como los indicadores. Y resulta que es muy fácil incluir diversos tipos de basura en el modelo y la regla "basura dentro - basura fuera" empieza a funcionar.
....
3. por supuesto que te entiendo, cada uno gana como sabe, pero ¿alguna vez has implementado tú mismo algún algoritmo de machine learning? 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:) Respetuosamente.