GBM против XGBOOST? Ключевые отличия?

41

Я пытаюсь понять ключевые различия между GBM и XGBOOST. Я пытался найти его в Google, но не смог найти хороших ответов, объясняющих различия между двумя алгоритмами и почему xgboost почти всегда работает лучше, чем GBM. Что делает XGBOOST таким быстрым?

Мужчина
источник
XGBoost не что fast.Refer в этом эксперименте
agcala

Ответы:

36

Цитата от автора xgboost:

И xgboost, и gbm следуют принципу повышения градиента. Есть, однако, разница в деталях моделирования. В частности, xgboost использовал более упорядоченную формализацию модели для управления перетеканием, что повышает его производительность.

Мы обновили исчерпывающее руководство по введению в модель, на которое вы, возможно, захотите взглянуть. Введение в Повышенные Деревья

Название xgboost, тем не менее, на самом деле относится к инженерной цели, заключающейся в том, чтобы расширить границы вычислительных ресурсов для алгоритмов улучшенного дерева. Именно поэтому многие люди используют xgboost. Для модели может быть более подходящим называться регуляризованным повышением градиента.

Изменить: есть подробное руководство по xgboost, которое показывает больше различий.

Ссылки

https://www.quora.com/What-is-the-difference-between-the-R-gbm-gradient-boosting-machine-and-xgboost-extreme-gradient-boosting

https://xgboost.readthedocs.io/en/latest/tutorials/model.html

Icyblade
источник
2
Хороший ответ. ОП также спросил, почему xgboost такой быстрый. Причина в том, что хотя парализовать сам ансамбль невозможно, поскольку каждое дерево зависит от предыдущего, вы можете парализовать создание нескольких узлов в пределах каждой глубины каждого дерева. Эти типы деталей делают xgboost таким быстрым.
Рикардо Крус,
13

В дополнение к ответу, данному Icyblade, разработчики xgboost внесли ряд важных улучшений производительности в различные части реализации, которые имеют большое значение в скорости и использовании памяти:

  1. Использование разреженных матриц с разреженными алгоритмами
  2. Улучшенные структуры данных для лучшего использования кэша процессора, что делает его быстрее.
  3. Лучшая поддержка многоядерной обработки, которая сокращает общее время обучения.

Исходя из моего опыта использования GBM и xgboost при обучении больших наборов данных (более 5 миллионов записей), я испытал значительно меньшее использование памяти (в R) для одного и того же набора данных и обнаружил, что проще использовать несколько ядер для сокращения времени обучения.

Сандип С. Сандху
источник
10

Одно очень важное отличие заключается в xgboostреализации DART, регуляризации отсева для деревьев регрессии .

Ссылки

Rashmi, KV & Gilad-Bachrach, R. (2015). Дарт: Выпадения встречаются с множеством аддитивных деревьев регрессии. Препринт arXiv arXiv: 1505.01866.

horaceT
источник
1
Дротик также реализован в составе LGBM, включая xgboost_dart_mode .
Agcala
0

Я думаю, что разница между повышением градиента и Xgboost заключается в xgboost, алгоритм концентрируется на вычислительной мощности, распараллеливая формирование дерева, которое можно увидеть в этом блоге .

Повышение градиента фокусируется только на дисперсии, но не на компромиссе между смещением, тогда как повышение xg также может фокусироваться на факторе регуляризации.

purna15111
источник
-1

Реализация XGBoost глючит. Сбой молча при обучении на GPU на v 082 . Это также случилось со мной в версии 0.90 , поэтому проблема до сих пор не решена, и исправление, предоставленное в GitHub, не сработало для меня.

LGBM 2.3.1 работает как брелок из коробки, хотя для его установки требуется немного больше усилий. Пока что нет проблем с обучением на GPU.

О том, что XGBoost « так быстр », вы должны взглянуть на эти тесты .

agcala
источник
ОП не спрашивал о xgboost против lightgbm.
oW_