CatBoost — различия между версиями
(Новая страница: «Статья посвящена работе с библиотекой CatBoost») |
|||
Строка 1: | Строка 1: | ||
Статья посвящена работе с библиотекой CatBoost | Статья посвящена работе с библиотекой CatBoost | ||
+ | |||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | Режимы работы: | ||
+ | 1) Регрессия (mse - функция потерь) | ||
+ | 2) Классификация (надо сделать вероятности, функция потерь - максимизируем вероятность того что все объекты в обучающей выборке классифицированы правильно, вероятность - это сигмоида над значением формулы) predict_proba - для вероятности (складывать нельзя)/ predict - просто рез (и тут можно складывать значени] нескольких моделей) | ||
+ | 3) Мультиклассификация | ||
+ | 4) Ранжирования - (объекты с попарной классификацией) | ||
+ | Максимизируем вероятность что как можно больше пар будут в правильном порядке отранжировано | ||
+ | Ранжирование - есть сет данных и есть таргет и есть группы (запросы, дс разбит по группам, нужно лучше отранжировать группу) из группы делаем набор пар и делаем как в пред пункте) Применение ( не важно абсолютное значение формулы) | ||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | Оптимизируемые функции: | ||
+ | Поддерживает много оптимизируетмых функций. Для конкретной модели выбирается одна оптимизируемая функция. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | Метрики: | ||
+ | Поддерживает много метрик. | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | Шаги обучения: | ||
+ | |||
+ | |||
+ | 1) Строим дерево | ||
+ | 2) Считаем значение в листьях | ||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | 1) Построение дерева: | ||
+ | |||
+ | Процесс построения происходит жадно. Выбираем первую вершину, далее выбираем лучшее дерево с одной вершиной. Далее смотрим скоры и выбираем лучшее дерево. | ||
+ | Дерево строится по слоям. Гарантировано на каждом слое один и тот же сплит (условие, по которому мы делим) | ||
+ | |||
+ | Как выбрать лучшее дерево? | ||
+ | Смотрим на сколько меняется функция ошибки, выбираем такое дерево, чтобы оно как можно лучше приближало вектор градиентов. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | В основе CatBoost лежит грдиентный бустинг. | ||
+ | Как работает градиентный бустинг? | ||
+ | |||
+ | |||
+ | '''Градиент функции ошибки - все производные по всем значениям функции''' | ||
+ | |||
+ | Отметим, что существует идеальный шаг по градиенту, однако листьев в дереве меньше, чем документов в датасете. | ||
+ | Поэтому мы можем пытаться приближать тот самый идеальный шаг. | ||
+ | Чтобы найти лучший сплит, проверяем похожесть после одного шага алгоритма по градиенту - это скор. | ||
+ | |||
+ | |||
+ | ---- | ||
+ | Работа с датасетом: | ||
+ | |||
+ | CatBoost поддерживает несколько режимов выборки данных: | ||
+ | |||
+ | 1) Бутстрап Бернулли - выбираем документ с вероятностью ''p''. Регулируется параметром ''sample rate'' | ||
+ | 2) Байесовский бутстрап - байесовское распределение. Регулируется параметром ''bagging temp'' | ||
+ | |||
+ | |||
+ | Отметим, что бутстрап используется только для выбора структуры дерева, для подсчета значения в листьях используем всю выборку. Это сделано так как выбор структуры дерева происходит долго, нужно несколько раз пересчитывать значения, поэтому использовать всю выборку - слишком дорого. Однако значения в листьях с уже готовой структурой дерева считаются один раз, и для большей точности можно позволить использовать весь датасет. | ||
+ | |||
+ | |||
+ | ---- | ||
+ | Рандомизация скора | ||
+ | |||
+ | Есть рандомизация скора. ''Score += random_strength * Rand (0, lenofgrad * q)'', где ''q'' - множитель, уменьшающийся при увеличении итерации. Таким образом, рандом уменьшается ближе к концу.рандома |
Версия 23:37, 7 ноября 2018
Статья посвящена работе с библиотекой CatBoost
Режимы работы: 1) Регрессия (mse - функция потерь) 2) Классификация (надо сделать вероятности, функция потерь - максимизируем вероятность того что все объекты в обучающей выборке классифицированы правильно, вероятность - это сигмоида над значением формулы) predict_proba - для вероятности (складывать нельзя)/ predict - просто рез (и тут можно складывать значени] нескольких моделей) 3) Мультиклассификация 4) Ранжирования - (объекты с попарной классификацией) Максимизируем вероятность что как можно больше пар будут в правильном порядке отранжировано Ранжирование - есть сет данных и есть таргет и есть группы (запросы, дс разбит по группам, нужно лучше отранжировать группу) из группы делаем набор пар и делаем как в пред пункте) Применение ( не важно абсолютное значение формулы)
Оптимизируемые функции:
Поддерживает много оптимизируетмых функций. Для конкретной модели выбирается одна оптимизируемая функция.
Метрики:
Поддерживает много метрик.
Шаги обучения:
1) Строим дерево
2) Считаем значение в листьях
1) Построение дерева:
Процесс построения происходит жадно. Выбираем первую вершину, далее выбираем лучшее дерево с одной вершиной. Далее смотрим скоры и выбираем лучшее дерево. Дерево строится по слоям. Гарантировано на каждом слое один и тот же сплит (условие, по которому мы делим)
Как выбрать лучшее дерево? Смотрим на сколько меняется функция ошибки, выбираем такое дерево, чтобы оно как можно лучше приближало вектор градиентов.
В основе CatBoost лежит грдиентный бустинг.
Как работает градиентный бустинг?
Градиент функции ошибки - все производные по всем значениям функции
Отметим, что существует идеальный шаг по градиенту, однако листьев в дереве меньше, чем документов в датасете. Поэтому мы можем пытаться приближать тот самый идеальный шаг. Чтобы найти лучший сплит, проверяем похожесть после одного шага алгоритма по градиенту - это скор.
Работа с датасетом:
CatBoost поддерживает несколько режимов выборки данных:
1) Бутстрап Бернулли - выбираем документ с вероятностью p. Регулируется параметром sample rate 2) Байесовский бутстрап - байесовское распределение. Регулируется параметром bagging temp
Отметим, что бутстрап используется только для выбора структуры дерева, для подсчета значения в листьях используем всю выборку. Это сделано так как выбор структуры дерева происходит долго, нужно несколько раз пересчитывать значения, поэтому использовать всю выборку - слишком дорого. Однако значения в листьях с уже готовой структурой дерева считаются один раз, и для большей точности можно позволить использовать весь датасет.
Рандомизация скора
Есть рандомизация скора. Score += random_strength * Rand (0, lenofgrad * q), где q - множитель, уменьшающийся при увеличении итерации. Таким образом, рандом уменьшается ближе к концу.рандома