Простое руководство по алгоритму машинного обучения CatBoost от Data Scientist.
Содержание
- Введение
- CatBoost Краткое руководство
- Резюме
- Рекомендации
Введение
Соревнования по Data Science становятся все более популярными, особенно на сайте Kaggle, и новые алгоритмы машинного обучения. В то время как XGBoost был наиболее конкурентоспособным и точным алгоритмом большую часть времени, появился новый лидер, под названием CatBoost. Это библиотека с открытым исходным кодом, основанная на деревьях решений повышения градиента от компании Яндекс . В свою документацию они включают ссылки и примеры GitHub, новости, тесты, отзывы, контакты, учебник и установку. Если вы используете XGBoost, LightGBM или H2O, документация CatBoost провела тесты и доказала, CatBoost показывает лучшие результаты, в сравнении с ними. Если у вас есть более категориальные переменные, то CatBoost - это то, что вам нужно. Продолжайте читать ниже, если хотите узнать больше об этой замечательной библиотеке от Яндекс.
CatBoost
Основная причина, по которой я использую CatBoost, заключается в том, что он прост в использовании, эффективен и особенно хорошо работает с категориальными переменными. Как следует из названия, CatBoost означает «категорическое» повышение. Его можно использовать быстрее, чем, скажем, XGBoost, потому что он не требует предварительной обработки ваших данных, которая может занять больше всего времени в типичном процессе построения модели Data Science. Другая проблема, с которой сталкиваются другие алгоритмы, заключается в том, что при использовании категориальных переменных, таких как идентификаторы, они создают невозможную для вычисления матрицу, состоящую из тысяч столбцов, состоящих из фиктивных переменных или однократного горячего кодирования. CatBoost решает эту проблему путем преобразования своих категориальных переменных, как вы увидите ниже.
Обучение
CatBoost основывается на деревьях решений с градиентным усилением, включая обучающий набор данных, с точностью, определенной на основе проверочного набора данных.При обучении эти деревья решений строятся последовательно, при этом для каждого дерева снижаются потери.
Split Calculation
На основе начальных параметров CatBoost используется для числовых характеристик при определении наилучших способов разделения данных на сегменты.
Преобразование категориальных признаков
Я думаю, что основным преимуществом этого алгоритма является то, что он наилучшим образом обрабатывает преобразование категориальных признаков по сравнению с другими алгоритмами машинного обучения.
Например, при классификации перестановка выполняется случайным образом, затем выполняется расчет по стандартной формуле, уникальной для CatBoost (упорядоченная целевая кодировка):
Feature Importance
Эта библиотека позволяет создавать потрясающие визуализации, включая процесс обучения и тестирования модели, а также много других важных функций . Вы также можете получить доступ к ShapValues, который становится все более популярным из-за хорошей обобщающией функций вашей модели. В документации есть множество примеров. Вот https://catboost.ai/docs/features/visualization_jupyter-notebook.html - особенно полезная ссылка, которую они предоставили для визуализаций:
Краткое руководство
У catboost Есть несколько встроенных функций CatBoostClassifier, так и CatBoostRegressor, я буду обсуждать CatBoostRegressor, но код классификатора не слишком сильно отличается, кроме основного типа алгоритма, который вы используете на основе вашей целевой переменной.
Вот код, который вы можете использовать для создания вашей первой модели CatBoost - конечно, вы также можете настроить свои параметры:
Как видите, всего несколькими строками кода вы можете создать свою первую базовую модель регрессии CatBoost. Он похож на большинство других алгоритмов машинного обучения, но наиболее важной частью кода является параметр cat_features. Вам нужно будет выделить свой список категориальных функций в cat_features.
Вот некоторые из многих полезных методов, которые являются частью этого алгоритма:
Конечно, их намного больше, но я лично использовал эту модель, особенно get_feature_importance, так как она возвращает хорошее резюме ваших важных функций.
Больше примеров с кодом: https://github.com/catboost/tutorials/blob/master/categorical_features/categorical_features_parameters.ipynb
https://github.com/catboost/tutorials
Резюме
Как видите, CatBoost имеет некоторые полезные преимущества при простой реализации. Некоторые из основных особенностей этой крутой библиотеки заключаются в том, что даже без настройки параметров параметры по умолчанию обеспечивают отличные результаты, категориальные функции не нуждаются в предварительной обработке, быстром вычислении, повышении точности с меньшим количеством переобучений и, наконец, эффективных прогнозов. Исследователи Яндекса предоставили чрезвычайно полезную библиотеку, которую можно использовать для нескольких сценариев использования в соревнованиях, а также для профессиональных и производственных сценариев. Они также доказали, что на многих популярных наборах данных их эталонное качество является лучшим по сравнению с LightGBM, XGBoost и H2O.
В целом CatBoost хорош в следующем:
- быстрый
- легко использовать
- точный
- использование категориальных переменных в вашем наборе функций
- предоставляет несколько полезных методов
- предоставляет несколько полезных визуализаций
- оказался лучше, чем предыдущие ведущие алгоритмы машинного обучения
Надеюсь, вы нашли эту статью интересной и полезной. Пожалуйста, не стесняйтесь комментировать ниже, если вы использовали CatBoost раньше или предпочитаете что-то другое. Вы согласны с тем, что так лучше и почему или почему нет? Хочу поблагодарить Яндекс за прекрасную библиотеку и документацию. Спасибо, что прочитали, я ценю это!
Если вы хотите узнать больше о библиотеке CatBoost, есть еще одна статья [6], в которой все параметры, что они означают и как их настроить, рассказала Мария Гаркавенко.
-----------------------------
Рекомендации
[1] Photo by Pacto Visual on Unsplash, (2016)
[2] Photo by Fachry Zella Devandra on Unsplash, (2017)
[3] Yandex, CatBoost documentation, (2020)
[4] Yandex, CatBoost visualization, (2020)
[5] Photo by Joshua Aragon on Unsplash, (2019)
[6] Mariia Garkavenko, Categorical features parameters in CatBoost, (2020)