CatBoost: библиотека градиентного бустинга¶
CatBoost (от англ. Categorical Boosting) — библиотека с открытым исходным кодом для машинного обучения, реализующая алгоритм градиентного бустинга над решающими деревьями. Разработана компанией «Яндекс» и предназначена для решения задач классификации, регрессии, ранжирования и прогнозирования. Отличительной особенностью CatBoost является встроенная поддержка категориальных признаков без необходимости их предварительного кодирования, а также высокая точность и устойчивость к переобучению.
¶История
Разработка CatBoost началась в 2017 году в рамках исследовательского подразделения «Яндекса». Первая публичная версия библиотеки была выпущена в июле 2017 года. Проект создавался для решения внутренних задач компании, связанных с прогнозированием и ранжированием, где требовалась эффективная работа с категориальными данными, характерными для веб-поиска и рекомендательных систем.
В 2018 году исходный код CatBoost был опубликован на платформе GitHub под лицензией Apache 2.0, что сделало библиотеку доступной для широкого сообщества разработчиков. С момента релиза проект активно развивается: регулярно выходят новые версии, добавляются функции, улучшается производительность и расширяется поддержка различных интерфейсов программирования.
¶Основные характеристики
¶Градиентный бустинг
CatBoost относится к семейству алгоритмов градиентного бустинга — метода машинного обучения, при котором ансамбль слабых моделей (обычно деревьев решений) строится последовательно. Каждая новая модель исправляет ошибки предыдущих, минимизируя заданную функцию потерь. В отличие от классического бустинга, CatBoost использует симметричные деревья, что ускоряет обучение и делает модель менее склонной к переобучению.
¶Работа с категориальными признаками
Главная особенность CatBoost — встроенный механизм обработки категориальных признаков. В большинстве библиотек градиентного бустинга (например, XGBoost или LightGBM) категориальные переменные требуют предварительного преобразования в числовые значения (например, через one-hot кодирование или label encoding). CatBoost автоматически преобразует категориальные признаки с использованием статистики целевой переменной и специальной схемы упорядочивания, что позволяет избежать утечки данных и повышает качество модели.
¶Симметричные деревья
В CatBoost используются деревья с симметричной структурой: на каждом уровне все узлы дерева имеют одинаковое условие разделения. Это свойство ускоряет выполнение алгоритма на этапе инференса и упрощает реализацию на аппаратном уровне, однако может приводить к увеличению глубины деревьев по сравнению с асимметричными аналогами.
¶Ordered Boosting
Для борьбы с переобучением и смещением градиента CatBoost применяет технику, названную Ordered Boosting. В отличие от классического бустинга, где для вычисления градиентов используются одни и те же данные, на которых обучается модель, Ordered Boosting использует перестановки обучающей выборки. Это позволяет получить несмещённые оценки градиентов и повышает обобщающую способность модели.
¶Применение
CatBoost широко используется в индустрии и научных исследованиях для решения разнообразных задач:
- Классификация и регрессия: прогнозирование оттока клиентов, кредитный скоринг, диагностика заболеваний, оценка стоимости недвижимости.
- Ранжирование: построение поисковой выдачи, рекомендательные системы, персонализация контента.
- Прогнозирование временных рядов: благодаря поддержке признаков, зависящих от времени, CatBoost применяется для прогнозирования спроса, финансовых показателей и метеорологических данных.
- Обработка текстов: библиотека поддерживает встроенные методы векторизации текстовых данных, что позволяет использовать её в задачах анализа тональности и тематической классификации.
CatBoost поддерживает несколько интерфейсов: Python, R, Java, C++, а также командную строку. Это делает библиотеку доступной для специалистов, работающих в различных средах разработки.
¶Интерпретация модели
Для анализа важности признаков CatBoost предоставляет встроенные инструменты, включая оценки важности на основе статистики использования признаков в деревьях. Кроме того, библиотека поддерживает вычисление SHAP-значений (Shapley Additive Explanations), которые позволяют объяснить вклад каждого признака в конкретное предсказание. Эти возможности делают CatBoost удобным инструментом для задач, требующих объяснимого искусственного интеллекта.
¶Преимущества и недостатки
К преимуществам CatBoost относятся:
- Высокая точность на данных с категориальными признаками без трудоёмкой предобработки.
- Устойчивость к переобучению благодаря Ordered Boosting.
- Встроенная поддержка пропущенных значений.
- Хорошая производительность на центральных процессорах, включая поддержку многоядерных вычислений и графических ускорителей.
К недостаткам можно отнести:
- Более медленное обучение по сравнению с LightGBM на очень больших наборах данных.
- Больший расход памяти при работе с высокоразмерными данными.
- Относительно ограниченные возможности тонкой настройки по сравнению с некоторыми другими библиотеками.
¶Сравнение с аналогами
CatBoost, XGBoost и LightGBM являются тремя наиболее популярными библиотеками градиентного бустинга. XGBoost — одна из первых библиотек данного класса, отличающаяся гибкостью и широкой поддержкой платформ. LightGBM ориентирован на максимальную скорость обучения и низкое потребление памяти за счёт использования одностороннего роста деревьев. CatBoost, в свою очередь, выделяется лучшей обработкой категориальных признаков и более стабильным качеством на небольших и средних наборах данных. Выбор конкретной библиотеки зависит от характеристик задачи, объёма данных и требуемой производительности.
¶Интересные факты
- CatBoost неоднократно занимал призовые места в соревнованиях по машинному обучению на платформе Kaggle, особенно в задачах, связанных с табличными данными.
- Библиотека используется внутри «Яндекса» для ранжирования результатов поиска и в сервисах «Яндекс.Такси» и «Яндекс.Маркет».
- CatBoost поддерживает обучение на нескольких графических процессорах, что позволяет ускорять работу с крупными наборами данных.
¶Литература и источники
- Prokhorenkova L., Gusev G., Vorobev A., Dorogush A. V., Gulin A. CatBoost: unbiased boosting with categorical features // Advances in Neural Information Processing Systems. — 2018.
- Документация библиотеки CatBoost на официальном сайте проекта.
- Репозиторий исходного кода CatBoost на GitHub.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →
