ГБМ проти XGBOOST? Ключові відмінності?


40

Я намагаюся зрозуміти ключові відмінності між GBM та XGBOOST. Я спробував google це, але не міг знайти жодних хороших відповідей, що пояснювали б відмінності між двома алгоритмами та чому xgboost майже завжди працює краще, ніж GBM. Що робить XGBOOST настільки швидким?


XGBoost не такий швидкий. Зверніться до цього експерименту
agcala

Відповіді:


36

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

І xgboost, і gbm дотримуються принципу збільшення градієнта. Однак є різниця в деталях моделювання. Зокрема, xgboost використовував більш регульовану формалізацію моделі для контролю над приміркою, що дає їй кращі показники.

Ми оновили вичерпний підручник з ознайомлення з моделлю, який ви, можливо, захочете поглянути. Вступ до підсилених дерев

Однак ім'я xgboost насправді стосується інженерної мети - просунути межу ресурсів обчислень для алгоритмів підсиленого дерева. З якої причини багато людей використовують xgboost. Для моделі це може бути більш придатним називатися як регульоване збільшення градієнта.

Редагувати: Є докладний посібник з xgboost, який показує більше відмінностей.

Список літератури

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

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


2
Гарна відповідь. ОП також запитала, чому xgboost такий швидкий. Причина полягає в тому, що, хоча неможливо паралелізувати сам ансамбль, оскільки кожне дерево залежить від попереднього, ви можете паралелізувати будівництво кількох вузлів у межах кожної глибини кожного дерева. Ці типи деталей - це те, що робить xgboost настільки швидким.
Рікардо Крус

13

На додаток до відповіді, наданої Icyblade, розробники xgboost внесли ряд важливих покращень продуктивності в різні частини реалізації, які мають велику різницю в швидкості та використанні пам'яті:

  1. Використання розріджених матриць з алгоритмами, що знають рідкість
  2. Вдосконалена структура даних для кращого використання кеш-процесора, що робить його швидшим.
  3. Краща підтримка багатоядерної обробки, що скорочує загальний час навчання.

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


10

Одна дуже важлива відмінність - xgboostце реалізована DART, регуляризація випадання дерев регресії .

Список літератури

Рашмі, К. В. та Гілад-Бахрач, Р. (2015). Дарт: Випадаючі зустрічаються з декількома деревами адгресивної регресії. переддрук arXiv arXiv: 1505.01866.


1
Dart також реалізований у LGBM включеному xgboost_dart_mode .
agcala

0

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

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


-1

Реалізація XGBoost є помилковою. Розбився мовчки під час навчання на GPU на v 082 . Це сталося і зі мною на версії 0.90 , тому досі не вирішувалося це питання, і "виправлення", передбачене в GitHub, не працювало для мене.

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

Про XGBoost бути « так швидко », ви повинні дивитися на цих тестах .


ОП не запитували про xgboost vs lightgbm.
oW_
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.