Бустинг
Бустинг (от англ. boosting — усиление, повышение) — это метод машинного обучения, относящийся к семейству ансамблевых алгоритмов, который заключается в последовательном построении композиции из простых («слабых») моделей, где каждая последующая модель исправляет ошибки предыдущей. Конечный прогноз формируется как взвешенная сумма или голосование всех моделей ансамбля. Бустинг является одним из наиболее эффективных и широко применяемых подходов в задачах классификации, регрессии и ранжирования, обеспечивая высокую точность за счёт снижения как смещения, так и дисперсии модели.
История
Идея бустинга восходит к теоретическим работам Майкла Кернса и Лесли Вэлианта (1988, 1989), которые поставили вопрос о возможности «усиления» слабого обучаемого алгоритма до сколь угодно точного. В 1990 году Роберт Шапир доказал, что это возможно, предложив первый алгоритм бустинга. Однако практическая реализация была найдена лишь в середине 1990-х годов.
В 1995 году Йоав Фройнд и Роберт Шапир разработали алгоритм AdaBoost (Adaptive Boosting), который стал первым успешным и широко используемым бустинг-алгоритмом. AdaBoost адаптивно изменяет веса обучающих примеров, увеличивая вес тех, на которых допущена ошибка, что заставляет последующие модели фокусироваться на «трудных» случаях.
Дальнейшее развитие бустинга связано с появлением градиентного бустинга, предложенного Лео Брейманом (1997) и формализованного Джеромом Фридманом (1999, 2001). Градиентный бустинг рассматривает задачу обучения ансамбля как оптимизацию дифференцируемой функции потерь с помощью градиентного спуска в функциональном пространстве. Это позволило применять бустинг к широкому кругу задач, а не только к тем, где функция потерь экспоненциальна (как в AdaBoost).
В 2010-е годы были разработаны высокопроизводительные реализации градиентного бустинга, такие как XGBoost (2014), LightGBM (2017) и CatBoost (2017). Эти библиотеки оптимизированы для работы с большими данными, поддерживают обработку пропусков, категориальных признаков и используют различные техники регуляризации и ускорения (например, односторонний отбор градиента в LightGBM или симметричные деревья в CatBoost). Они стали стандартными инструментами в соревнованиях по машинному обучению (например, на платформе Kaggle) и в промышленных приложениях.
Принцип работы
Основная идея бустинга — последовательное обучение ансамбля моделей. В отличие от бэггинга (например, случайного леса), где модели обучаются независимо на случайных подвыборках, в бустинге каждая новая модель зависит от результатов предыдущих.
Общая схема
- Инициализация: Задаётся начальная модель (часто константа, например, среднее значение целевой переменной для регрессии). Обучающие примеры могут иметь начальные веса (обычно равные).
- Итеративное обучение: На каждом шаге \( t \) (от 1 до \( T \), где \( T \) — число итераций):
- Вычисляются ошибки (или градиенты функции потерь) текущего ансамбля на обучающих данных.
- Обучается «слабая» модель (обычно решающее дерево небольшой глубины) для предсказания этих ошибок или градиентов.
- Новая модель добавляется в ансамбль с некоторым весом (или шагом обучения), который определяет её вклад в общий прогноз.
- Обновляются веса примеров (в случае AdaBoost) или остатки (в случае градиентного бустинга).
- Формирование прогноза: Итоговый прогноз ансамбля равен сумме прогнозов всех обученных моделей, взятых с соответствующими весами.
Ключевые понятия
- Слабый обучаемый алгоритм (Weak Learner): Модель, которая даёт прогноз лишь немного лучше случайного угадывания (например, «пень» — дерево с одним разбиением). В бустинге такие модели объединяются для создания сильного классификатора.
- Функция потерь (Loss Function): Мера, которая оценивает, насколько прогноз модели отличается от истинного значения. Выбор функции потерь (квадратичная ошибка, логистическая, экспоненциальная) определяет конкретную реализацию бустинга.
- Шаг обучения (Learning Rate): Параметр, который масштабирует вклад каждой новой модели в ансамбль. Меньший шаг обучения обычно требует большего числа итераций, но может улучшить обобщающую способность.
- Регуляризация: Набор техник (например, ограничение глубины деревьев, L1/L2-регуляризация, субсэмплинг), используемых для предотвращения переобучения.
Виды бустинга
AdaBoost
AdaBoost (Adaptive Boosting) — один из первых и наиболее известных алгоритмов. Он присваивает каждому обучающему примеру вес. На каждой итерации алгоритм обучает слабую модель на взвешенных данных, после чего увеличивает вес примеров, которые были классифицированы неверно, и уменьшает вес верно классифицированных. Таким образом, последующие модели концентрируются на наиболее сложных для классификации объектах. Итоговый прогноз — взвешенное голосование моделей, где вес каждой модели зависит от её точности на обучающей выборке.
Градиентный бустинг
Градиентный бустинг (Gradient Boosting Machine, GBM) — обобщение идеи бустинга на произвольные дифференцируемые функции потерь. Вместо изменения весов примеров, как в AdaBoost, градиентный бустинг на каждом шаге обучает новую модель на «псевдо-остатках» — отрицательных градиентах функции потерь по текущему прогнозу. Это эквивалентно градиентному спуску в пространстве функций. Градиентный бустинг является основой для большинства современных реализаций.
Стохастический градиентный бустинг
Модификация градиентного бустинга, в которой на каждой итерации используется не вся обучающая выборка, а её случайная подвыборка (без возвращения). Это вносит элемент случайности, что снижает риск переобучения и ускоряет обучение. Подход предложен Лео Брейманом.
Применение
Бустинг широко применяется в различных областях, где требуется высокая точность прогнозирования:
- Классификация и регрессия: Рейтинговые агентства, кредитный скоринг, диагностика заболеваний, предсказание оттока клиентов.
- Ранжирование: Поисковые системы (например, в алгоритмах ранжирования веб-страниц), рекомендательные системы.
- Обработка естественного языка (NLP): Анализ тональности текста, распознавание именованных сущностей, машинный перевод.
- Компьютерное зрение: Детекция объектов, распознавание лиц, сегментация изображений (часто в комбинации с нейронными сетями).
- Соревнования по машинному обучению: XGBoost, LightGBM и CatBoost являются доминирующими алгоритмами на платформе Kaggle в задачах с табличными данными.
Преимущества и недостатки
Преимущества
- Высокая точность: Бустинг часто даёт наилучшие результаты среди классических методов машинного обучения на табличных данных.
- Гибкость: Может использоваться с различными функциями потерь и слабыми моделями.
- Автоматический отбор признаков: В процессе обучения деревья неявно выполняют отбор наиболее информативных признаков.
- Устойчивость к выбросам (в некоторых реализациях): Например, использование робастных функций потерь в градиентном бустинге.
Недостатки
- Склонность к переобучению: При слишком большом числе итераций или слишком сложных слабых моделях бустинг может переобучаться. Требуется тщательная настройка гиперпараметров и регуляризация.
- Высокая вычислительная сложность: Последовательное обучение моделей плохо параллелится, что делает обучение на больших данных медленнее, чем у бэггинга.
- Чувствительность к шуму: Бустинг может сильно подстраиваться под шумовые выбросы в данных, ухудшая обобщение.
- Сложность интерпретации: Ансамбль из сотен или тысяч деревьев трудно интерпретировать, хотя существуют методы оценки важности признаков.
Интересные факты
- Название «бустинг» происходит от гипотезы, выдвинутой Кернсом и Вэлиантом, о возможности «усиления» (boosting) слабого обучаемого алгоритма.
- Алгоритм AdaBoost изначально разрабатывался для решения задачи распознавания лиц в реальном времени (алгоритм Виолы-Джонса).
- XGBoost (eXtreme Gradient Boosting) был создан Тяньци Ченом в 2014 году и быстро завоевал популярность, став победителем многих соревнований Kaggle. Он использует регуляризацию, параллельную обработку и оптимизированное использование памяти.
- LightGBM, разработанный компанией Microsoft, использует технику одностороннего отбора градиента (GOSS) и эксклюзивного связывания признаков (EFB), что позволяет значительно ускорить обучение без потери точности.
- CatBoost, созданный компанией Яндекс, отличается встроенной поддержкой категориальных признаков без необходимости их предварительного кодирования (например, One-Hot Encoding), а также использованием симметричных деревьев, что ускоряет инференс.
Источники
- Freund, Y., & Schapire, R. E. (1997). A decision-theoretic generalization of on-line learning and an application to boosting. Journal of Computer and System Sciences, 55(1), 119-139.
- Friedman, J. H. (2001). Greedy function approximation: a gradient boosting machine. Annals of Statistics, 29(5), 1189-1232.
- Chen, T., & Guestrin, C. (2016). XGBoost: A scalable tree boosting system. Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining.
- Ke, G., et al. (2017). LightGBM: A highly efficient gradient boosting decision tree. Advances in Neural Information Processing Systems, 30.
- Prokhorenkova, L., et al. (2018). CatBoost: unbiased boosting with categorical features. Advances in Neural Information Processing Systems, 31.
- Hastie, T., Tibshirani, R., & Friedman, J. (2009). The Elements of Statistical Learning. Springer.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →