# Деревья решений и ансамбли

> Деревья решений и ансамбли: RF vs градиентный бустинг, overfitting деревьев и что спрашивают про табличные модели на собеседовании.

Раздел: [Основы машинного обучения](https://ml-book.com/s/ml-basics/) · Страница темы: https://ml-book.com/t/trees-ensembles/ · Обновлено: 2026-09-16 · Источник: ml-book.com, учебник делается сообществом

## Интуиция

Дерево решений (decision tree) играет в «двадцать вопросов»: «доход выше 80 тысяч? стаж больше 2 лет?» — и после серии вопросов выносит вердикт. Каждый вопрос режет пространство признаков вертикальной или горизонтальной границей, поэтому области решений у дерева всегда «ступенчатые» — из прямоугольников.

## Как дерево выбирает вопросы

Обучение жадное (greedy): в каждом узле дерево перебирает все признаки и пороги и выбирает разрез, который сильнее всего уменьшает «грязность» (impurity) получившихся половинок. Стандартная мера — индекс Джини (Gini impurity):

`Gini = 1 − Σ p_k² (p_k — доля класса k в узле)`

Gini равен нулю, когда в узле один класс, и максимален при смеси 50/50. Разрезав данные, дерево рекурсивно повторяет процедуру в каждой половинке — пока узлы не станут чистыми или не кончится глубина. Жадность означает: выбирается лучший разрез *сейчас*, без заглядывания вперёд, поэтому дерево не гарантирует глобально оптимального разбиения.

Глубина (max depth) — главный регулятор сложности. Дерево глубины 1 (пень, stump) проводит одну границу и почти всегда недообучено. Дерево глубины 20 выучивает каждую точку — включая шум: на трейне точность 100%, на тесте провал. Это модель с низким смещением и огромным разбросом (low bias, high variance) — про сам компромисс см. [переобучение и регуляризацию](https://ml-book.com/t/overfitting-regularization/).

> **💡 Ключевая мысль**
>
> Одно дерево — нестабильный «эксперт»: чуть поменяй данные, и границы перестроятся. Сила приходит из ансамбля: много несовершенных, но разных моделей вместе ошибаются меньше, чем каждая по отдельности.

> 🎛 Интерактивная визуализация — на странице темы: https://ml-book.com/t/trees-ensembles/

## Бэггинг и Random Forest

Бэггинг (bagging, bootstrap aggregating) лечит нестабильность усреднением: делаем B бутстреп-выборок (bootstrap — выборка с возвращением того же размера), на каждой обучаем своё дерево, ответы усредняем (или голосуем). Ошибки независимых деревьев частично взаимно гасятся, и разброс (variance) падает, а смещение почти не меняется. Random Forest добавляет второй источник разнообразия: в каждом узле дерево выбирает лучший разрез не среди всех признаков, а среди случайного подмножества — деревья получаются менее похожими, и усреднение работает ещё лучше. Поэтому в лесу деревья можно (и нужно) растить глубокими: переобученность каждого гасится ансамблем. Бонус: объекты, не попавшие в бутстреп дерева (~37%), дают бесплатную out-of-bag оценку качества.

## Градиентный бустинг

Бустинг (boosting) строит деревья не параллельно, а последовательно: каждое следующее неглубокое дерево обучается исправлять ошибки текущего ансамбля — в градиентном бустинге (gradient boosting) оно приближает антиградиент функции потерь, то есть «направление исправления» (родство с [градиентным спуском](https://ml-book.com/t/gradient-descent/) не случайно: это спуск в пространстве функций). Ансамбль наращивается с малым шагом — learning rate. Бустинг в первую очередь снижает смещение (bias), поэтому базовые деревья берут слабые и неглубокие. Индустриальный стандарт — реализации XGBoost, LightGBM и CatBoost: с регуляризацией, обработкой пропусков и категориальных признаков из коробки.

Запомни контраст: **RF борется с variance** (усредняет глубокие независимые деревья, почти не переобучается, мало настроек), **бустинг борется с bias** (последовательно наращивает точность, выжимает максимум качества, но чувствителен к числу итераций и learning rate). На табличных данных бустинг чаще всего обходит и лес, и нейросети: деревья нечувствительны к масштабу признаков, дружат с категориями и пропусками и не требуют гигантских выборок.

> **⚠️ Подводный камень**
>
> Не переноси рецепты между ансамблями: в Random Forest деревья глубокие и их число можно наращивать безболезненно, а в бустинге слишком много итераций или глубокие базовые деревья — прямой путь к переобучению. «Добавим ещё деревьев» безопасно для леса и опасно для бустинга без early stopping.

> **🎤 На собеседовании**
>
> - «Чем Random Forest отличается от бэггинга?» — плюс случайное подмножество признаков в каждом узле: деревья разнообразнее, корреляция между ними ниже.
> - «RF или бустинг — что когда?» — RF: быстрый крепкий baseline, минимум тюнинга. Бустинг: максимум качества на табличке, но настраивай learning rate, глубину и early stopping.
> - «Почему бустинг нельзя обучать параллельно по деревьям?» — каждое дерево зависит от ошибок предыдущих; параллелизм там внутри одного дерева.
> - «Почему на таблицах бустинг бьёт нейросети?» — неоднородные признаки, категории, пропуски, малые и средние выборки — стихия деревьев; сетям нужно больше данных и подготовки.

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

- [Переобучение и регуляризация](https://ml-book.com/t/overfitting-regularization/)
- [Bias–variance: разложение ошибки](https://ml-book.com/t/bias-variance/)
- [Метрики качества](https://ml-book.com/t/metrics/)
- [Кросс-валидация и подбор гиперпараметров](https://ml-book.com/t/cross-validation-tuning/)

---

Интерактив, тест из 12 вопросов и карточки терминов — на странице темы: https://ml-book.com/t/trees-ensembles/
Весь учебник в markdown: https://ml-book.com/llms-full.txt · Оглавление для агентов: https://ml-book.com/llms.txt
