Разработчики из компании Яндекс объявили о создании CatBoost — нового алгоритма машинного обучения с учителем, который придет на замену хорошо известному Матрикснет. Как и последний, CatBoost представляет собой градиентный бустинг на решающих деревьях, однако будет распространяться открыто. Со временем в Яндекс планируют заменить Матрикснет на CatBoost в большинстве сервисов, начиная с поиска. Подробно о новой технологии можно прочесть в официальном релизе компании.
Машинное обучение лежит в основе многих онлайн-технологий: в поиске с его помощью ранжируются документы, наилучшим образом удовлетворяющие данному запросу, в рекламе — отбираются подходящие под каждого пользователя объявления, а в прогнозе погоды — анализируются показания сотен метеостанций, чтобы получить общую картину. Долгое время в Яндекс основным алгоритмом машинного обучения был Матрикснет — закрытая технология, глобально представляющая собой градиентный бустинг над решающими деревьями с множеством модификаций. Сейчас ему на смену пришел CatBoost, или Categorical Boosting.
«Под капотом» CatBoost тоже остается градиентным бустингом, то есть методом, в котором строится серия очень слабых алгоритмов (в данном случае — решающих деревьев), последовательно минимизирующих ошибку друг друга и в итоге, в комбинации, хорошо описывающих обучающую выборку данных. Однако в отличие от Матрикснет CatBoost изначально разрабатывался для того, чтобы наилучшим образом работать не только с числовыми, но и с категориальными признаками. Речь идет о тех признаках данных, которые не имеют числового выражения. Например, если вы классифицируете бытовую технику, то «энергопотребление» и «средняя цена» — это числовые признаки, ваша компьютерная модель может с ними работать (складывать, вычитать и так далее). Но признак «тип» (стиральная машина, телевизор, кофемолка) является категориальным, то есть для модели это просто слово, которое не несет никакой смысловой нагрузки. Чтобы его эффективно вставить в модель, этот признак надо сначала оцифровать, привести к численному виду.
В CatBoost разработчики представили множество решений, направленных именно на работу с категориальными признаками. Некоторые из них опубликованы в виде препринта на arXiv.org. Благодаря этим улучшениям новый алгоритм демонстрирует лучшие результаты на стандартных наборах данных по сравнению с другими существующими алгоритмами обучения с учителем, например, LightGBM от компании Microsoft, или открытого XGBoost, популярного среди участников чемпионатов на kaggle.com.
Сейчас CatBoost доступен на GitHub по открытой лицензии Apache. Алгоритм существует в виде библиотек для Python и R и максимально настроен для пользователей с малым опытом работы с машинным обучением. Так, в CatBoost есть встроенный алгоритм для обработки категориальных признаков в зависимости от типа данных и задачи, есть встроенный детектор переобучения (он сам остановит алгоритм на оптимальном количестве построенных деревьев), а исходные параметры подобраны таким образом, чтобы выдавать удовлетворительный результат даже без тонкой настройки. Отдельной особенностью CatBoost разработчики называют наличие встроенных инструментов для визуализации и анализа результатов.
Градиентный бустинг привлекает не так много внимания публики, как искусственные нейросети, однако долгое время остается одним из самых популярных методов машинного обучения в IT-компаниях и среди участников чемпионатов по обработке данных. Встречаются и примеры его применения в других сферах: с помощью градиентного бустинга специалисты из компании Baidu научились прогнозировать, когда образуются опасно большие скопления людей. Подробнее о градиентному бустинге вообще и CatBoost в частности читайте в нашем большом интервью с разработчиками из Яндекса.
Тарас Молотилин