Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 2109
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Преобразовывать лень)
Объясню суть:
1) сортируем столбец
2) считаем среднее количество элементов в кванте, например 10000 элеметов / 255 квантов = 39,21
3) в цикле перемещаемся на 39,21 элементов на каждом шаге и добавляем значение из отсортированного массива в массив значений квантов. Т.е. 0 значение массива = значению 0 кванта, 39-е значение = 1 кванту, 78-е = 2 кванту и т.д.
Если значение уже есть в массиве, то есть попали в зону где много дубликатов, то пропускаем дубликат не добавляем.
На каждом шаге добавляем именно 39,21 а потом сумму округляем для выбора элемента в массиве, чтобы было равномерно. Т.е. вместо 195 (39*5 = 195) элемента взять 196 ( 39,21 * 5 = (int)196,05 )
С равномерным распределением понятно - я бы в начале массив уникальных значений создал и по нему резал.
А есть же другие методы разбить сетку:
С равномерным распределением понятно - я бы в начале массив уникальных значений создал и по нему резал.
А есть же другие методы разбить сетку:
сэмплов должно быть много, иначе модель ничему не обучится
сэмплов должно быть много, иначе модель ничему не обучится
Это способы квантования выборки для CatBoost - именно по этим границам потом идет перебор/обучение.
Мои эксперименты показывают, что сетку нужно подбирать для каждого предиктора отдельно, тогда прирост качества наблюдается, но этого не умеет делать CatBoost, а я не умею строить сетку и мне приходится строить сетки и выгружать в csv, а потом их перебирать с целью оценки поведения в них целевых. Я думаю, что это очень перспективная фишка, но нужно перевести код на MQL.
Это способы квантования выборки для CatBoost - именно по этим границам потом идет перебор/обучение.
Мои эксперименты показывают, что сетку нужно подбирать для каждого предиктора отдельно, тогда прирост качества наблюдается, но этого не умеет делать CatBoost, а я не умею строить сетку и мне приходится строить сетки и выгружать в csv, а потом их перебирать с целью оценки поведения в них целевых. Я думаю, что это очень перспективная фишка, но нужно перевести код на MQL.
в настройках самой модели (параметрах) это есть? я хз что это
если нет в настройках, то фигня
в настройках самой модели (параметрах) это есть? я хз что это
если нет в настройках, то фигня
Есть в настройках, во всяком случае для коммандной строки
--feature-border-type
The quantization mode for numerical features.
Есть в настройках, во всяком случае для коммандной строки
--feature-border-type
The quantization mode for numerical features.
и что, прямо сильно улучшает? должна быть разница в пределах процента
С равномерным распределением понятно - я бы в начале массив уникальных значений создал и по нему резал.
А есть же другие методы разбить сетку:
и что, прямо сильно улучшает? должна быть разница в пределах процента
Выбор правильного разбиения существенно влияет на результат.
Вот пример по Recall - до 50% разброс - для меня это существенно.
Увеличение границ с 16 до 512 с шагом 16 - правда на гистограмме не по порядку - у меня названия немного этому препятствуют.
Пока экспериментирую с подбором сеток, но уже очевидно, что есть разные предикторы для которых нужны разные сетки, что б соблюдать логику, а не только подгонятся.
Если уникальных - то получится криво. Например, всего 100 строк из них 10 уникальных, из них 2 по 45 строк и 8 по 1. Делим на 5 квантов - вполне возможно что будут выбраны только 5 по 1, а 2 самых представительных (по 45) будут пропущены.
Разные подходы работают по разному эффективно на разных предикторах, поэтому я и хочу иметь разные алгоритмы, что б понять, как их лучше подбирать. Поделюсь исследованиями, если сможете код перевести в MT5.
С равномерным распределением понятно - я бы в начале массив уникальных значений создал и по нему резал.
А есть же другие методы разбить сетку:
Uniform - просто диапазон значений делим, например значения в столбце от 0 до 100, шаг кванта = 100/255 = 0,39 только не в строках, а в значениях. Т.е. 0,0.39,0,78 .... 99.61
Потом можно найти по этим значения реально присутствующие в столбце и удалить дубликаты.UniformAndQuantiles - просто ищем половину 255/2 = 127 квантов по 1 методу и 128 по второму, и объединяем в один массив.
Остальные 3 метода сложные - я не стал смотреть.