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

 
elibrarius:

Не согласен. Квантованием вы уменьшаете количество информации. Максимальное число квантования оставит максимум информации.

Но квантовать на 65535 дольше чем на 255.

Зря, что несогласны - информации там мало и её надо отделить от шума. Нам (мне) нужны устойчивые зависимости, а не те, что повторяются раз в 5 лет и поэтому по ним недостаточно просто статистики для оценки их склонности к конкретной целевой, использование недостаточного числа примеров приводит просто к подгонке.

 
Aleksey Vyazmikin:

Да, я работаю над этим - изначально это делалось для генетических деревьев.

Необходимо оценивать распределение информации по выборке и её связь с целевой. Я смотрю на то, как уменьшается ошибка на конкретном участке квантования и какой процент примеров она содержит - сбалансированность этих показателей позволяет отобрать лучшие разбиения.

Как вы оцениваете ошибку при квантовании. Её же можно получить только прогнав обучение, причем сразу по всем столбцам, а не по каждому, квантуемому вы настоящий момент.

 
elibrarius:
Aleksey Vyazmikin:

Как вы оцениваете ошибку при квантовании. Её же можно получить только прогнав обучение, причем сразу по всем столбцам, а не по каждому, квантуемому вы настоящий момент.

Я оцениваю изменение баланса целевых относительно всей выборки. Это особенно актуально, если целевых более двух.

 
Aleksey Vyazmikin:

Я оцениваю изменение баланса целевых относительно всей выборки. Это особенно актуально, если целевых более двух.

В любом случае очередной сплит будет разбиваться через точку квантования на 2 части.

Вы квантованием крупных 255 кусков можете сдвинуть границу кванта достаточно грубо - 5-10-20% от его размера. Применив 65535 квантов вы будете иметь шаг в 0,5% от вашего кванта. А дерево подберет лучший вариант.

Хотя вряд ли. Обычно бьет просто по середине или по четвертинкам. С  65535 квантами середина найдется точнее, а с 255 грубее в 256 раз.

 
elibrarius:

В любом случае очередной сплит будет разбиваться через точку квантования на 2 части.

Вы квантованием крупных 255 кусков можете сдвинуть границу кванта достаточно грубо - 5-10-20% от его размера. Применив 65535 квантов вы будете иметь шаг в 0,5% от вашего кванта. А дерево подберет лучший вариант.

Хотя вряд ли. Обычно бьет просто по середине или по четвертинкам. С  65535 квантами середина найдется точнее, а с 255 грубее в 256 раз.

Вот именно, что будет разбиение, но разбиение будет не на 50% а неравномерно - в зависимости от корреспонденции с верхним сплитом(сплитами), но логика подсказывает, что шансы будут разные, если искать там, где насыщенный отрезок единицами или там где их равномерное количество (относительно баланса всей выборки). Цель - получить в листьях не менее 1% примеров от выборки и при этом порядка 65% меток одного класса.

 
Aleksey Vyazmikin:

Вот именно, что будет разбиение, но разбиение будет не на 50% а неравномерно - в зависимости от корреспонденции с верхним сплитом(сплитами), но логика подсказывает, что шансы будут разные, если искать там, где насыщенный отрезок единицами или там где их равномерное количество (относительно баланса всей выборки). Цель - получить в листьях не менее 1% примеров от выборки и при этом порядка 65% меток одного класса.

Думаю это весьма сложная задача.

А если такая фича найдется, то можно только по ней и работать, даже без МО.

К сожалению у нас таких фич нету.

 
Maxim Dmitrievsky:

на экзам не надо, но может пригодится

Результаты получились странные - на тестовой и учебной выборке Recall 0,6-0,8 , а на exam без преобразования 0,009, а с преобразованием 0,65 - чтот тут не так :(

Такое ощущение, что CatBoost выучил алгоритм преобразования :)

А есть ли возможность пометить старые и новые строки? Тогда можно из преобразованной выборки убрать преобразованные строки и посмотреть - это проблема интерпретации или же не качественное обучение всё ж.

 
elibrarius:

Думаю это весьма сложная задача.

А если такая фича найдется, то можно только по ней и работать, даже без МО.

К сожалению у нас таких фич нету.

По y - разбиение сетки, а по X отклонение в процентах от сумму целевой каждого класса во всей выборке. Фильтр 5%. Видно, что на разных участках доминируют разные классы, бывает зеркальное изменение - тогда улучшение происходит за счет конкретного класса (в минус идет гистограмма), а бывает что нет. Всё это надо использовать при обучении, но стандартные методы обучения, известные мне, не очень это учитывают. Возможно, что эффективней будет перебор с генетикой (точней на выбывание) - надо делать.

 
Aleksey Vyazmikin:

По y - разбиение сетки, а по X отклонение в процентах от сумму целевой каждого класса во всей выборке. Фильтр 5%. Видно, что на разных участках доминируют разные классы, бывает зеркальное изменение - тогда улучшение происходит за счет конкретного класса (в минус идет гистограмма), а бывает что нет. Всё это надо использовать при обучении, но стандартные методы обучения, известные мне, не очень это учитывают. Возможно, что эффективней будет перебор с генетикой (точней на выбывание) - надо делать.

Допустим, вы нашли хороший квант в котором 65% примеров 1 класса.
Разделение происходит например по середине, пусть разбили по этому вашему кванту.

1)От сплита в левую ветку уйдут все примеры из вашего кванта с 65% нужных примеров и еще от куча квантов, которые меньше по значению вашего кванта. В итоге получим не 65%, а другой процент - значительно меньший за счет разбавления примерами из других квантов.

2) Второе - если по вашему кванту не первый сплит в дереве, то все предыдущие сплиты удаляли из выборки примерно по 50% примеров. И на 5 уровне дерева от примеров в вашем кванте останется 1/(2^5)=1/32 часть примеров, которые перемешаются с такими же прореженными квантами, как в первом случае. Т.е. 65% примеров вряд ли останется в листе в результате обучения.

Единственный вариант - после квантования пометить столбцы как категориальные признаки - тогда если это первый сплит в дереве - то все 65% примеров уйдут в левую ветку без перемешивания с другими квантами. Если не первый сплит в дереве - то опять получим прореживание верхними сплитами.

 
elibrarius:

Допустим, вы нашли хороший квант в котором 65% примеров 1 класса.
Разделение происходит например по середине, пусть разбили по этому вашему кванту.

1)От сплита в левую ветку уйдут все примеры из вашего кванта с 65% нужных примеров и еще от куча квантов, которые меньше по значению вашего кванта. В итоге получим не 65%, а другой процент - значительно меньший за счет разбавления примерами из других квантов.

2) Второе - если по вашему кванту не первый сплит в дереве, то все предыдущие сплиты удаляли из выборки примерно по 50% примеров. И на 5 уровне дерева от примеров в вашем кванте останется 1/(2^5)=1/32 часть примеров, которые перемешаются с такими же прореженными квантами, как в первом случае. Т.е. 65% примеров вряд ли останется в листе в результате обучения.

Единственный вариант - после квантования пометить столбцы как категориальные признаки - тогда если это первый сплит в дереве - то все 65% примеров уйдут в левую ветку без перемешивания с другими квантами. Если не первый сплит в дереве - то опять получим прореживание верхними сплитами.

1-2 - да так может быть, но не обязательно, нужен подход, который будет минимизировать такую вероятность.

А насчет категориальных признаков - это верно, но для MQ нет интерпретатора модели с категориальными признаками.

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

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