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

 
Maxim Dmitrievsky:
así que no sé qué creer en esta vida... todo tiene que ser revisado dos veces

+1 - Inicialmente lo hice sin eliminar los valores atípicos, y obtuve fuertes desplazamientos del centro (o del cero) de los datos. Tras eliminar los valores atípicos, todo se volvió más estable.

 
Maxim Dmitrievsky:

¿así que por fin no es jPredictor? :)


Por qué exactamente con él.... Construye mejores modelos que las bibliotecas, etc. Porque agita los datos a fondo...

 
Mihail Marchukajtes:

Por qué él exactamente.... Construye mejores modelos que las bibliotecas, etc. Porque agita los datos a fondo...


pero lleva mucho tiempo... :)

 
elibrarius:

+1 - Inicialmente lo hice sin eliminar los valores atípicos, y obtuve fuertes desplazamientos en el centro (o cero) de los datos attrminados. Tras eliminar los valores atípicos, todo se volvió más estable.


Bueno, a veces hay un problema con el desplazamiento debido a la normalización, así que tengo todas las entradas a través de logaritmos de incrementos y allí el centro siempre estará en cero si necesitan ser normalizados

pero en general, los picos se eliminan más para que las escalas no se desplazan demasiado en las anomalías ... y el andamio, por ejemplo, no se preocupan por ellos en absoluto

 
Maxim Dmitrievsky:

pero lleva mucho tiempo... :)


Por eso reduzco estadísticamente el número de entradas y la formación se vuelve adecuada en el tiempo. En un día de trabajo he hecho el modelo + el nivel 4 de refuerzo. Ahora haré otro modelo de rebote y debería funcionar durante semanas. Al menos eso espero...

 
Maxim Dmitrievsky:

Bueno, a veces hay un problema con el desplazamiento debido a la normalización, así que tengo todas las entradas a través de logaritmos de incrementos y allí el centro siempre estará en cero si necesitan ser normalizados

pero en general, los picos se eliminan más para que el NS no cambie los pesos fuertemente en las anomalías... y el andamio por ejemplo no se preocupa de ellos en absoluto

Pues bien, en realidad el logaritmo hace algo parecido, sólo que no descarta, y aporta, emisiones fuertes. Sin embargo, no los descarto también, sino que los equiparo con los máximos. si(v>max){v=max;}

En general, quiero definir de antemano un rango aceptable para cada predictor y realizar todos mis experimentos dentro de este rango. Porque incluso con mi método y el método del logaritmo tendré algún cambio de datos de una muestra a otra.

 
elibrarius:
De hecho, el logaritmo hace algo similar, sólo que no descarta sino que aproxima los picos fuertes. Sin embargo, tampoco los descarto, sino que los equiparo al máximo. si(v>max){v=max;}

Oh sí, es cierto... supongo)

Primero tomo algunas series como log(close[0]/close[n])

y luego

void NormalizeArrays(double &a[]) //нормируем от -1 до 1
  { 
   double multiplier;
   double x_min=MathAbs(a[ArrayMinimum(a)]);
   double x_max=MathAbs(a[ArrayMaximum(a)]);
   if(x_min>=x_max) multiplier = x_min;
     else multiplier = x_max;
   for(int i=0;i<ArraySize(a);i++)
     {
      a[i]=a[i]/multiplier;
     }
  }
y si se toman muestras pequeñas se puede definirpreliminarmente en la muestra grande, para que no cambie.
 
Maxim Dmitrievsky:

Oh sí, es cierto... supongo)

Primero tomo algunas series como log(close[0]/close[n])

y luego

Si el mínimo y el máximo no se reflejan (por ejemplo, -100 y 90), entonces tendrá una normalización, por ejemplo, de -1 a 0,9. Pero el centro siempre estará en 0. Es un enfoque interesante para combatir los desplazamientos.

Y aparentemente necesitas tomar

a[i]=a[i]/Abs(multiplier);

De lo contrario, un mínimo negativo lo pondrá todo patas arriba.

 
Elibrarius:

Si el mínimo y el máximo no se reflejan (por ejemplo, -100 y 90), tendrá una normalización de, por ejemplo, -1 a 0,9. Pero el centro siempre estará en 0. Un enfoque interesante para combatir las desviaciones.

Y aparentemente deberíamos hacerlo.

De lo contrario, un mínimo negativo lo pondría todo patas arriba.


Sí, es importante que el centro no se desplace.

Ya hay abismos para el máximo y el mínimo.

double x_min=MathAbs(a[ArrayMinimum(a)]);
double x_max=MathAbs(a[ArrayMaximum(a)]);
 
Maxim Dmitrievsky:

Los abismos para el máximo y el mínimo ya están ahí arriba

Falló)

Una cosa más, si tomas por ejemplo no 0, sino por ejemplo 0,5 - incluso con tu método "flotará" de muestra a muestra.

La única forma de ayudar es establecer manualmente y de forma rígida el rango de cada entrada. Pero no está claro cómo determinarlo. Por ejemplo, puede analizar los datos de un año y eliminar el 1-5% de los valores atípicos. Y trabajar con ellos durante el año. Aunque en un año cambiarán.