Модуль 4: Ансамблевые методы. Короли табличных данных
Один алгоритм — даже мощное решающее дерево — может переобучиться или оказаться неустойчивым к шуму в данных. Идея ансамблей проста: объединить множество моделей так, чтобы их совместное решение было стабильнее и точнее, чем у каждой по отдельности. На табличных данных (признаки в столбцах, объекты в строках) ансамбли деревьев десятилетиями остаются рабочим стандартом в соревнованиях и в индустрии.
Задача модуля: объяснить, как комбинация слабых моделей даёт «супер-силу», разобрать бэггинг и случайный лес, затем перейти к градиентному бустингу и его современным реализациям — CatBoost и LightGBM. После модуля вы будете понимать, почему в задачах на таблицах чаще всего выбирают именно эти методы и как они устроены под капотом.
Что разберём
- Random Forest — бутстрэп, бэггинг, случайность по признакам.
- Градиентный бустинг — последовательное усиление, остатки и градиент как цель.
- CatBoost — категориальные признаки, симметричные деревья, ordered boosting.
- LightGBM — GOSS, EFB, листовой рост; когда и зачем использовать.
4.1 Бутстрэп и случайный лес (Random Forest)
Одно дерево решений хорошо интерпретируется, но сильно зависит от конкретной выборки: небольшое изменение данных может изменить вид дерева и предсказания. Чтобы снизить эту дисперсию, придумали бэггинг (Bootstrap Aggregating): много раз с повторениями берём случайную подвыборку из обучающих данных, на каждой подвыборке обучаем своё дерево, а итоговый ответ получаем усреднением (регрессия) или голосованием (классификация). Так мы «сглаживаем» ошибки отдельных деревьев и получаем более стабильную модель.
Random Forest развивает эту идею: к случайности по объектам добавляется случайность по признакам. При построении каждого разбиения в узле дерева рассматривается не весь набор признаков, а лишь случайное подмножество (например, корень из числа признаков). В результате деревья в ансамбле становятся более разнообразными: они по-разному смотрят на данные и по-разному ошибаются. При голосовании или усреднении такие ошибки частично компенсируются.
Итог — ансамбль из десятков или сотен «шумных», но независимых деревьев, который часто даёт отличное качество на табличных данных без тонкой настройки. Random Forest устойчив к выбросам, умеет работать с пропусками и не требует масштабирования признаков; его удобно использовать как сильный бейзлайн перед переходом к бустингу.
На практике: для регрессии ответ ансамбля — среднее предсказаний деревьев; для классификации — класс, набравший большинство голосов (или усреднение вероятностей, если деревья их выдают). Гиперпараметры: число деревьев, максимальная глубина, размер случайного подмножества признаков.
4.2 Суть градиентного бустинга
В бэггинге модели обучаются независимо и затем усредняются. В градиентном бустинге подход другой: модели добавляются последовательно, и каждая следующая учится исправлять ошибки предыдущих. Метафора — комитет экспертов, где каждый новый член фокусируется на тех примерах, где предыдущие ошиблись сильнее всего.
Математически на каждом шаге мы считаем остатки — разницу между истинной целью и текущим предсказанием ансамбля — или, в общем случае, градиент функции потерь по предсказаниям. Следующее дерево обучается предсказывать именно эти остатки (или антиградиент); его предсказание добавляется к ансамблю с небольшим коэффициентом (learning rate), чтобы не «перешагнуть» оптимум. Так шаг за шагом строится сильный ансамбль: каждое новое дерево вносит корректировку в направлении уменьшения ошибки.
Градиентный бустинг деревьев (Gradient Boosting Decision Trees, GBDT) лежит в основе XGBoost, CatBoost, LightGBM и многих побед на Kaggle. Понимание идеи «усиливать слабые модели, исправляя их ошибки» помогает осознанно настраивать число итераций, глубину деревьев и learning rate.
Кратко
Бэггинг: много моделей параллельно, ответ — усреднение. Бустинг: много моделей последовательно, каждая исправляет ошибки предыдущей. В бустинге цель для следующего дерева — остатки или градиент loss.
4.3 CatBoost: категории, симметрия, ordered boosting
CatBoost — одна из ведущих реализаций градиентного бустинга, разработанная в Яндексе. Она особенно удобна, когда в данных много категориальных признаков (регион, тип товара, тег). Обычно такие признаки превращают в числа через One-Hot Encoding или Label Encoding, что раздувает размерность или теряет порядок. CatBoost умеет работать с категориями напрямую: использует ordered target encoding — кодирование по целевой переменной с перестановками объектов, чтобы избежать «утечки» информации из будущего и снизить переобучение.
Вторая отличительная черта — симметричные деревья: на одном уровне во всех узлах применяется одно и то же разбиение по одному и тому же признаку (но с разными порогами для левого и правого поддерева). Это ускоряет инференс и упрощает аппаратную оптимизацию.
Ordered boosting решает проблему смещения градиента. В обычном бустинге при подсчёте градиента для объекта могут неявно использоваться данные этого же объекта через статистики по выборке. В CatBoost при вычислении градиента для объекта используются только «предыдущие» объекты (в смысле случайной перестановки), поэтому оценка градиента получается несмещённой, и переобучение снижается. В итоге CatBoost часто даёт отличное качество «из коробки» при минимуме настроек и хорошо подходит для задач с категориями и таблицами.
Когда выбирать CatBoost: много категориальных признаков, нужна быстрая сходимость и стабильное качество без долгой подстройки. Удобен в продакшене благодаря скорости предсказания и встроенной поддержке GPU.
4.4 LightGBM: скорость и масштаб
LightGBM (Light Gradient Boosting Machine) от Microsoft ориентирован на высокую скорость обучения и работу с большими объёмами данных. Достигается это за счёт нескольких идей. GOSS (Gradient-based One-Side Sampling) — односторонняя выборка по градиенту: объекты с большими градиентами (то есть те, на которых модель ошибается сильнее) сохраняются полностью, а среди остальных выполняется случайная подвыборка. Так мы экономим время на обучении, не теряя важных «сложных» примеров.
EFB (Exclusive Feature Bundling) решает проблему разреженных признаков (много нулей): взаимно исключающие признаки объединяются в «бандлы», и при разбиении узла перебирается меньше суррогатных разбиений. Память и время счёта сокращаются без существенной потери качества.
Третья особенность — листовой (leaf-wise) рост дерева. Вместо того чтобы на каждом уровне разбивать все листья (level-wise, как в XGBoost по умолчанию), LightGBM на каждой итерации выбирает один лист с максимальным приростом качества и разбивает только его. В результате при том же числе листьев дерево получается глубже и часто точнее, хотя риск переобучения чуть выше — его ограничивают регуляризацией и глубиной.
LightGBM широко используется в соревнованиях и в индустрии, когда важны скорость обучения, экономия памяти и качество на больших таблицах. Выбор между CatBoost и LightGBM часто делают по результатам кросс-валидации и удобству интеграции в пайплайн.
Практический совет
Для табличных данных без изображений и текста обычно пробуют Random Forest как бейзлайн, затем градиентный бустинг (CatBoost или LightGBM). Ансамбли деревьев остаются стандартом выбора во многих прикладных задачах прогнозирования и классификации.