L'Apprentissage Automatique dans le trading : théorie, modèles, pratique et trading algo - page 1259

 
Par exemple, s'il y a 20 prédicteurs, qui sait ce que Bayes va trouver s'il s'entraîne trop peu.
 
Maxim Dmitrievsky:

pas tout à fait, cela devrait être plus clair ici

https://habr.com/ru/post/276355/

l'éventail des applications est large, la façon dont il sera utilisé exactement est une autre question.

Je le lirai dans la soirée.

 
Maxim Dmitrievsky:

Vous et moi n'avons rien à nous dire, parce que je peux dire par votre psycho-type que vous êtes soit un enfant ou juste... oubliez ça.

"Nous" comme dans vous ? Trouvez un emploi pour commencer, c'est une honte de s'asseoir sur les épaules de vos parents à cet âge.

 
Maxim Dmitrievsky:

pas tout à fait, cela devrait être plus clair ici

https://habr.com/ru/post/276355/

l'éventail des applications est large, la façon dont il sera utilisé exactement est une autre question.

La ligne de fond de la partie 2 de l'article :
Le décrochage peut être considéré comme une version bon marché du bayésianisme, qui est très simple. L'idée est basée sur la même analogie avec les ensembles que j'ai mentionnée à la fin du dernier billet : imaginez que vous avez un réseau neuronal. Imaginez maintenant que vous le prenez, que vous en arrachez quelques neurones au hasard et que vous le mettez de côté. Après ~1000 opérations de ce type, vous obtenez un ensemble de mille réseaux, où chacun est légèrement différent des autres au hasard. Nous faisons la moyenne de leurs prédictions, et nous obtenons que les écarts aléatoires se compensent par endroits et donnent des prédictions réelles. Imaginez maintenant que vous avez un réseau bayésien, et que vous prenez mille fois un ensemble de ses poids hors de l'incertitude, et vous obtenez le même ensemble de réseaux légèrement différents.

Ce qu'il y a de mieux dans l'approche bayésienne, c'est qu'elle permet d'utiliser ce caractère aléatoire de manière contrôlée.

....

Dans la pratique, cela se traduit par le fait qu'un réseau dimensionnel donne de meilleurs résultats qu'un réseau d'abandon, mais pas de beaucoup.

Ce qui rend le décrochage plus cool, c'est qu'il est très simple, bien sûr.

C'est-à-dire qu'un NS profond avec dropout est l'équivalent d'un réseau bayésien. Et le dropout est dans de nombreux paquets, vous pouvez d'abord l'utiliser pour rechercher des poissons sur vos prédicteurs/cibles. Et ensuite essayer d'améliorer les résultats avec Bayes. Dans les articles de Vladimir Perervenko, le décrochage a été utilisé, il est possible d'expérimenter sur leur base.

J'ai fait des expériences, mais je n'ai pas trouvé de percée dans mes prédicteurs.
Mais je n'ai pas créé de réseaux si profonds que je doive en retirer 1000 neurones. Je n'ai pas essayé plus de N-100-100-100-100-100-1 (401 neurones). C'est-à-dire que 100 peuvent avoir été supprimés, mais pas 1000. Pour en supprimer 1000, il faudrait un réseau de 4 à 10 000 neurones et le décompte prendrait probablement beaucoup de temps.
Il est possible que des forêts de 1000 arbres obtiennent des résultats similaires et comptent beaucoup plus vite que NS.
 
elibrarius:
Je n'ai pas essayé plus de N-100-100-100-1 (401 neurones).

On ne peut pas entraîner des monstres comme ça correctement. Je pense que nous avons besoin d'un NS plus simple. Quelque part, jusqu'à 100 neurones.

 
elibrarius:
La ligne de fond de la partie 2 de l'article :

C'est-à-dire qu'un NS profond avec un décrochage est analogue à un réseau bayésien. Et le décrochage est dans de nombreux paquets, vous pouvez d'abord les utiliser pour rechercher des poissons sur leurs prédicteurs/cibles. Et ensuite essayer d'améliorer les résultats avec Bayes. Dans les articles de Vladimir Perervenko dropout a été utilisé, vous pouvez expérimenter sur leur base.

J'ai expérimenté, mais je n'ai trouvé aucune avancée sur mes prédicteurs.
Mais je n'ai pas créé de réseaux si profonds que je doive en retirer 1000 neurones. Je n'ai pas essayé plus de N-100-100-100-100-100-1 (401 neurones). C'est-à-dire que 100 peuvent avoir été supprimés, mais pas 1000. Pour en supprimer 1000, il faudrait un réseau de 4 à 10 000 neurones et le décompte prendrait probablement beaucoup de temps.
Il est possible que des forêts de 1000 arbres obtiennent des résultats similaires, et comptent beaucoup plus vite que NS.

Oh je ne sais pas, avec n'importe quel nombre d'arbres/bois, l'akurasi arrête de grandir et ils restent là, en lest, sans rien améliorer. Les laisser tomber ou ne pas les laisser tomber est un signe évident.

Une comparaison grossière entre les bayésiens et les décrocheurs à mon avis, mais je ne suis pas encore très calé sur le sujet et je ne vais pas argumenter, peut-être ainsi

 
Maxim Dmitrievsky:

Une comparaison grossière entre Bayes et les décrocheurs à mon avis, mais je ne suis pas encore très calé sur le sujet et je ne discuterai pas, peut-être ainsi

C'est l'auteur de cet article qui a fait la comparaison, pas moi. Il a écrit son article à partir d'un autre, plus grand, sur lequel il a fait ses expériences. C'est-à-dire que cette comparaison provient apparemment des développeurs de la méthode.

 
Maxim Dmitrievsky:

Oh je ne sais pas, avec n'importe quel nombre d'arbres/bois l'akurasi arrête de grandir et ils restent là, en lest, sans rien améliorer. Qu'on les laisse tomber ou non, c'est un mouchoir de poche mort.

si vous allez construire une forêt avec 1000 arbres, vous devriez probablement fournir 1% des données à chaque forêt, c'est-à-dire r=0.01, et non 0.1 ... 0,6 comme recommandé pour les forêts de 100 arbres recommandés.
 

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



 

Je l'ai comparé avec catbust - il retourne bien, habituellement > 0.5 sur le test... bien, comme d'habitude

Je regarderai le calcul demain, peut-être que le code de débogage est toujours là.

en général, cette métrique n'est d'aucune utilité ici car elle n'est pas utilisée pour une pause précoce ou autre... et peu informative par conséquent. Une erreur de classification est prise et c'est tout.