Сравнение Случайного леса с Градиентным бустингом

Материал из Documentation.

Перейти к: навигация, поиск

Хотя Случайный лес и Градиентный бустинг являются ансамблями, основанными на решающих деревьях, они работают по принципиально разным логикам. Главное различие заключается в том, как строятся деревья и как объединяются их результаты.

Содержание

[править] Характеристики

[править] Принцип построения

Случайный лес: Использует метод бэггинга (Bagging). Все деревья строятся независимо друг от друга и параллельно. Каждое дерево обучается на случайном подмножестве данных и признаков.

Градиентный бустинг: Использует метод бустинга. Деревья строятся последовательно. Каждое следующее дерево пытается исправить ошибки (остатки), допущенные всеми предыдущими деревьями.

[править] Цель алгоритма

В машинном обучении ошибка складывается из смещения (bias) и разброса (variance).

Случайный лес борется с разбросом (переобучением). Сами по себе глубокие деревья склонны к переобучению, но их усреднение позволяет получить более стабильную модель.

Градиентный бустинг борется со смещением (недообучением). Каждая итерация делает модель более точной, «подтягивая» предсказание к реальному значению.

[править] Формула предсказания

Случайный лес: Результат — это простое голосование (для классификации) или среднее арифметическое (для регрессии) ответов всех деревьев.

Градиентный бустинг: Результат — это взвешенная сумма предсказаний всех деревьев, где каждое новое дерево добавляется с определённым коэффициентом.

[править] Глубина деревьев

Случайный лес: Использует глубокие деревья (с низким смещением, но высоким разбросом). Это нужно, чтобы каждое дерево само по себе было достаточно сильным предиктором.

Градиентный бустинг: Использует неглубокие деревья (часто называемые «пнями» — stumps). Это слабые ученики, которые в совокупности создают сильную модель.

[править] Сложность настройки

Случайный лес: Легко. Мало критичных гиперпараметров.

Градиентный бустинг: Сложно. Требует подбора learning_rate, n_estimators, max_depth.

[править] Переобучение

Случайный лес: Почти не переобучается при добавлении деревьев.

Градиентный бустинг: Легко переобучается, если деревьев слишком много или learning_rate велик.

[править] Скорость обучения

Случайный лес: Быстро (можно обучать деревья параллельно на разных ядрах CPU).

Градиентный бустинг: Медленнее (последовательный процесс), хотя современные реализации (XGBoost, LightGBM) очень быстры.

[править] Выбросы в данных

Случайный лес: Устойчив к шуму и выбросам.

Градиентный бустинг: Чувствителен к шуму, так как будет пытаться «выучить» и исправить ошибки на аномалиях.

[править] Алгоритм выбора метода

Алгоритм выбора метода:

  1. Случайный лес — отличный выбор для «базовой» модели (baseline). Он работает «из коробки» с минимальной настройкой, его сложно испортить, и он хорошо справляется с шумными данными.
  2. Градиентный бустинг — стоит использовать, когда вам нужна максимальная точность (например, в соревнованиях Kaggle). При правильной настройке он почти всегда обходит случайный лес по метрикам, но требует больше времени на подготовку и валидацию.
Личные инструменты