Открыть сервис

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 поддерживает несколько интерфейсов: 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 →