Лекция 12: Ансамбли II. Градиентный Бустинг (Gradient Boosting)
Цели лекции
- Понять фундаментальную разницу между Bagging (Random Forest) и Boosting.
- Разобраться, как можно обучаться на собственных ошибках (идея градиента).
- Сделать обзор “Большой тройки” библиотек: XGBoost, LightGBM, CatBoost.
- Освоить критически важные гиперпараметры: Learning Rate и Early Stopping.
Часть 1: Философия Бустинга. Последовательность против Параллелизма
1.1. Bagging vs Boosting
1.2. Аналогия: Студент и Экзамен
Как учатся ансамбли
- Random Forest: 100 студентов решают тест независимо. Мы берем ответ большинства.
- Boosting: Студент решает тест. Учитель проверяет и помечает ошибки. Студент учит только те темы, где ошибся. Снова сдает. Учитель снова помечает оставшиеся ошибки. Через 100 итераций студент становится гением (или зазубривает материал — риск переобучения).
Часть 2: Механика Градиентного Бустинга
Как математически “исправить ошибку”?
2.1. Обучение на остатках (Residuals)
Пусть мы предсказываем Цену квартиры ().
- Шаг 0: Модель предсказывает среднюю цену: 5 млн.
- Оценка: Реальная цена первой квартиры 7 млн. Ошибка (остаток) = млн.
- Шаг 1: Мы строим Дерево №1 (), которое учится предсказывать не цену (7 млн), а ошибку (+2 млн).
- Пусть Дерево №1 предсказало +1.8 млн.
- Обновление: Новая модель млн.
- Шаг 2: Новая ошибка = млн. Строим Дерево №2, чтобы предсказать 0.2.
Суть: Каждое следующее дерево — это “заплатка”, закрывающая дыры предыдущих моделей.
2.2. Почему “Градиентный”?
Если функция потерь — MSE (квадратичная), то её производная (градиент) — это как раз разница . Предсказывая остатки (ошибки), мы фактически движемся в сторону анти-градиента функции потерь. Мы спускаемся с горы ошибок к минимуму.
Часть 3: “Большая Тройка” библиотек
В Python стандартный sklearn.ensemble.GradientBoostingClassifier используется редко (он медленный). Индустрия использует три оптимизированные библиотеки.
Часть 4: Гиперпараметры Бустинга
У бустинга десятки настроек, но важных всего 3-4.
4.1. Learning Rate (Скорость обучения, )
Это коэффициент, с которым мы добавляем новое дерево:
- Обычно маленькая (0.01 - 0.1).
- Смысл: Мы не доверяем новому дереву на 100%, а берем от него лишь малую часть совета. Это делает обучение плавным и устойчивым.
- Trade-off: Чем меньше Learning Rate, тем больше деревьев (
n_estimators) нужно построить.
4.2. Number of Estimators (Количество деревьев)
Риск переобучения
В отличие от Random Forest, в Бустинге можно переобучиться, если деревьев слишком много. Модель начнет учить шум в остатках.
4.3. Early Stopping (Ранняя остановка)
Как узнать, сколько деревьев нужно? 100? 1000? Мы не гадаем.
- Откладываем валидационную выборку.
- После добавления каждого дерева проверяем ошибку на валидации.
- Если ошибка не падает (или растет) в течение раундов (patience) — стоп машина. Обучение прекращается.
Часть 5: Когда использовать Бустинг?
- Табличные данные: Бустинг — король. Нейросети пока не могут его победить на задачах типа “Скоринг”, “Продажи”, “Рекомендации”.
- Неструктурированные данные (Картинки, Звук, Текст): Бустинг слаб. Здесь правят Нейросети (Deep Learning).