Материал из РУВИКИ — свободной энциклопедии

CatBoost

CatBoost
Логотип программы CatBoost
Тип Машинное обучение
Авторы Андрей Гулин[1] / Яндекс
Разработчики Яндекс и участники CatBoost[2]
Написана на Python, R, C++, Java
Операционные системы Linux, macOS, Windows
Первый выпуск 18 июля 2017[3][4]
Аппаратные платформы Linux, macOS и Microsoft Windows
Последняя версия 1.2.3[5] (23 февраля 2024)
Лицензия Apache License 2.0
Сайт catboost.ai

CatBoost — свободная программная библиотека с открытым исходным кодом, разрабатываемая компанией Яндекс. Библиотека реализует фреймворк градиентного бустинга, особенностью которого является нестандартный подход к обработке категориальных признаков на основе случайных перестановок, в отличие от традиционных алгоритмов[6]. CatBoost работает на операционных системах Linux, Windows, macOS и доступен для языков Python[7], R[8], а модели, построенные с использованием CatBoost, могут использоваться для предсказаний на C++, Java[9], C#, Rust, Core ML, ONNX, и PMML. Исходный код распространяется под лицензией Apache License и доступен на GitHub[2].

Журнал InfoWorld в 2017 году включил CatBoost в список «лучших инструментов для машинного обучения» наряду с TensorFlow, PyTorch, XGBoost и другими библиотеками[10].

Сервис Kaggle отметил CatBoost как одну из наиболее часто используемых библиотек для машинного обучения в мире: в опросе 2020 года библиотека заняла восьмое место по частоте использования[11], а в 2021 году — седьмое место[12].

По состоянию на апрель 2022 года CatBoost устанавливается около 100 000 раз в день с репозитория PyPI[13].

Возможности

[править | править код]

CatBoost получил широкое распространение среди алгоритмов градиентного бустинга, в первую очередь благодаря следующим возможностям:[14]

  • Родная поддержка категориальных признаков[15]
  • Быстрое обучение на GPU[16]
  • Визуализация и инструменты для анализа моделей и признаков
  • Использование симметричных (обливиус) деревьев для ускорения выполнения
  • Ordered boosting для снижения переобучения[6]

В 2009 году Андрей Гулин разработал библиотеку MatrixNet — проприетарное решение для градиентного бустинга, применявшееся в Яндекс для ранжирования поисковых результатов. С 2009 года MatrixNet использовался во многих проектах компании, включая рекомендательные системы и прогнозирование погоды.

В 2014—2015 годах Андрей Гулин с группой исследователей начал проект Tensornet, направленный на решение задачи работы с категориальными данными. В результате этой работы было создано несколько проприетарных библиотек градиентного бустинга, предлагающих различные подходы к обработке категориальных признаков.

В 2016 году команда по инфраструктуре машинного обучения под руководством Анны Дорогуш приступила к развитию градиентного бустинга в Яндексе (MatrixNet и Tensornet). Итогом стала разработка и публикация с открытым кодом новой версии библиотеки CatBoost, поддерживающей работу с категориальными и текстовыми данными, обучение на GPU, анализ моделей и визуализацию результатов.

CatBoost был открыт для сообщества в июле 2017 года и с тех пор активно развивается как внутри Яндекса, так и сообществом с открытым исходным кодом.

Применение

[править | править код]
  • JetBrains использует CatBoost для автодополнения кода[17]
  • Cloudflare применяет CatBoost для обнаружения ботов[18]
  • Careem использует CatBoost для предсказания будущих маршрутов поездок[19]

Примечания

[править | править код]
  1. Andrey Gulin - People - Research at Yandex (англ.). research.yandex.com. Дата обращения: 12 июня 2024. Архивировано 19 сентября 2020 года.
  2. 1 2 catboost/catboost (англ.). GitHub. Дата обращения: 12 июня 2024. Архивировано 29 августа 2025 года.
  3. Yandex open sources CatBoost, a gradient boosting machine learning library (англ.). TechCrunch (18 июля 2017). Дата обращения: 12 июня 2024. Архивировано 18 июля 2017 года.
  4. Yegulalp, Serdar Yandex open sources CatBoost machine learning library (англ.). InfoWorld (18 июля 2017). Дата обращения: 12 июня 2024. Архивировано 19 июля 2017 года.
  5. Releases · catboost/catboost (англ.). GitHub. Дата обращения: 14 марта 2024. Архивировано 29 апреля 2025 года.
  6. 1 2 Prokhorenkova, Liudmila; Gusev, Gleb; Vorobev, Aleksandr; Dorogush, Anna Veronika; Gulin, Andrey (2019-01-20). “CatBoost: unbiased boosting with categorical features”. arXiv preprint [англ.]. arXiv:1706.09516 [cs.LG]. Дата обращения 2024-06-12. Используется устаревший параметр |class= (справка)
  7. Python Package Index PYPI: catboost (англ.). PyPI. Дата обращения: 20 августа 2020.
  8. Conda forge package catboost-r (англ.). Anaconda. Дата обращения: 30 августа 2020. Архивировано 23 января 2025 года.
  9. Maven Repository: ai.catboost » catboost-prediction (англ.). mvnrepository.com. Дата обращения: 30 августа 2020. Архивировано 29 апреля 2025 года.
  10. staff, InfoWorld Bossie Awards 2017: The best machine learning tools (англ.). InfoWorld (27 сентября 2017). Архивировано 29 ноября 2020 года.
  11. State of Data Science and Machine Learning 2020 (англ.). Дата обращения: 12 июня 2024. Архивировано 19 ноября 2020 года.
  12. State of Data Science and Machine Learning 2021 (англ.). Дата обращения: 12 июня 2024. Архивировано 16 августа 2025 года.
  13. PyPI Stats catboost (англ.). PyPI Stats. Дата обращения: 12 июня 2024. Архивировано 23 января 2025 года.
  14. Joseph, Manu The Gradient Boosters V: CatBoost (англ.). Deep & Shallow (29 февраля 2020). Дата обращения: 30 августа 2020. Архивировано 24 июня 2023 года.
  15. Dorogush, Anna Veronika; Ershov, Vasily; Gulin, Andrey (2018-10-24). “CatBoost: gradient boosting with categorical features support”. arXiv preprint [англ.]. arXiv:1810.11363 [cs.LG]. Дата обращения 2024-06-12. Используется устаревший параметр |class= (справка)
  16. CatBoost Enables Fast Gradient Boosting on Decision Trees Using GPUs (англ.). NVIDIA Developer Blog (13 декабря 2018). Дата обращения: 30 августа 2020. Архивировано 17 августа 2025 года.
  17. Code Completion, Episode 4: Model Training (англ.). JetBrains Developer Blog (20 августа 2021). Дата обращения: 12 июня 2024. Архивировано 20 августа 2021 года.
  18. Stop the Bots: Practical Lessons in Machine Learning (англ.). The Cloudflare Blog (20 февраля 2019). Дата обращения: 12 июня 2024. Архивировано 6 августа 2025 года.
  19. How Careem's Destination Prediction Service speeds up your ride (англ.). Careem (19 февраля 2019). Дата обращения: 12 июня 2024.