Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 552

 
Maxim Dmitrievsky:
так что я хз чему в этой жизни верить. .все нужно перепроверять

+1 - я вначале без удаления выбросов делал, и получил сильные смещения центра (или нуля) отнормированных данных. После удаления выбросов все стало более стабильным.

 
Maxim Dmitrievsky:

то есть уже не jPredictor наконец-то? :)


Ну почему именно с ним.... Он строит модели покруче всяких там библиотек и т.д. Потому как перетряхивает данные досконально...

 
Mihail Marchukajtes:

Ну почему именно с ним.... Он строит модели покруче всяких там библиотек и т.д. Потому как перетряхивает данные досконально...


только долго блин.. :)

 
elibrarius:

+1 - я вначале без удаления выбросов делал, и получил сильные смещения центра (или нуля) отнормированных данных. После удаления выбросов все стало более стабильным.


а ну там да со сдвигом иногда проблемы из-за нормировки, поэтому у меня все входы через логарифмы приращений и там уже центр всегда будет в ноле если их нужно отнормировать

но вообще выбросы удаляются больше из-за того что бы НС веса сильно не смещала на аномалиях.. а лесам например на них вообще наплевать

 
Maxim Dmitrievsky:

только долго блин.. :)


Именно поэтому я статистически сокращаю количество входов и тренировка становится адекватна по времени. Считай за рабочий день сделал модель+ бустинг 4-го уровня. Ща ещё модель отката сделаю и должон заработать на недели. Во всяком случае надеюсь на это...

 
Maxim Dmitrievsky:

а ну там да со сдвигом иногда проблемы из-за нормировки, поэтому у меня все входы через логарифмы приращений и там уже центр всегда будет в ноле если их нужно отнормировать

но вообще выбросы удаляются больше из-за того что бы НС веса сильно не смещала на аномалиях.. а лесам например на них вообще наплевать

Ну по сути логарифмирование делает нечто похожее, только не отбрасывает, а приближает, сильные выбросы. Впрочем я их тоже не отбрасываю, а приравниваю максимуму. if(v>max){v=max;}

А вообще мне хочется, заранее определить каждому предиктору допустимый диапазон и все эксперименты проводить в нем. Т.к. даже при моем методе и при логарифмировании, будет некоторое смещение данных от выборки к выборке.

 
elibrarius:
Ну по сути логарифмирование делает нечто похожее, только не отбрасывает, а приближает, сильные выбросы. Впрочем я их тоже не отбрасываю, а приравниваю максимуму. if(v>max){v=max;}

а ну да, все правильно.. наверное )

сначала беру какой-нибудь ряд типа log(close[0]/close[n])

а потом

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;
     }
  }
а если потом брать маленькие выборки то можно multiplier заранее определить по большой выборке что бы он не менялся
 
Maxim Dmitrievsky:

а ну да, все правильно.. наверное )

сначала беру какой-нибудь ряд типа log(close[0]/close[n])

а потом

Если мин и мах не зеркальны (напрмер -100 и 90), то у вас будет нормировка например от -1 до 0,9. Но зато центр всегда будет в 0. Интересный подход в борьбе со смещениями.

И видимо надо брать

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

Иначе отрицательный мин. все перевернет.

 
elibrarius:

Если мин и мах не зеркальны (напрмер -100 и 90), то у вас будет нормировка например от -1 до 0,9. Но зато центр всегда будет в 0. Интересный подход в борьбе со смещениями.

И видимо надо брать

Иначе отрицательный мин. все перевернет.


да, тут из расчета что главне что бы центр не смещался

там чуть выше уже Абысы по макс и мин взяты

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

там чуть выше уже Абысы по макс и мин взяты

Пропустил)

Еще момент, если взять например не 0, а например 0.5 - он даже при вашем методе будет "плавать" от выборки к выборке.

Поможет только жесткое ручное задание диапазона для каждого входа. Но не понятно, как его определить. Может например прогнать данные за год, и откинуть 1-5% выбросов. И в течении года работать по ним. Хотя через год они изменятся.

Причина обращения: