L'apprentissage automatique dans la négociation : théorie, modèles, pratique et algo-trading - page 1266

 
Andrey Khatimlianskii:

Dans ce fil, un billet d'invité. Je suis venu partager un article

Nummerai s'est laissé séduire par le slogan "Prolétaires de tous les pays unissez-vous !" de Karl Marx, tel qu'interprété par Geoffrey Hinton :)
 
Maxim Dmitrievsky:

Ceci, d'ailleurs, est exact.

Compte tenu du nombre de crétins sur le forum (y compris votre magicien préféré mudo ...) je ne pense pas qu'il soit nécessaire de soutenir ce sujet plus, parce que j'ai reçu presque aucun bénéfice pour moi-même

Maxim, tu as tort ! Il y a un avantage pour vous, un avantage dans la formulation et la présentation mêmes des tâches. Cependant, je n'essaie pas de vous persuader.

 
Yuriy Asaulenko:

Maxim, tu as tort ! Il y a un avantage pour vous, un avantage dans la formulation et la présentation mêmes des tâches. Cependant, je ne suis pas convaincue.

Vous pouvez voir que des crétins cliniques vivent ici, ce ne sont pas des masques de forum mais des cas réels, vous leur dites un mot et ils vous en disent deux après chaque post.

 
elibrarius:

J'ai trouvé un code obscur dans la forêt d'Alglib. Code complet de la fonction de calcul de l'étropie croisée 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);
  }

Le fragment de code marqué en rouge considère quelque chose(tmpi) qui n'est pas utilisé de quelque manière que ce soit. Pourquoi est-elle incluse alors ?
Soit il manque quelque chose, soit le code n'est pas complètement nettoyé.
En général, j'ai commencé à m'intéresser à cette fonction parce que je voulais rechercher 1 arbre. Et lorsque j'ai défini le nombre d'arbres dans la forêt = 1, j'ai vu que toutes les erreurs se situent entre 0 et 1, et que celle de 100 à 300 + se produit.
Quelqu'un comprend-il l'entropie croisée - le code est-il même correct, ou quelque chose est-il défait ?

Selon wikipedia , il devrait être



La valeur en général peut être jusqu'à l'infini lors du calcul du logloss si la classe correcte est prédite comme ayant une probabilité zéro, parce que la formule inclut toutes les autres classes sauf elle avec un coefficient zéro, et il semble qu'il y ait une tentative de résoudre ce problème - dans tmpi dans la boucle trouver la classe qui a la valeur de probabilité la plus élevée dans l'échantillon, peut-être voulu ajouter à la formule, mais n'a probablement pas pensé à travers :)
 
Ivan Negreshniy:
La valeur en général à l'infini peut être lors du calcul de logloss si la probabilité zéro est prédit pour la classe correcte, parce que la formule comprend toutes les autres classes sauf elle avec un coefficient zéro, et il semble avoir essayé de résoudre d'une manière ou d'une autre ce pépin - dans tmpi dans la boucle trouver la classe qui, dans un échantillon donné a la valeur de probabilité la plus élevée, peut-être voulu ajouter à la formule, mais apparemment n'a pas pensé à travers :)
tmpi n'est utilisé que dans 1 fonction d'erreur sur 5. Apparemment, il a été utilisé comme un mannequin pour d'autres fonctions, mais dans d'autres fonctions, ils ont oublié de le retirer.
Au total, 1 tmpi est présent et utilisé, 2 autres sont présents mais non utilisés.
Dans l'ensemble, cela n'affecte pas le fonctionnement.
 
elibrarius:
tmpi n'est utilisé que dans 1 des 5 fonctions d'erreur. Apparemment, il a été utilisé comme mannequin pour d'autres fonctions, mais a oublié de le retirer dans d'autres.
En tout, 1 tmpi est présent et utilisé, 2 autres sont présents mais ne sont pas utilisés.
En général, elle n'affecte pas le fonctionnement.

Ce que je veux dire, c'est qu'une bonne formule de calcul de l'erreur pourrait prendre en compte la distribution de probabilité sur toutes les classes au lieu d'une seule correcte.

Cela dit, si l'un des échantillons a une probabilité nulle de classe correcte, alors tout s'envole vers l'infini.

Apparemment, c'est pour cela que je préfère la régression avec une erreur quadratique :)

 
Ivan Negreshniy:
Je dis essentiellement qu'une bonne formule de calcul des erreurs pourrait prendre en compte la distribution de probabilité de toutes les classes, et pas seulement d'une classe correcte.
Eh bien, il y a 5 fi ches d'erreur. Celui-ci est un peu bizarre, mais les 4 autres, comme il se doit, passent de 0 à 1. Il y a donc un choix à faire)
 
Maintenant, laissez Kesha (le petit-fils de SanSanych) et l'investisseur tué Aliosha diriger la branche. Ce serait juste.
 
Alexander_K2:
Laissez maintenant Kesha (petit-fils de SanSanYch) et Aliocha, qui a été puni par les investisseurs, mener ce fil. Ce sera juste.

Il est plus logique de laisser tomber ce sujet et d'en commencer un nouveau, plus adéquat, avec d'autres sujets connexes.

Au fait, j'ai trouvé une distribution normale dans les prix. J'ai déjà écrit dans Tip que toute anomalie provient d'un traitement "incorrect" des données - nous le faisons nous-mêmes).

Je le posterai dans le fil de discussion de Python un de ces jours ou plus tôt.

 
Yuriy Asaulenko:

Il est plus logique de laisser tomber ce sujet et d'en commencer un nouveau, plus adéquat, avec d'autres sujets connexes.

Au fait, j'ai trouvé une distribution normale dans les prix. J'ai déjà écrit dans Tip que toute anomalie provient d'un traitement "incorrect" des données - nous le faisons nous-mêmes).

Je le posterai dans le fil de discussion sur les pythons un de ces jours ou plus tôt.

Hélas, en raison du manque de personnes sur ce forum du niveau de Matemat, Northwind et Prival, tous ces sujets n'ont pas d'avenir. IMHO.