Data Science

Ensemble Methods

Netflix Prize 2009: $1,000,000 за алгоритм рекомендаций лучше Netflix на 10%. Победители BellKor's Pragmatic Chaos набрали нужный процент... объединив более 800 (!) различных моделей в один мегаансамбль. Ни одна из 800 моделей в отдельности не давала нужного результата. Это не магия - это математика: ошибки разных моделей частично независимы, и при усреднении взаимно гасятся.

  • **Kaggle соревнования:** ансамблевые методы присутствуют в решениях победителей практически всех tabular data соревнований
  • **Финансовые риск-модели:** банки строят ансамбли из десятков моделей для кредитного скоринга - стабильность важнее максимальной точности одной модели
  • **Медицинская диагностика:** ансамбль моделей по радиологическим снимкам показывает точность сравнимую с консилиумом врачей

Random Forest

2001 год, Лео Брейман публикует Random Forest. Идея: взять 100-500 решающих деревьев, каждое обученное на случайной подвыборке данных (bagging) и случайном подмножестве признаков, - и усреднить их предсказания. Ни одно дерево не знает правду, но коллективное голосование стабильно бьёт одиночные деревья.

**Два источника случайности:** Bootstrap sampling (каждое дерево видит ~63% обучающих данных с повторениями) и Random feature selection (в каждом узле рассматривается только sqrt(n_features) признаков вместо всех). Это обеспечивает разнообразие деревьев - ключевое условие эффективного ансамбля.

**Feature Importance:** Random Forest автоматически вычисляет важность признаков через среднее снижение примеси (Gini importance). Это полезный инструмент для feature selection, но с известной проблемой: признаки с высокой кардинальностью получают завышенную важность.

В Random Forest 'Random' относится к:

XGBoost: gradient boosting

2016 год: Тянь Чэнь и Карлос Гестрин публикуют XGBoost. На следующие несколько лет это становится алгоритмом-победителем большинства табличных соревнований Kaggle. Разница с Random Forest принципиальная: деревья строятся не параллельно и независимо, а последовательно - каждое следующее исправляет ошибки предыдущих.

**Gradient Boosting:** на каждом шаге строим дерево, которое предсказывает не целевую переменную, а **остатки** (псевдо-градиенты) текущей модели. Итоговая модель - сумма всех деревьев с весами обучения (learning rate). XGBoost добавляет L1/L2 регуляризацию прямо в функцию потерь и второй порядок оптимизации (Ньютон).

**LightGBM vs XGBoost:** LightGBM обучает деревья по листьям (leaf-wise), а не по уровням (level-wise). На больших датасетах (>100k строк) LightGBM быстрее в 10-20x. CatBoost лучше работает с категориальными признаками без ручной кодировки. Все три алгоритма основаны на gradient boosting.

Что предсказывает каждое следующее дерево в gradient boosting?

Stacking

На финальном этапе соревнования Kaggle 2012 по предсказанию кликов на рекламу победившая команда применила технику, которая дала 2% прироста поверх уже сильного ансамбля. Называется stacking: мета-модель учится на предсказаниях базовых моделей как на новых признаках.

**Проблема naïve stacking:** если базовые модели обучены на тех же данных, что и мета-модель, возникает утечка данных - мета-модель видит «слишком хорошие» предсказания базовых моделей на обучающих данных. Решение: out-of-fold (OOF) предсказания через k-fold cross-validation.

**Когда stacking помогает:** базовые модели должны быть максимально разнообразными (разные алгоритмы, разные наборы признаков). Stacking двух похожих моделей даёт минимальный выигрыш. Лучшие результаты - при комбинировании линейных моделей, деревьев и нейросетей.

Почему в stacking используются OOF (out-of-fold) предсказания, а не обычные тренировочные предсказания?

Blending и финальный ансамбль

Blending - упрощённый вариант stacking: вместо k-fold OOF используется фиксированный hold-out set (обычно 10-20% данных). Базовые модели обучаются на 80%, их предсказания на оставшихся 20% становятся мета-признаками. Проще реализовать, но теряется часть обучающих данных.

**Закон убывающей отдачи ансамблей:** первая модель даёт, скажем, 0.85 AUC. Добавление второй разнообразной модели → 0.87. Третьей → 0.875. Десятой → 0.877. Каждый следующий слой добавляет меньше прироста при большей сложности. Kaggle-победители собирают ансамбли из десятков моделей ради последних 0.001 AUC.

Чем больше моделей в ансамбле, тем лучше результат

Ансамбль улучшается при добавлении разнообразных моделей, но после определённого момента прирост близок к нулю при резком росте сложности и времени обучения

Закон убывающей отдачи: каждая новая модель добавляет информацию, только если её ошибки коррелируют с ошибками остальных моделей по-другому. После 5-10 разнообразных моделей корреляция ошибок перестаёт падать - добавлять больше нет смысла.

Ключевое отличие blending от stacking:

Ensemble Methods

  • Random Forest: параллельный ансамбль деревьев с bagging и random feature selection - снижает дисперсию, сохраняет bias
  • XGBoost: последовательный boosting - каждое дерево исправляет ошибки предыдущих, снижает bias итерационно
  • Stacking: мета-модель обучается на OOF предсказаниях базовых моделей - без утечки данных
  • Blending: упрощённый stacking через hold-out, теряет часть данных но проще реализовать
  • Разнообразие моделей важнее их количества: коррелирующие ошибки не компенсируют друг друга

Связанные темы

Ансамблевые методы строятся поверх базовых алгоритмов - понимание деревьев решений обязательно.

  • Деревья решений и переобучение — Random Forest и XGBoost строятся из деревьев - базовый блок ансамбля
  • Регуляризация и валидация — Early stopping в XGBoost и OOF в stacking - борьба с переобучением ансамбля
  • Кластеризация и сегментация — Следующий шаг: обучение без учителя - другая парадигма моделирования

Вопросы для размышления

  • Random Forest и XGBoost оба строят ансамбли деревьев - в чём принципиальная разница в их подходе к ошибкам и когда один предпочтительнее другого?
  • Почему stacking даёт прирост, если мета-модель - простая логистическая регрессия, а базовые модели намного сложнее?
  • Каков практический предел числа моделей в ансамбле - и как решить, когда остановиться?

Связанные уроки

  • ml-22-gradient-boosting
Ensemble Methods

0

1

Войти