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

 
Andrey Khatimlianskii:

En este hilo, un post invitado. Sólo vine a compartir un artículo

Nummerai cayó en la consigna "¡Proletarios de todos los países, uníos!" de Karl Marx, según la interpretación de Geoffrey Hinton:)
 
Maxim Dmitrievsky:

Esto, por cierto, es preciso.

Teniendo en cuenta la cantidad de imbéciles que hay en el foro (incluido tu mago favorito mudo...) no creo que sea necesario seguir apoyando este tema, porque no he recibido casi ningún beneficio para mí

¡Maxim, te equivocas! Hay un beneficio para ti, un beneficio en la propia formulación y presentación de las tareas. Sin embargo, no estoy tratando de persuadirte.

 
Yuriy Asaulenko:

¡Maxim, te equivocas! Hay un beneficio para ti, un beneficio en la propia redacción y presentación de las tareas. Sin embargo, no me convence.

Se ve que aquí viven algunos imbéciles clínicos, no son caretas del foro sino casos reales, les dices una palabra y te dicen dos palabras después de cada post.

 
elibrarius:

He encontrado un código oscuro en el bosque de Alglib. Código completo de la función de cálculo de la etiropía cruzada de dataanalysis.mqh:

//+------------------------------------------------------------------+
//| Average cross-entropy (in bits per element) on the test set      |
//| INPUT PARAMETERS:                                                |
//|     DF      -   decision forest model                            |
//|     XY      -   test set                                         |
//|     NPoints -   test set size                                    |
//| RESULT:                                                          |
//|     CrossEntropy/(NPoints*LN(2)).                                |
//|     Zero if model solves regression task.                        |
//+------------------------------------------------------------------+
static double CDForest::DFAvgCE(CDecisionForest &df,CMatrixDouble &xy,
                                const int npoints)
  {
//--- create variables
   double result=0;
   int    i=0;
   int    j=0;
   int    k=0;
   int    tmpi=0;
   int    i_=0;
//--- creating arrays
   double x[];
   double y[];
//--- allocation
   ArrayResizeAL(x,df.m_nvars);
   ArrayResizeAL(y,df.m_nclasses);
//--- initialization
   result=0;
   for(i=0;i<=npoints-1;i++)
     {
      for(i_=0;i_<=df.m_nvars-1;i_++)
         x[i_]=xy[i][i_];
      //--- function call
      DFProcess(df,x,y);
      //--- check
      if(df.m_nclasses>1)
        {
         //--- classification-specific code
         k=(int)MathRound(xy[i][df.m_nvars]);
         tmpi=0;
         for(j=1;j<=df.m_nclasses-1;j++)
           {
            //--- check
            if(y[j]>(double)(y[tmpi]))
               tmpi=j;
           }

         //--- check
         if(y[k]!=0.0)
            result=result-MathLog(y[k]);
         else
            result=result-MathLog(CMath::m_minrealnumber);
        }
     }
//--- return result
   return(result/npoints);
  }

El fragmento de código marcado en rojo considera algo(tmpi) que no se utiliza de ninguna manera. ¿Por qué se incluye entonces?
O bien falta algo o el código no está completamente limpio.
En general, empecé a entrar en esta función porque quería buscar en 1 árbol. Y cuando puse número de árboles en el bosque = 1, vi que todos los errores están entre 0 y 1, y este de 100 a 300 + sucede.
¿Alguien entiende la entropía cruzada - el código es incluso correcto, o algo se deshace?

Según la wikipedia debería ser



El valor en general puede ser hasta el infinito cuando se calcula logloss si la clase correcta se predice que tiene probabilidad cero, porque la fórmula incluye todas las otras clases, excepto ella con coeficiente cero, y parece que hay algún intento de resolver este fallo - en tmpi en el bucle de encontrar la clase que tiene el mayor valor de la probabilidad en la muestra, tal vez quería añadir a la fórmula, pero probablemente no lo pensó:)
 
Ivan Negreshniy:
El valor en general al infinito puede ser cuando se calcula logloss si se predice la probabilidad de cero para la clase correcta, porque la fórmula incluye todas las otras clases, excepto que con el coeficiente de cero, y no parece haber tratado de resolver de alguna manera este fallo - en tmpi en el bucle de encontrar la clase que en una muestra dada tiene el valor de la probabilidad más alta, tal vez quería añadir a la fórmula, pero al parecer no lo pensó:)
tmpi sólo se utiliza en 1 de las 5 funciones de error. Al parecer, se utilizó como maniquí para otras funciones, pero en otras funciones se olvidaron de retirarlo.
En total, 1 tmpi está presente y en uso, 2 más están presentes pero no se utilizan.
En general, no afecta al funcionamiento.
 
elibrarius:
tmpi sólo se utiliza en 1 de las 5 funciones de error. Al parecer, se utilizó como maniquí para otras funciones, pero se olvidó de quitarlo en otras.
En total, 1 tmpi está presente y en uso, 2 más están presentes pero no se utilizan.
En general, no afecta al funcionamiento.

Lo que quiero decir es que una buena fórmula para el cálculo del error podría tener en cuenta la distribución de la probabilidad sobre todas las clases en lugar de una sola correcta.

Dicho esto, si una de las muestras tiene una probabilidad nula de ser una clase correcta, entonces todo vuela hacia el infinito.

Al parecer, por eso prefiero la regresión con un error cuadrático:)

 
Ivan Negreshniy:
Básicamente estoy diciendo que una buena fórmula de cálculo de errores podría tener en cuenta la distribución de probabilidades sobre todas las clases, no sólo una correcta.
Hay 5 funciones de error. Este es un poco raro, pero los otros 4, como deberían de 0 a 1 cambian. Así que hay que elegir)
 
Ahora deja que Kesha (el nieto de SanSanych) y el inversor asesinado Aliosha dirijan la sucursal. Eso sería justo.
 
Alexander_K2:
Ahora dejemos que Kesha (nieto de SanSanYch) y Alyosha, que fue castigado por los inversores, dirijan este hilo. Será justo.

Tiene más sentido dejar este tema y empezar uno nuevo, más adecuado, con otros temas relacionados.

Por cierto, he encontrado una distribución normal en los precios. Ya he escrito en Tip que toda anormalidad proviene de un tratamiento "incorrecto" de los datos - lo hacemos nosotros mismos).

Lo publicaré en el hilo de Python un día de estos o antes.

 
Yuriy Asaulenko:

Tiene más sentido dejar este tema y empezar uno nuevo, más adecuado, con otros temas relacionados.

Por cierto, he encontrado una distribución normal en los precios. Ya he escrito en Tip que toda anormalidad proviene de un tratamiento "incorrecto" de los datos - lo hacemos nosotros mismos).

Lo publicaré en el hilo de Python un día de estos o antes.

Por desgracia, ante la falta de gente del nivel de Matemat, Northwind y Prival en el foro, todos estos temas no tienen futuro. EN MI OPINIÓN.

Razón de la queja: