Изменения

Перейти к: навигация, поиск

CatBoost

4434 байта добавлено, 23:55, 7 ноября 2018
Нет описания правки
Есть рандомизация скора. ''Score += random_strength * Rand (0, lenofgrad * q)'', где ''q'' - множитель, уменьшающийся при увеличении итерации. Таким образом, рандом уменьшается ближе к концу.рандома
 
 
Бинаризация фичей
Пробовать все - долго. Поэтому выбираем сетку заранее и ходим по ней. Есть несколько способов выбора:
 
1) Uniform. Равномерно разбиваем отрезок от минимума значения для данной фичи до максимума.
2) Медианная сетка. Задаем количество разбиений над множеством значений, далее идем по объектам в порядке сортировки и разбиваем на группы по k объектов, где k - количество объектов в одном слоте разбиения.
3) UniformAndQuantiles. Комбинация 1 и 2 пунктов.
 
MaxSumLog - точно правильная динамика
GreedyLogSUm - жадно не точно но быстрее
 
 
----
Работа с категориальными факторами
 
 
 
1) LabelEncoding - работает плохо, так как появляется отношения порядка между объектами.
2) One-hot encoding - работает, если различных значений фичи не много. Иначе одна фича размножится на множество фичей и влиять на модель заведомо сильнее остальных фичей.
 
 
Лучше не делать препроцессинг самим, из-за проблем, описанных выше. В CatBoost можно задать параметр cat_features, передав туда индексы категориальных фичей. Также можно отрегулировать параметр ''one_hot_max_size'' - максимальное количество различных значений у категориальной фичи, чтобы она могла в последствии быть подвержена one-hot encoding.
 
Прочие методы:
 
 
* Статистика по катфичам: todo
Делаем вместо кат Фичи - числовую
Число - переобучение
средний таргет по пулу - переобучение ( один объект 0 значение - просто значение таргета здесь)
Leave one out (среднее по всем объектам кроме данного ( кот 4 успеха 7 не успехов - ctr = 0,3 or 0,4) теперь в одной стороне у нас все успехи или все неуспехи
Leave Bucket out
Число - работает
Выборка на две части и на одной считаем счетчики а на другой обучаемся - но данных сильно меньше становится
Считаем среднее для каждого объекта по новому / делаем перестановку / смотрим значение его кат Фичи / далее смотрим средний таргет только из тех объектов, которые выше
Для каждой кат Фили заново перестановку для одного объекта или за раз все надо считать
 
 
 
----
Параллельное обучение:
 
Можно обучать несколько моделей одновременно
Учим сразу ''n'', для всех ''n'' моделей используем одинаковую структуру дерева.
Выбираем одну из трех моделей по монетке ( каждая модель соответствует некоторой перестановке / далее выбираем для этой модели лучшее дерево/ и говорим что это дерево лучшее во всех трех моделях)
 
 
 
----
 
 
Подбор параметров
 
Ниже описаны гиперпараметры, на который стоит обратить внимание при использовании библиотеки.
1) cat_features
2) Overfitting detector
3) Число итераций и learning rate
4) L2_reg
5) Random_srength
6) Bagging_temp
7) Глубина дерева (стоит попробовать 10 и 6)
Анонимный участник

Навигация