Введение в AI

Модуль 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). Ансамбли деревьев остаются стандартом выбора во многих прикладных задачах прогнозирования и классификации.

Настройки

Тема