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

 
Mihail Marchukajtes:


C'est là que je suis prêt à parier. Cela vient de la pratique. C'est ce que j'ai observé en utilisant l'optimiseur.


Mais dans la démo de son site, il y a 5 colonnes et un grand nombre de lignes.
 
Mihail Marchukajtes:


Voilà où je suis prêt à parier. Cela vient de la pratique. C'est ce que j'observe en utilisant l'optimiseur.

S'il y a moins de colonnes que de rangées, le nombre d'entrées devient inférieur à la taille conditionnelle du polynôme du réseau.

Si le nombre de colonnes et de lignes est égal, alors le nombre d'entrées et la taille du polynôme sont approximativement les mêmes.

S'il y a plus de colonnes que de lignes, la taille du polynôme est inférieure au nombre d'entrées.

En d'autres termes, il est nécessaire que le nombre de colonnes et de lignes soit approximativement égal. Alors le polynôme est obtenu avec un nombre suffisant d'entrées, et sa taille est approximativement égale au nombre d'entrées.

En d'autres termes. Plus le fichier est grand, plus le modèle devient multiparamétrique. Le nombre d'entrées et la taille du polynôme augmentent, ce qui indique que le modèle devient plus intelligent. Et ainsi de suite.

De plus, lorsque vous exécutez le même fichier plusieurs fois, l'ensemble des paramètres d'entrée est toujours différent. Ceci est dû à une partition aléatoire de l'échantillon lors de la division. Mais si nous exécutons un seul et même fichier et que nous obtenons des modèles absolument différents, ils fonctionneront toujours de manière identique, du moins ils le devraient. C'est la réponse à la question de savoir quel poisson se trouve dans le fichier donné. S'il diffère d'une exécution à l'autre, cela signifie que les données n'ont rien à voir avec le résultat. Comme cela....

Le polynôme n'est construit que pour tout enlever et laisser 3 pour un réseau et 3 pour un autre.
 
elibrarius:
Le Polynom n'est construit que pour tout retirer et laisser 3 pour un réseau et 3 pour l'autre.

Regardez attentivement le code. Il existe trois états : 1, 0 et -1. Voici donc le résultat de deux grilles, pour les signaux à transmettre au métier.....
 
Mihail Marchukajtes:


De quels coefficients de couplage parlez-vous ? Voici une liste des entrées utilisées, mais ce que vous voyez avant chaque polynôme il y a une normalisation, et il y a 8 entrées décrites, regardez plus bas au bas du fichier.

//Variable x0 : Del

//Variable x1 : Del1

//Variable x2 : VDel

//Variable x3 : VDel1

//Variable x4 : VDel6

//Variable x5 : ST5

//Variable x6 : VAD11

//Variable x7 : VVolum4

Où sont les trois entrées ????? Quand il y en a huit.
vous avez x0...x7 = p0...p7 - de la formule ci-dessus (juste nommée différemment) la formule est prise de l'article de Reshetov qui décrit son neurone. Et selon la formule, il n'y a que 3 entrées - A, B et C.
 
Maxim Dmitrievsky:

Mais la démo sur son site comporte 5 colonnes et un grand nombre de rangées.

Le truc, c'est que j'ai compris son fichier de démonstration ...... Il y a une chose qui répète les données, imaginez qu'il y a 5 colonnes et que chacune de leurs lignes ne peut être enregistrée qu'une des trois valeurs 1-1il0. Dans ce cas, il y aura des lignes en double, ce qui doublera mon jeu de données. Il suffit de copier les rangs et le niveau de généralisation augmentera considérablement, jusqu'à 90%, mais malheureusement il s'agira d'une REBUILDATION. Je sais... Je l'ai testé plus d'une fois, donc......
 
elibrarius:
vous avez x0...x7 = p0...p7 - de la formule ci-dessus (juste nommée différemment) la formule est prise de l'article de Reshetov décrivant son neurone. Et selon la formule, il n'y a que 3 entrées - A, B et C.

Oui cet article sur le RNN n'a rien à voir avec cet optimiseur qui est un travail complètement différent, vous ne comprenez pas. Bien qu'à l'intérieur de l'optimiseur quelque chose puisse être utilisé à partir de cet article, ce sont des travaux complètement différents si quoi que ce soit......
 
Mihail Marchukajtes:

Le truc, c'est que j'ai compris son fichier démo...... Imaginez qu'il y a 5 colonnes et que chaque ligne ne peut contenir qu'une seule des trois valeurs 1-1il0. Dans ce cas, il y aura des lignes en double, ce qui doublera mon jeu de données. Il suffit de copier les rangs et le niveau de généralisation augmentera considérablement, jusqu'à 90%, mais malheureusement il s'agira d'une REBUILDATION. Je sais... Je l'ai testé plus d'une fois, donc......

C'est un échantillon partagé à 50/50, n'est-ce pas ? Je le compare à d'autres modèles maintenant.
 
Eh, où puis-je trouver du pouvoir.... plus de pouvoir :-)
 
Maxim Dmitrievsky:

C'est un partage 50/50 ? Je le compare avec d'autres modèles.


En fait, la division d'un ensemble d'entraînement en deux échantillons est très délicate... Il n'y a pas de concept de temps, du passé au futur. Il n'est pas nécessaire pour la classification, il est nécessaire pour l'approximation.

Mais la division se fait aussi d'une manière très délicate. Voici un indice. Il est important que le nombre de zéros et de uns dans la variable de sortie soit égal. Ensuite, la division se déroule de manière claire, si le nombre n'est pas égal, il y a une addition. En général, une manière astucieuse de diviser là si en quoi...

 
Mihail Marchukajtes:

Regardez attentivement le code. Il existe trois états : 1, 0 et -1. C'est donc le résultat de deux grilles, pour transmettre les signaux au commerce......

J'essaie de comprendre comment chaque filet fonctionne séparément. Et ce qu'il faut tirer de leurs productions est une question de goût).

A propos, en regardant le code de votre fichier - il y a une formule différente, pas comme dans l'article, c'est-à-dire pas

double RNN(double p1,double p2,double p3)
  {
//--- вероятности для правил из базы знаний экспертной системы
   double y0 = x0; // Вероятность правила №0 в процентах
   double y1 = x1; // Вероятность правила №1 в процентах
   double y2 = x2; // Вероятность правила №2 в процентах
   double y3 = x3; // Вероятность правила №3 в процентах
   double y4 = x4; // Вероятность правила №4 в процентах
   double y5 = x5; // Вероятность правила №5 в процентах
   double y6 = x6; // Вероятность правила №6 в процентах
   double y7 = x7; // Вероятность правила №7 в процентах

//--- база знаний, состоящая из набора взаимоисключающих правил
   double probability=
                      (1.0 - p1) * (1.0 - p2) * (1.0 - p3) * y0 + // Правило №0
                      (1.0 - p1) * (1.0 - p2) * p3 * y1 +         // Правило №1
                      (1.0 - p1) * p2 * (1.0 - p3) * y2 +         // Правило №2
                      (1.0 - p1) * p2 * p3 * y3 +                 // Правило №3
                      p1 * (1.0 - p2) * (1.0 - p3) * y4 +         // Правило №4
                      p1 * (1.0 - p2) * p3 * y5 +                 // Правило №5
                      p1 * p2 * (1.0 - p3) * y6 +                 // Правило №6
                      p1 * p2 * p3 * y7;                          // Правило №7

//--- конвертируем проценты в вероятности
   probability=probability/100.0;

//--- возвращаем результат в виде вероятности
   return(probability);
  }

а

double getBinaryClassificator1(double v0, double v1, double v2, double v3, double v4, double v5, double v6, double v7) {
   double x0 = 2.0 * (v0 + 1189.0) / 2047.0 - 1.0;
   double x1 = 2.0 * (v1 + 810.0) / 2247.0 - 1.0;
   double x2 = 2.0 * (v2 + 1636.0) / 2155.0 - 1.0;
   double x3 = 2.0 * (v3 + 558.0) / 1252.0 - 1.0;
   double x4 = 2.0 * (v4 + 139.0) / 494.0 - 1.0;
   double x5 = 2.0 * (v5 + 74.97643) / 144.15451 - 1.0;
   double x6 = 2.0 * (v6 + 1026.56016) / 1938.48639 - 1.0;
   double x7 = 2.0 * (v7 + 4167.0) / 7074.0 - 1.0;
   double decision = 3.162907268170426 * sigmoid(x0)
  -1.0554004772410066 * sigmoid(x1 + x2 + x3)
  + 3.8921930574940347 * sigmoid(x0 + x1 + x4)
  -1.3775531643479957 * sigmoid(x1 + x2 + x3 + x4)
  -0.44704575810784447 * sigmoid(x0 + x5)
  -0.012703915477316044 * sigmoid(x0 + x1 + x5)
  -7.231026668467576 * sigmoid(x2 + x5)
  -0.059339966683175004 * sigmoid(x2 + x4 + x5)
  -2.786314588867378 * sigmoid(x0 + x1 + x2 + x4 + x5)
  + 2.1339726561913768 * sigmoid(x0 + x1 + x6)
  -0.49562529077183975 * sigmoid(x0 + x4 + x6)
  + 5.2147434454399475 * sigmoid(x0 + x3 + x4 + x6)
  -2.890797352663095 * sigmoid(x5 + x6)
  + 0.10933021175693726 * sigmoid(x0 + x5 + x6)
  -1.6844056248405446 * sigmoid(x1 + x2 + x5 + x6)
  -0.18093137034202272 * sigmoid(x1 + x3 + x5 + x6)
  + 0.6607987033451893 * sigmoid(x1 + x7)
  -1.8854921735476415 * sigmoid(x0 + x1 + x3 + x7)
  -1.1169615655906233 * sigmoid(x2 + x5 + x7)
  -0.6844731589452674 * sigmoid(x4 + x6 + x7)
  -0.4231236774571158 * sigmoid(x1 + x2 + x3 + x4 + x6 + x7)
  + 5.763615625891075 * sigmoid(1.0 + x1 + x2 + x3 + x5)
  -0.3138985187519697 * sigmoid(1.0 + x0 + x1 + x4 + x5)
  -1.8910224663455044 * sigmoid(1.0 + x1 + x3 + x4 + x5)
  + 2.1204658352467995 * sigmoid(1.0 + x2 + x3 + x4 + x5)
  + 6.219005597826903 * sigmoid(1.0 + x2 + x3 + x4 + x6)
  -3.740916662914772 * sigmoid(1.0 + x0 + x1 + x3 + x4 + x5 + x6);
   return decision;
}

Apparemment, l'auteur a modifié la formule

Donc peut-être pas 3 entrées (comme dans la formule originale), mais quand même 8... Je n'ai pas encore compris l'essence de la nouvelle formule.