Редактирование: CatBoost

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

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
Библиотека CatBoost {{---}} метод машинного обучения, основанный на градиентном бустинге (англ. ''gradient boosting'').
+
Статья посвящена работе с библиотекой CatBoost {{---}} методу машинного обучения, основанному на градиентном бустинге (англ. ''gradient boosting'').
  
  
Строка 34: Строка 34:
 
=== Режимы работы ===
 
=== Режимы работы ===
  
* Регрессия (англ. ''regression'');
+
* Регрессия (англ. ''regression'')  
* Классификация (англ. ''classification'');
+
* Классификация (англ. ''classification'')
 
  Функция потерь (англ. ''loss function'') {{---}} максимизируем вероятность того, что все объекты в обучающей выборке классифицированы правильно, вероятность - это сигмоида над значением формулы.
 
  Функция потерь (англ. ''loss function'') {{---}} максимизируем вероятность того, что все объекты в обучающей выборке классифицированы правильно, вероятность - это сигмоида над значением формулы.
 
  Функция ''predict_proba'' {{---}} на выходе получаем готовые вероятности. Нужно отметить, что складывать их уже нельзя.
 
  Функция ''predict_proba'' {{---}} на выходе получаем готовые вероятности. Нужно отметить, что складывать их уже нельзя.
 
  Функция ''predict'' {{---}} выдает необработанный результат. Такой результат можно складывать, например, с результатами других моделей.
 
  Функция ''predict'' {{---}} выдает необработанный результат. Такой результат можно складывать, например, с результатами других моделей.
* Мультиклассификация (англ. ''multiclass classification'');
+
* Мультиклассификация (англ. ''multiclass classification'')
* Ранжирование (англ. ''ranking'').
+
* Ранжирование (англ. ''ranking'')
Объекты с попарной классификацией (??)
+
Объекты с попарной классификацией
  
 
=== Метрики ===
 
=== Метрики ===
  
Поддерживает множество [[Оценка_качества_в_задачах_классификации_и_регрессии|метрик]]<sup>[на 28.01.19 не создан]</sup> (англ. ''metrics''), таких как:
+
Поддерживает множество [[Оценка_качества_в_задачах_классификации_и_регресси|метрик]]<sup>[на 28.01.19 не создан]</sup> (англ. ''metrics''), таких как:
* Регрессия: ''MAE, MAPE, RMSE, SMAPE'' etc.;
+
* Регрессия: ''MAE, MAPE, RMSE, SMAPE'' etc.
* Классификация: ''Logloss , Precision, Recall, F1, CrossEntropy, BalancedAccuracy'' etc.;
+
* Классификация: ''Logloss , Precision, Recall, F1, CrossEntropy, BalancedAccuracy'' etc.
* Мультиклассификация: ''MultiClass, MultiClassOneVsAll, HammingLoss, F1'' etc.;
+
* Мультиклассификация: ''MultiClass, MultiClassOneVsAll, HammingLoss, F1'' etc.
 
* Ранжирование: ''NDCG, PrecisionAt, RecallAt, PFound, PairLogit'' etc.
 
* Ранжирование: ''NDCG, PrecisionAt, RecallAt, PFound, PairLogit'' etc.
  
Строка 54: Строка 54:
 
=== Шаги обучения ===
 
=== Шаги обучения ===
  
* Строим дерево;
+
* Строим дерево
* Считаем значение в листьях.
+
* Считаем значение в листьях
  
 
=== Построение дерева ===
 
=== Построение дерева ===
Строка 61: Строка 61:
 
Процесс построения происходит жадно.  
 
Процесс построения происходит жадно.  
  
* Выбираем первую вершину;
+
* Выбираем первую вершину
* Выбираем лучшее дерево с одной вершиной;
+
* Выбираем лучшее дерево с одной вершиной.
 
* Считаем метрику и по ней выбираем лучшее дерево.
 
* Считаем метрику и по ней выбираем лучшее дерево.
  
Дерево строится по слоям. Гарантировано на каждом слое один и тот же сплит (условие по которому мы делим).
+
Дерево строится по слоям. Гарантировано на каждом слое один и тот же сплит (условие, по которому мы делим).
  
 
=== Вычисление значений в листьях ===  
 
=== Вычисление значений в листьях ===  
Строка 96: Строка 96:
 
CatBoost поддерживает несколько режимов выборки данных
 
CatBoost поддерживает несколько режимов выборки данных
  
* Бутстрап (англ. ''bootstrap'') Бернулли {{---}} выбираем документ с вероятностью ''p''. Регулируется параметром ''sample_rate'';
+
* Бутстрап (англ. ''bootstrap'') Бернулли {{---}} выбираем документ с вероятностью ''p''. Регулируется параметром ''sample_rate''
* Байесовский бутстрап {{---}} байесовское распределение. Регулируется параметром ''bagging_temp''.
+
* Байесовский бутстрап {{---}} байесовское распределение. Регулируется параметром ''bagging_temp''
  
  Отметим, что бутстрап используется только для выбора структуры дерева, для подсчета значения в листьях используем всю выборку. Это сделано, так как выбор структуры дерева происходит долго, нужно несколько раз пересчитывать значения, поэтому использовать всю выборку слишком дорого. Однако значения в листьях с уже готовой структурой дерева считаются один раз, и для большей точности можно позволить использовать весь датасет.
