CatBoost — новый метод машинного обучения от Яндекса

Яндекс представляет метод машинного обучения CatBoost. Он придёт на смену Матрикснету, который используется в Яндексе с 2009 года. CatBoost даёт более точные результаты в задачах ранжирования, регрессии и классификации, а также учитывает данные в нечисловой форме. Библиотека машинного обучения CatBoost выложена в общий доступ — её может использовать любой желающий.

Многие привычные нам вещи, например лента социальной сети, прогноз погоды или картинка «под Ван Гога» в чьём-нибудь инстаграме, — результат применения машинного обучения. И речь не только об интернете. Банкам машинное обучение помогает своевременно пополнять купюрами банкоматы. Магазинам — прогнозировать спрос на товары. Металлургам — выявлять дефекты проката стали и определять соотношение примесей в сплавах.

Нейронные сети в Яндексе

Яндекс тоже использует нейронные сети: например, они задействованы в распознавании голоса и поиске похожих картинок. Нейросети также поставляют факторы для Матрикснета. Они соотносят смысл поискового запроса и заголовка документа — так работает алгоритм «Палех».

Сейчас машинное обучение ассоциируется в первую очередь с нейронными сетями. И действительно, в последние годы нейросетям нашлось множество применений, вплоть до самых невероятных. Они играют в настольные игры, сочиняют музыку, рисуют картины — и поэтому регулярно попадают в заголовки новостей. Но на самом деле нейронные сети — всего лишь один из способов научить машину учиться. Существуют разные методы машинного обучения, и ни один из них нельзя считать универсальным — у каждого есть достоинства и недостатки. Какой метод выбрать, зависит от типа данных, с которыми предстоит работать, и их количества.

С 2009 года Яндекс развивает собственный метод машинного обучения — Матрикснет. Он был разработан для ранжирования результатов поиска, но используется и в других сервисах Яндекса: например, в Почте — для фильтрации спама, в Картах и Навигаторе — для расчёта времени в пути, в Директе — для подбора релевантных рекламных объявлений. Матрикснет устойчив к переобучению и позволяет использовать множество факторов и их комбинаций.

В основе Матрикснета лежит механизм градиентного бустинга. Его особенность — в том, что он хорошо подходит для работы с разнородными данными. Такими данными, скажем, могут быть температура, влажность, сила ветра и информация со спутников и наземных радаров — по ним можно предсказать, какая будет погода.

Методы на основе градиентного бустинга отлично подходят для работы с разнородными данными

Кроме того, градиентный бустинг даёт точные результаты даже там, где данных относительно мало. Этим он отличается от нейросетей, которые обучаются на огромном массиве однородных данных. Само собой, у моделей на основе градиентного бустинга есть и недостатки. Все данные, на которых учится модель, должны быть представлены в числовом виде. Иногда это непросто — например, когда мы имеем дело с типами облаков, жанрами музыки, породами собак и прочими вещами, которые понятны человеку, но труднопостижимы для машины.

Тренируемся на кошках

Название CatBoost придумано в Яндексе. Это сокращение от categorical boosting, то есть бустинг с учётом категориальных признаков.

Сегодня Яндекс представляет преемника Матрикснета — новый метод машинного обучения CatBoost. В нём также используется градиентный бустинг, но CatBoost, во-первых, превосходит Матрикснет по точности предсказаний, а во-вторых, способен учитывать так называемые категориальные признаки — то есть признаки, которые принимают одно из конечного количества значений. Так, облака могут быть кучевыми, перистыми, перисто-кучевыми, слоистыми и так далее. Жанры музыки включают рок, рэп, классику, альтернативу, метал. Пудель, овчарка, спаниель и эрдель-терьер — породы собак. Подобные данные больше не нужно выражать в числах: CatBoost умеет воспринимать их в исходном виде. Обученные с его помощью модели дают точные результаты и позволяют использовать всё многообразие доступных данных, не тратя время на их перевод в числовую форму.

Мы уже опробовали CatBoost в сервисах Яндекса. В Дзене его задействовали для ранжирования ленты рекомендаций, а в Погоде — для расчёта прогноза с помощью технологии Метеум. Во всех случаях он показал себя лучше Матрикснета.

С разнородными данными, в том числе и выраженными в нечисловой форме, сталкиваются во всех отраслях, от финансов до сельского хозяйства. Поэтому мы приняли решение выложить библиотеку машинного обучения CatBoost в открытый доступ. Она доступна на языках программирования Python и R. Версии библиотеки для Windows, macOS и Linux и программу визуализации CatBoost Viewer — она позволяет следить за процессом обучения на графиках — можно скачать в репозитории на GitHub. Выкладывая CatBoost в открытый доступ, мы надеемся, что сообщество оценит алгоритм по достоинству и поможет нам сделать его ещё лучше.

Метод машинного обучения CatBoost уже нашёл первое применение за пределами Яндекса — в Европейском центре ядерных исследований (ЦЕРН). CatBoost используется для обработки данных эксперимента LHCb, который проходит на одноименном детекторе Большого адронного коллайдера. Задача эксперимента — исследование асимметрии материи и антиматерии во взаимодействиях тяжёлых прелестных кварков. Детектор LHCb включает несколько субдетекторов — каждый из них реагирует на разные свойства частиц. CatBoost помогает объединить данные с разных детекторов, чтобы учёные могли получить максимально полное представление о частицах. Результаты CatBoost оказались существенно лучше результатов, получаемых с использованием других алгоритмов.

©  Яндекс