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

 
Maxim Dmitrievsky:

сэмплов должно быть много, иначе модель ничему не обучится

Это способы квантования выборки для CatBoost - именно по этим границам потом идет перебор/обучение.

Мои эксперименты показывают, что сетку нужно подбирать для каждого предиктора отдельно, тогда прирост качества наблюдается, но этого не умеет делать CatBoost, а я не умею строить сетку и мне приходится строить сетки и выгружать в csv, а потом их перебирать с целью оценки поведения в них целевых. Я думаю, что это очень перспективная фишка, но нужно перевести код на MQL.

[Удален]  
Aleksey Vyazmikin:

Это способы квантования выборки для CatBoost - именно по этим границам потом идет перебор/обучение.

Мои эксперименты показывают, что сетку нужно подбирать для каждого предиктора отдельно, тогда прирост качества наблюдается, но этого не умеет делать CatBoost, а я не умею строить сетку и мне приходится строить сетки и выгружать в csv, а потом их перебирать с целью оценки поведения в них целевых. Я думаю, что это очень перспективная фишка, но нужно перевести код на MQL.

в настройках самой модели (параметрах) это есть? я хз что это

если нет в настройках, то фигня

 
Maxim Dmitrievsky:

в настройках самой модели (параметрах) это есть? я хз что это

если нет в настройках, то фигня

Есть в настройках, во всяком случае для коммандной строки

--feature-border-type

The quantization mode for numerical features.

Possible values:
  • Median
  • Uniform
  • UniformAndQuantiles
  • MaxLogSum
  • MinEntropy
  • GreedyLogSum
Quantization - CatBoost. Documentation
  • catboost.ai
Mode How splits are chosen Combine the splits obtained in the following modes, after first halving the quantization size provided by the starting parameters for each of them: Maximize the value of the following expression inside each bucket: Minimize the value of the following expression inside each bucket: Maximize the greedy approximation of...
[Удален]  
Aleksey Vyazmikin:

Есть в настройках, во всяком случае для коммандной строки

--feature-border-type

The quantization mode for numerical features.

Possible values:
  • Median
  • Uniform
  • UniformAndQuantiles
  • MaxLogSum
  • MinEntropy
  • GreedyLogSum

и что, прямо сильно улучшает? должна быть разница в пределах процента

 
Aleksey Vyazmikin:

С равномерным распределением понятно - я бы в начале массив уникальных значений создал и по нему резал.

А есть же другие методы разбить сетку:

Если уникальных - то получится криво. Например, всего 100 строк из них  10 уникальных, из них 2 по 45 строк и 8 по 1. Делим на 5 квантов - вполне возможно что будут выбраны только 5 по 1, а 2 самых представительных (по 45) будут пропущены.
 
Maxim Dmitrievsky:

и что, прямо сильно улучшает? должна быть разница в пределах процента

Выбор правильного разбиения существенно влияет на результат.

Вот пример по Recall - до 50% разброс - для меня это существенно.

Увеличение границ с 16 до 512 с шагом 16 - правда на гистограмме не по порядку - у меня названия немного этому препятствуют.


Пока экспериментирую с подбором сеток, но уже очевидно, что есть разные предикторы для которых нужны разные сетки, что б соблюдать логику, а не только подгонятся.

 
elibrarius:
Если уникальных - то получится криво. Например, всего 100 строк из них  10 уникальных, из них 2 по 45 строк и 8 по 1. Делим на 5 квантов - вполне возможно что будут выбраны только 5 по 1, а 2 самых представительных (по 45) будут пропущены.

Разные подходы работают по разному эффективно на разных предикторах, поэтому я и хочу иметь разные алгоритмы, что б понять, как их лучше подбирать. Поделюсь исследованиями, если сможете код перевести в MT5.

 
Aleksey Vyazmikin:

С равномерным распределением понятно - я бы в начале массив уникальных значений создал и по нему резал.

А есть же другие методы разбить сетку:

Uniform - просто диапазон значений делим, например значения в столбце от 0 до 100, шаг кванта = 100/255 = 0,39 только не в строках, а в значениях. Т.е. 0,0.39,0,78 .... 99.61

Потом можно найти по этим значения реально присутствующие в столбце и удалить дубликаты.


UniformAndQuantiles - просто ищем половину 255/2 = 127 квантов по 1 методу и 128 по второму, и объединяем в один массив.

Остальные 3 метода сложные - я не стал смотреть.

 
Aleksey Vyazmikin:

Это способы квантования выборки для CatBoost - именно по этим границам потом идет перебор/обучение.

Мои эксперименты показывают, что сетку нужно подбирать для каждого предиктора отдельно, тогда прирост качества наблюдается, но этого не умеет делать CatBoost, а я не умею строить сетку и мне приходится строить сетки и выгружать в csv, а потом их перебирать с целью оценки поведения в них целевых. Я думаю, что это очень перспективная фишка, но нужно перевести код на MQL.

1) Так и происходит. Берется отдельный столбец сортируется и разделяется на кванты.

2) Именно так он и делает, - с чего вы взяли?

 
elibrarius:

Uniform - просто диапазон значений делим, например значения в столбце от 0 до 100, шаг кванта = 100/255 = 0,39 только не в строках, а в значениях. Т.е. 0,0.39,0,78 .... 99.61

Потом можно найти по этим значения реально присутствующие в столбце и удалить дубликаты.


UniformAndQuantiles - просто ищем половину 255/2 = 127 квантов по 1 методу и 128 по второму, и объединяем в один массив.

Остальные 3 метода сложные - я не стал смотреть.

Вот эти сложные и интересуют :)

А по  UniformAndQuantiles теорию я знаю, а вот как это в реале не понимаю - как определить область где так квантуем, а где сяк. Тут не понимаю - или до середины одним методом, а после другим - но это бредово.