Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 552

 
Maxim Dmitrievsky:
por isso não sei no que acreditar nesta vida... tudo tem de ser verificado duas vezes.

+1 - Fi-lo inicialmente sem remover outliers, e consegui fortes deslocamentos do centro (ou zero) dos dados. Depois de remover as aberrações, tudo se tornou mais estável.

 
Maxim Dmitrievsky:

então não é finalmente o JPredictor? :)


Porquê exactamente com ele.... Constrói melhores modelos do que bibliotecas e assim por diante. Porque abana os dados completamente...

 
Mihail Marchukajtes:

Porque é que ele exactamente.... Constrói melhores modelos do que bibliotecas e assim por diante. Porque abana os dados a fundo...


mas leva muito tempo... :)

 
elibrarius:

+1 - Fi-lo inicialmente sem remover outliers, e consegui fortes deslocamentos no centro (ou zero) dos dados attrminados. Depois de remover as aberrações, tudo se tornou mais estável.


Bem, às vezes há um problema com o turno por causa da normalização, por isso tenho todos os inputs através de logaritmos de incrementos e aí o centro estará sempre a zero se precisarem de ser normalizados.

mas em geral, os picos são removidos mais para que a balança não se desloque muito nas anomalias... e o andaime, por exemplo, não se preocupe com eles de todo

 
Maxim Dmitrievsky:

mas leva muito tempo... :)


É por isso que eu reduzo estatisticamente o número de entradas e o treinamento se torna adequado no tempo. Num dia de trabalho, fiz o modelo + nível 4 de reforço. Agora vou fazer outro modelo de salto e deve funcionar durante semanas. Pelo menos espero que sim...

 
Maxim Dmitrievsky:

Bem, às vezes há um problema com o turno por causa da normalização, por isso tenho todos os inputs através de logaritmos de incrementos e aí o centro estará sempre a zero se precisarem de ser normalizados.

mas em geral, os espigões são removidos mais para que os NS não deslocassem pesos pesados sobre as anomalias... e o andaime, por exemplo, não se preocupa nada com eles

Bem, na verdade o logaritmo faz algo semelhante, só que não descarta, e traz, emissões fortes. No entanto, eu não os descarto também, mas os igualo ao máximo. if(v>max){v=max;}

Em geral, quero definir antecipadamente um intervalo aceitável para cada preditor e realizar todas as minhas experiências dentro desse intervalo. Porque mesmo com o meu método e o método logarítmico terei alguns dados de amostra em amostra.

 
elibrarius:
Na verdade, o logaritmo faz algo semelhante, só que não descarta, mas aproxima-se de picos fortes. No entanto, também não as descarto, mas as igualo ao máximo. if(v>max){v=max;}

Oh sim, é verdade... acho que sim)

Eu primeiro pego algumas séries como log(close[0]/close[n])

e depois

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;
     }
  }
e se você tirar amostras pequenas então você pode definirpreliminarmente na amostra grande, para que ela não mude.
 
Maxim Dmitrievsky:

Oh sim, é verdade... acho que sim)

Eu primeiro pego algumas séries como log(close[0]/close[n])

e depois

Se o mínimo e máximo não forem espelhados (por exemplo -100 e 90), então você terá uma normalização, por exemplo, de -1 a 0,9. Mas o centro estará sempre a 0. É uma abordagem interessante ao desviar os offsets.

E aparentemente você precisa de levar

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

Caso contrário, um "min" negativo virará tudo de cabeça para baixo.

 
Elibrarius:

Se os valores mínimo e máximo não forem espelhados (por exemplo -100 e 90), terá uma normalização de, por exemplo, -1 a 0,9. Mas o centro estará sempre a 0. É uma abordagem interessante para lidar com as compensações.

E aparentemente devíamos.

Caso contrário, um mínimo negativo viraria tudo de cabeça para baixo.


Sim, é importante que o centro não se desloque.

Já há Abismos para o máximo e o mínimo.

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

Os Abismos do Max e do Min já estão lá em cima.

Falhado)

Mais uma coisa, se você tomar por exemplo não 0, mas por exemplo 0,5 - mesmo com seu método, ele "flutua" de amostra em amostra.

A única maneira de ajudar é ajustar manualmente e rigidamente o intervalo para cada entrada. Mas não está claro como determiná-lo. Por exemplo, você pode executar dados por um ano e eliminar 1-5% dos outliers. E trabalhar com eles durante o ano. Embora eles mudem dentro de um ano.