Градиентный бустинг для чайников
Если вы помните Вольтрона — вы понимаете Gradient Boosting. Команду странных механических львов, объединяющихся в огромного робота против зла, только вместо «зла» здесь неупорядоченные данные. Градиентный бустинг — это трюк в машинном обучении, где мы создаём сильную модель, объединяя множество посредственных. Как если бы вы собрали команду середнячков, которые по отдельности так себе, но вместе становятся Мстителями Предсказательной Силы — исправляют ошибки друг друга, как слишком заядлые отличники в классе.
Это в кратце, а вот детали:
Gradient Boosting так называется потому что алгоритм строит (бустит) новые модели из более мелких на основе градиента функции потерь.
Бустинг (объединение) — это комбинация множества простых слабых моделей (обычно небольших деревьев решений), где каждая новая исправляет ошибки предыдущих. Каждая следующая модель пытается улучшить результат, фокусируясь на недочётах своих предшественников.
Градиент — в математике градиент — это вектор, указывающий направление наибольшего роста функции. В Gradient Boosting речь идёт о градиенте функции потерь (т.е. функции, измеряющей, насколько ошибочны предсказания предыдущего шага).
Как это работает:
Сначала у нас есть начальная модель с некоторой ошибкой (потерей). Каждая новая модель предсказывает отрицательный градиент (направление наискорейшего спуска) этой ошибки, показывая, как изменить прогнозы, чтобы снизить ошибку. Двигаясь в этом направлении, алгоритм шаг за шагом приближается к оптимальному решению.
Пример с домами:
Исходные данные:

Шаг 1: Средняя цена
Считаем среднее значение: (100 + 200 + 150) / 3 = 150. Изначально мы предсказываем для всех домов 150.
Шаг 2: Считаем Остатки (ошибки)
Вычитаем предсказание из фактической цены:
Дом 1: 100 — 150 = -50
Дом 2: 200 — 150 = 50
Дом 3: 150 — 150 = 0

Шаг 3: Дерево для предсказания ошибки
Группируем по локациям:
Локация A (дома 1 и 3): средняя ошибка= (-50 + 0) / 2 = -25
Локация B (дом 2): ошибка= 50

Шаг 4: Корректируем прогнозы
Допустим что скорость обучения (learning rate) = 0.1:
Дом 1: 150 + 0.1 * (-25) = 147.5
Дом 2: 150 + 0.1×50 = 155
Дом 3: 150 + 0.1 * (-25) = 147.5

Шаг 5: Пересчитываем ошибки
Рассчитываем обновлённые ошибки:
Дом 1: 100 — 147.5 = -47.5
Дом 2: 200 — 155 = 45
Дом 3: 150 — 147.5 = 2.5

Далее мы могли бы повторять шаги, добавляя новые корректирующие слои, но для простоты остановимся здесь. Интересный факт в том что Gradient Boosting может работать с пропусками в данных без дополнительной предобработки, что крайне удобно для реальных грязных датасетов.
Gradient Boosting vs. Нейросети и другие методы
Gradient Boosting идеален для структурированных/табличных данных, требует меньше данных для высокой точности, проще в настройке.
Нейросети же лучше справляются с неструктурированными данными (изображения, текст) и для их тренировки нужно больше ресурсов.
Почему выбирают Gradient Boosting?
Высокая точность, часто превосходит другие алгоритмы (логистическую регрессию, случайные леса, нейросети) на табличных данных.
Работа с табличными данными. В отличие от нейросетей, алгоритм заточен на числовые и категориальные признаки.
Встроенный выбор признаков — алгоритм сам оценивает важность переменных, упрощая интерпретацию модели.
Улавливает сложные взаимосвязи автоматически, т.е. способен обнаруживать нелинейные зависимости без ручной генерации признаков.
Устойчивость к оверфитингу — современные реализации (XGBoost, LightGBM, CatBoost) используют регуляризацию для эффективной борьбы с переобучением.
Универсальность — эффективен для регрессии, классификации, ранжирования.
Хорошая базовая производительность — часто работает «из коробки» лучше, чем нейросети.
Современные библиотеки Gradient Boosting
XGBoost (Extreme Gradient Boosting, автор — Tianqi Chen) — оптимизирован по скорости, точности и масштабируемости. Лидер на Kaggle.
LightGBM — создан Microsoft Research, дает ускоренное обучение на больших данных через гистограммные алгоритмы и leaf-wise рост деревьев. Идеален для больших датасетов.
CatBoost — создан в Yandex: дает улучшенную обработка категориальных признаков и идеален для таких залач, собственно автоматически обрабатывает категориальные признаки так что это не нужно делать вручную.
Пишите ваши вопросы в комментариях.
На этом всё, удачи!