L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 399

 
Mihail Marchukajtes:


È lì che sono pronto a scommettere. Questo viene dalla pratica. Questo è quello che ho osservato mentre usavo l'ottimizzatore.


Ma nella demo sul suo sito ci sono 5 colonne e un gran numero di righe
 
Mihail Marchukajtes:


Ecco dove sono disposto a scommettere. Questo viene dalla pratica. Questo è ciò che osservo mentre uso l'ottimizzatore.

Se ci sono meno colonne che righe, il numero di ingressi diventa più piccolo della dimensione condizionale del polinomio della rete.

Se il numero di colonne e di righe sono uguali, allora il numero di ingressi e la dimensione del polinomio sono approssimativamente gli stessi.

Se ci sono più colonne che righe, la dimensione del polinomio è inferiore al numero di ingressi.

In altre parole, è necessario che il numero di colonne e di righe sia approssimativamente uguale. Allora il polinomio si ottiene con un numero sufficiente di ingressi, e la sua dimensione è approssimativamente uguale al numero di ingressi.

In altre parole. Più grande è il file, più multiparametrico diventa il modello. Il numero di ingressi e la dimensione del polinomio aumentano, il che indica che il modello diventa più intelligente. E così via.

Inoltre, quando si esegue lo stesso file più di una volta, l'insieme dei parametri di input è sempre diverso. Ciò è dovuto alla suddivisione casuale del campione durante la divisione. Ma se eseguiamo uno stesso file e otteniamo modelli assolutamente diversi, funzioneranno comunque in modo identico, almeno dovrebbero. Questa è la risposta alla domanda su quali pesci ci sono nel file dato. Se differisce da una corsa all'altra, significa che i dati non hanno nulla a che fare con l'output. Come questo....

Il polinomio è costruito solo per togliere tutto e lasciare 3 per una rete e 3 per un'altra.
 
elibrarius:
Il Polynom è costruito solo per togliere tutto e lasciarne 3 per una rete e 3 per l'altra.

Guardate attentamente il codice. Ci sono tre stati: 1, 0 e -1. Quindi questo è il risultato di due griglie, per i segnali da trasmettere al commercio....
 
Mihail Marchukajtes:


Di quali coefficienti di accoppiamento state parlando. Qui c'è una lista degli input utilizzati, ma quello che vedete lì prima di ogni polinomio c'è una normalizzazione, e ci sono 8 input descritti, guardate sotto in fondo al file.

//Variabile x0: Del

//Variabile x1: Del1

/Variabile x2: VDel

/Variabile x3: VDel1

/Variabile x4: VDel6

//Variabile x5: ST5

/Variabile x6: VAD11

//Variabile x7: VVolum4

Dove sono i tre ingressi????? Quando ce ne sono otto.
si ha x0...x7 = p0...p7 - dalla formula di cui sopra (solo chiamata diversamente) la formula è presa dall'articolo di Reshetov che descrive il suo neurone. E secondo la formula ci sono solo 3 ingressi - A, B e C
 
Maxim Dmitrievsky:

Ma la demo sul suo sito ha 5 colonne e un gran numero di righe

Il fatto è che ho capito il suo file demo ..... C'è una cosa che ripete i dati, immaginate che ci siano 5 colonne e ognuna delle loro righe può essere registrata solo uno dei tre valori 1-1il0. In questo caso ci saranno righe duplicate, e ora raddoppiano il mio dataset. Basta copiare le righe e il livello di generalizzazione crescerà significativamente, fino al 90%, ma purtroppo sarà una RICOSTRUZIONE. Lo so... l'ho provato più di una volta, quindi.....
 
elibrario:
si ha x0...x7 = p0...p7 - dalla formula di cui sopra (solo chiamata diversamente) la formula è presa dall'articolo di Reshetov che descrive il suo neurone. E secondo la formula ci sono solo 3 ingressi - A, B e C

Sì, quell'articolo su RNN non ha niente a che fare con questo ottimizzatore è un lavoro completamente diverso, non capite? Anche se all'interno dell'ottimizzatore qualcosa può essere usato da questo articolo, ma sono lavori completamente diversi se qualcosa.....
 
Mihail Marchukajtes:

Il fatto è che ho capito il suo file demo ..... Il fatto è che ci sono dei dati che si ripetono, immaginate che ci siano 5 colonne e ogni riga può contenere solo uno dei tre valori 1-1il0. In questo caso ci saranno righe duplicate, e ora raddoppiano il mio dataset. Basta copiare le righe e il livello di generalizzazione crescerà significativamente, fino al 90%, ma purtroppo sarà una RICOSTRUZIONE. Lo so... l'ho provato più di una volta, quindi.....

È un campione diviso al 50%, vero? Ora lo sto confrontando con altri modelli.
 
Eh, dove posso trovare un po' di potere.... più potenza :-)
 
Maxim Dmitrievsky:

È un 50/50? Lo sto confrontando con altri modelli


In realtà, dividere un set di allenamento in due campioni è molto difficile... Non c'è il concetto di tempo, dal passato al futuro. Non è necessario per la classificazione, è necessario per l'approssimazione.

Ma la divisione avviene anche in un modo molto complicato. Ecco un suggerimento. È importante che il numero di zeri e di uno nella variabile di uscita sia uguale. Poi la divisione procede in modo chiaro, se il numero non è uguale, c'è un'addizione. In generale, un modo intelligente di dividere se in cosa...

 
Mihail Marchukajtes:

Guardate attentamente il codice. Ci sono tre stati 1, 0 e -1. Quindi è il risultato di due griglie, per trasmettere segnali al commercio.....

Sto capendo come funziona ogni rete separatamente. E cosa ottenere dalle loro uscite è una questione di gusto)

A proposito, guardando il codice del tuo file - c'è una formula diversa, non come nell'articolo, cioè non

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;
}

Apparentemente l'autore ha modificato la formula

Quindi forse non 3 ingressi (come nella formula originale), ma ancora 8... Non ho ancora capito l'essenza della nuova formula.