+
  Отметим, что бутстрап используется только для выбора структуры дерева, для подсчета значения в листьях используем всю выборку. Это сделано, так как выбор структуры дерева происходит долго, нужно несколько раз пересчитывать значения, поэтому использовать всю выборку {{---}} слишком дорого. Однако значения в листьях с уже готовой структурой дерева считаются один раз, и для большей точности можно позволить использовать весь датасет.
  
 
=== Бинаризация признаков ===
 
=== Бинаризация признаков ===
Строка 107: Строка 107:
 
Есть несколько способов выбора:
 
Есть несколько способов выбора:
  
* Uniform. Равномерно разбиваем отрезок от минимума значения для данного признака до максимума;
+
* Uniform. Равномерно разбиваем отрезок от минимума значения для данного признака до максимума.
* Медианная сетка. Задаем количество разбиений над множеством значений, далее идем по объектам в порядке сортировки и разбиваем на группы по k объектов, где k {{---}} количество объектов в одном слоте разбиения;
+
* Медианная сетка. Задаем количество разбиений над множеством значений, далее идем по объектам в порядке сортировки и разбиваем на группы по k объектов, где k {{---}} количество объектов в одном слоте разбиения.
* UniformAndQuantiles. Комбинация 1 и 2 пунктов;
+
* UniformAndQuantiles. Комбинация 1 и 2 пунктов.
* MaxSumLog {{---}} в основе лежит динамика, работает долго;
+
* MaxSumLog {{---}} в основе лежит динамика, работает долго.
* GreedyLogSum {{---}} аналог MaxSumLog, используется жадный алгоритм, поэтому работает не точно, однако быстрее чем MaxSumLog.
+
* GreedyLogSum {{---}} аналог MaxSumLog, используется жадный алгоритм, поэтому работает не точно, однако быстрее чем MaxSumLog
  
 
=== Работа с категориальными признаками ===
 
=== Работа с категориальными признаками ===
  
* LabelEncoding {{---}} на реальных примерах точность работы низкая, так как появляется отношения порядка между объектами;
+
* LabelEncoding {{---}} на реальных примерах точность работы низкая, так как появляется отношения порядка между объектами.
 
* One-hot encoding {{---}} дает неплохую точность, если различных значений признаков не много. Иначе один признак размножится на множество признаков и будет влиять на модель заведомо сильнее остальных признаков.
 
* One-hot encoding {{---}} дает неплохую точность, если различных значений признаков не много. Иначе один признак размножится на множество признаков и будет влиять на модель заведомо сильнее остальных признаков.
  
  Лучше не делать препроцессинг самим из-за проблем, описанных выше. В CatBoost можно задать параметр cat_features, передав туда индексы категориальных признаков. Также можно отрегулировать параметр ''one_hot_max_size'' {{---}} максимальное количество различных значений у категориального признака, чтобы он мог в последствии быть подвержен one-hot encoding.
+
  Лучше не делать препроцессинг самим, из-за проблем, описанных выше. В CatBoost можно задать параметр cat_features, передав туда индексы категориальных признаков. Также можно отрегулировать параметр ''one_hot_max_size'' {{---}} максимальное количество различных значений у категориального признака, чтобы он мог в последствии быть подвержен one-hot encoding.
  
 
== Подбор параметров ==
 
== Подбор параметров ==
Строка 124: Строка 124:
 
Ниже описаны гиперпараметры (англ. ''hyperparameters''), на которые стоит обратить внимание при использовании библиотеки.
 
Ниже описаны гиперпараметры (англ. ''hyperparameters''), на которые стоит обратить внимание при использовании библиотеки.
  
* cat_features;
+
* cat_features
* Overfitting detector;
+
* Overfitting detector
* Число итераций и learning rate;
+
* Число итераций и learning rate
* L2_reg;
+
* L2_reg
* Random_srength;
+
* Random_srength
* Bagging_temp;
+
* Bagging_temp
* Глубина дерева (стоит попробовать 10 и 6).
+
* Глубина дерева (стоит попробовать 10 и 6)
  
 
== Полезная функциональность ==
 
== Полезная функциональность ==
  
* Snapshots;
+
* Snapshots
* Overfitting detector;
+
* Overfitting detector
* CV;
+
* CV
* eval_metrics.
+
* eval_metrics
  
 
== Бенчмарки ==
 
== Бенчмарки ==
Строка 219: Строка 219:
  
 
==См. также==
 
==См. также==
*[[:Дерево_решений_и_случайный_леc|Дерево решений и случайный леc]]<sup>[на 28.01.19 не создан]</sup>
+
*[[:Дерево_решений_и_случайный_леc|Дерево решений и случайный леc]]
 
*[[:Бустинг,_AdaBoost|Бустинг, AdaBoost]]
 
*[[:Бустинг,_AdaBoost|Бустинг, AdaBoost]]
  
Строка 229: Строка 229:
 
* [https://en.wikipedia.org/wiki/Gradient_boosting| Gradient Boosting, WIkipedia]
 
* [https://en.wikipedia.org/wiki/Gradient_boosting| Gradient Boosting, WIkipedia]
 
[[Категория: Машинное обучение]]
 
[[Категория: Машинное обучение]]
[[Категория: Ансамбли]]
 

Пожалуйста, учтите, что любой ваш вклад в проект «Викиконспекты» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Викиконспекты:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Чтобы изменить эту страницу, пожалуйста, ответьте на приведённый ниже вопрос (подробнее):

Отменить | Справка по редактированию (в новом окне)

Шаблон, используемый на этой странице: