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

 
Mihail Marchukajtes:


Ahí es donde estoy dispuesto a apostar. Esto es por la práctica. Eso es lo que he observado durante el uso del optimizador.


Pero en la demostración en su sitio hay 5 columnas y un gran número de filas
 
Mihail Marchukajtes:


Aquí es donde estoy dispuesto a apostar. Esto es por la práctica. Eso es lo que observo al utilizar el optimizador.

Si hay menos columnas que filas, el número de entradas es menor que el tamaño condicional del polinomio de la red.

Si el número de columnas y filas es igual, el número de entradas y el tamaño del polinomio son aproximadamente iguales.

Si hay más columnas que filas, el tamaño del polinomio es menor que el número de entradas.

En otras palabras, es necesario que el número de columnas y filas sea aproximadamente igual. Entonces el polinomio se obtiene con un número suficiente de entradas, y su tamaño es aproximadamente igual al número de entradas.

En otras palabras. Cuanto mayor sea el archivo, más multiparamétrico será el modelo. El número de entradas y el tamaño del polinomio aumentan, lo que indica que el modelo se vuelve más inteligente. Y así sucesivamente.

Además, cuando se ejecuta el mismo archivo más de una vez, el conjunto de parámetros de entrada es siempre diferente. Esto se debe a la partición aleatoria de la muestra durante la división. Pero si ejecutamos un mismo archivo y obtenemos modelos absolutamente diferentes, seguirán funcionando de forma idéntica, al menos deberían hacerlo. Esta es la respuesta a la pregunta de qué peces hay en el archivo dado. Si difiere de una ejecución a otra, significa que los datos no tienen nada que ver con la salida. Así....

El polinomio sólo se construye para sacar todo y dejar 3 para una red y 3 para otra.
 
elibrarius:
El Polynom sólo está construido para sacar todo y dejar 3 para una red y 3 para la otra.

Mira el código con atención. Hay tres estados: 1, 0 y -1. Así que este es el resultado de dos mallas, para enviar señales al comercio....
 
Mihail Marchukajtes:


De qué coeficientes de acoplamiento hablas. Aquí hay una lista de las entradas utilizadas, pero lo que ves allí antes de cada polinomio hay una normalización, y hay 8 entradas descritas, mira abajo en la parte inferior del archivo.

//Variable x0: Del

//Variable x1: Del1

//Variable x2: VDel

//Variable x3: VDel1

//Variable x4: VDel6

//Variable x5: ST5

//Variable x6: VAD11

//Variable x7: VVolum4

Dónde están las tres entradas????? Cuando son ocho.
tienes x0...x7 = p0...p7 - de la fórmula anterior (sólo que nombrada de forma diferente) la fórmula está tomada del artículo de Reshetov que describe su neurona. Y según la fórmula sólo hay 3 entradas - A, B y C
 
Maxim Dmitrievsky:

Pero la demostración en su sitio tiene 5 columnas y un gran número de filas

El caso es que he descubierto su archivo de demostración ..... Hay una cosa que repite los datos, imagina que hay 5 columnas y en cada una de sus filas se puede registrar sólo uno de los tres valores 1-1il0. En este caso habrá filas duplicadas, y ahora se duplicará mi conjunto de datos. Simplemente copiando filas y el nivel de generalización crecerá significativamente, hasta un 90%, pero desgraciadamente será una RECONSTRUCCIÓN. Lo sé... Lo he probado más de una vez, así que .....
 
elibrarius:
tienes x0...x7 = p0...p7 - de la fórmula anterior (sólo que nombrada de forma diferente) la fórmula está tomada del artículo de Reshetov que describe su neurona. Y según la fórmula sólo hay 3 entradas - A, B y C

Sí ese artículo sobre RNN no tiene nada que ver con este optimizador es un trabajo completamente diferente, no lo entiendes. Aunque dentro del optimizador se puede utilizar algo de este artículo, pero son trabajos completamente diferentes si algo.....
 
Mihail Marchukajtes:

La cosa es que he descubierto su archivo de demostración..... El caso es que hay algunos datos que se repiten, imagina que hay 5 columnas y cada fila puede contener sólo uno de los tres valores 1-1il0. En este caso habrá filas duplicadas, y ahora se duplicará mi conjunto de datos. Simplemente copiando filas y el nivel de generalización crecerá significativamente, hasta un 90%, pero desgraciadamente será una RECONSTRUCCIÓN. Lo sé... Lo he probado más de una vez, así que .....

Es una muestra dividida al 50 por ciento, ¿no? Ahora lo estoy comparando con otros modelos.
 
Eh, ¿dónde puedo conseguir un poco de energía.... más poder :-)
 
Maxim Dmitrievsky:

¿Es una división 50/50? Lo estoy comparando con otros modelos


En realidad, dividir un conjunto de entrenamiento en dos muestras es muy complicado... No hay concepto de tiempo, del pasado al futuro. no es necesario para la clasificación, es necesario para la aproximación.

Pero la división también se produce de una manera muy complicada. Aquí tienes una pista. Es importante que el número de ceros y unos en la variable de salida sea igual. Entonces se procede a la división de forma clara, si el número no es igual, hay una adición. En general, una forma inteligente de dividir allí si en lo que...

 
Mihail Marchukajtes:

Mira el código con atención. Hay tres estados 1, 0 y -1. Así que es un resultado de dos rejillas, para transmitir señales a trade.....

Estoy averiguando cómo funciona cada red por separado. Y lo que se obtenga de sus salidas es cuestión de gustos)

Por cierto, mirando el código de su archivo - hay una fórmula diferente, no como en el artículo, es decir, no

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

Al parecer, el autor ha modificado la fórmula

Así que quizá no sean 3 entradas (como en la fórmula original), pero sí 8... Todavía no he entendido la esencia de la nueva fórmula.

Razón de la queja: