Почему в промышленной среде чаще используют градиентный бустинг, а не случайный лес?
Что проверяют
Понимаете ли вы разницу между бэггингом и бустингом и можете ли назвать причины помимо «бустинг точнее».
Как отвечать
Ключевое различие в способе построения ансамбля. Случайный лес это бэггинг: деревья строятся независимо и параллельно на подвыборках, а предсказания усредняются. Каждое дерево глубокое, с низким смещением и высокой дисперсией, усреднение гасит дисперсию. Бустинг строит деревья последовательно, каждое следующее исправляет ошибки предыдущих, обучаясь на градиенте функции потерь. Деревья неглубокие, и ансамбль снижает именно смещение.
Почему в проде побеждает бустинг:
- точность на табличных данных: на большинстве задач с разнородными признаками правильно настроенный бустинг стабильно обходит лес, и часто заметно;
- оптимизация нужной функции потерь: бустинг обучается под конкретную задачу, включая ранжирование, квантильную регрессию, кастомные потери и веса объектов. Лес такой гибкости не даёт;
- компактность и скорость вывода: сотня неглубоких деревьев предсказывает быстрее, чем несколько сотен глубоких. Для сервиса с ограничением по задержке это решающий фактор;
- зрелая экосистема: XGBoost, LightGBM и CatBoost дают обработку пропусков, категориальные признаки без ручного кодирования, ранние остановки, распределённое обучение и вычисления на GPU;
- тонкая настройка компромисса: скорость обучения, число деревьев, регуляризация, подвыборки. Есть чем управлять переобучением.
Где лес всё-таки уместен: как быстрый ориентир, потому что почти не требует настройки и слабо переобучается; на маленьких и шумных данных; когда нужна параллельность обучения из коробки; для оценки важности признаков в первом приближении.
Честная оговорка: бустинг чувствителен к гиперпараметрам и к шуму в разметке, а обучение последовательно и потому хуже распараллеливается по деревьям.
Где спотыкаются
Говорят «бустинг точнее» и на этом останавливаются.
Путают направление: считают, что бустинг борется с дисперсией, а лес со смещением.
Не могут объяснить, зачем нужна скорость обучения.
Не упоминают, что на неструктурированных данных выигрывают нейросети, а вопрос про табличные.