Сравнение Случайного леса с Градиентным бустингом
Материал из Documentation.
Хотя Случайный лес и Градиентный бустинг являются ансамблями, основанными на решающих деревьях, они работают по принципиально разным логикам. Главное различие заключается в том, как строятся деревья и как объединяются их результаты.
Содержание |
[править] Характеристики
[править] Принцип построения
Случайный лес: Использует метод бэггинга (Bagging). Все деревья строятся независимо друг от друга и параллельно. Каждое дерево обучается на случайном подмножестве данных и признаков.
Градиентный бустинг: Использует метод бустинга. Деревья строятся последовательно. Каждое следующее дерево пытается исправить ошибки (остатки), допущенные всеми предыдущими деревьями.
[править] Цель алгоритма
В машинном обучении ошибка складывается из смещения (bias) и разброса (variance).
Случайный лес борется с разбросом (переобучением). Сами по себе глубокие деревья склонны к переобучению, но их усреднение позволяет получить более стабильную модель.
Градиентный бустинг борется со смещением (недообучением). Каждая итерация делает модель более точной, «подтягивая» предсказание к реальному значению.
[править] Формула предсказания
Случайный лес: Результат — это простое голосование (для классификации) или среднее арифметическое (для регрессии) ответов всех деревьев.
Градиентный бустинг: Результат — это взвешенная сумма предсказаний всех деревьев, где каждое новое дерево добавляется с определённым коэффициентом.
[править] Глубина деревьев
Случайный лес: Использует глубокие деревья (с низким смещением, но высоким разбросом). Это нужно, чтобы каждое дерево само по себе было достаточно сильным предиктором.
Градиентный бустинг: Использует неглубокие деревья (часто называемые «пнями» — stumps). Это слабые ученики, которые в совокупности создают сильную модель.
[править] Сложность настройки
Случайный лес: Легко. Мало критичных гиперпараметров.
Градиентный бустинг: Сложно. Требует подбора learning_rate, n_estimators, max_depth.
[править] Переобучение
Случайный лес: Почти не переобучается при добавлении деревьев.
Градиентный бустинг: Легко переобучается, если деревьев слишком много или learning_rate велик.
[править] Скорость обучения
Случайный лес: Быстро (можно обучать деревья параллельно на разных ядрах CPU).
Градиентный бустинг: Медленнее (последовательный процесс), хотя современные реализации (XGBoost, LightGBM) очень быстры.
[править] Выбросы в данных
Случайный лес: Устойчив к шуму и выбросам.
Градиентный бустинг: Чувствителен к шуму, так как будет пытаться «выучить» и исправить ошибки на аномалиях.
[править] Алгоритм выбора метода
Алгоритм выбора метода:
- Случайный лес — отличный выбор для «базовой» модели (baseline). Он работает «из коробки» с минимальной настройкой, его сложно испортить, и он хорошо справляется с шумными данными.
- Градиентный бустинг — стоит использовать, когда вам нужна максимальная точность (например, в соревнованиях Kaggle). При правильной настройке он почти всегда обходит случайный лес по метрикам, но требует больше времени на подготовку и валидацию.
