GBM vs XGBOOST? Anahtar farklılıklar?


39

GBM ve XGBOOST arasındaki önemli farkları anlamaya çalışıyorum. Google'ı denedim, ancak iki algoritma arasındaki farkları ve xgboost'un neden hemen hemen her zaman GBM'den daha iyi performans gösterdiğini açıklayan iyi cevaplar bulamadım. XGBOOST'ı bu kadar hızlı yapan nedir?


XGBoost o kadar hızlı değil . Bu deneyime bakın
agcala

Yanıtlar:


35

Yazarın alıntı xgboost:

Hem xgboost hem de gbm degrade yükseltme ilkesini izler. Bununla birlikte, modelleme detaylarındaki fark vardır. Spesifik olarak, xgboost, aşırı uydurmayı kontrol etmek için daha düzenli bir model formalizasyonu kullandı ve bu da daha iyi performans verdi.

Göz atmak isteyebileceğiniz modelin tanıtımıyla ilgili kapsamlı bir öğreticiyi güncelledik. Yükseltilmiş Ağaçlara Giriş

Bununla birlikte, xgboost ismi aslında artırılmış ağaç algoritmaları için hesaplama kaynaklarının sınırını zorlayan mühendislik hedefine atıfta bulunuyor. Birçok insanın xgboost kullanmasının nedeni budur. Model için düzenli gradyan artırma olarak adlandırmak daha uygun olabilir.

Düzenleme: Daha fazla fark gösteren ayrıntılı bir xgboost rehberi var .

Referanslar

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


2
İyi cevap. OP ayrıca xgboost'un neden bu kadar hızlı olduğunu sordu. Bunun nedeni, her ağacın bir önceye bağlı olduğu için grubun kendisini paralelleştirmek mümkün olmasa da, her ağacın her derinliği içindeki birkaç düğümün yapısını paralel hale getirebilirsiniz. Bu tür detaylar xgboost'u bu kadar hızlı yapan şeydir.
Ricardo Cruz

13

Icyblade'in verdiği cevaba ek olarak, xgboost geliştiricileri, uygulamanın farklı bölümlerinde hız ve bellek kullanımında büyük fark yaratan önemli performans geliştirmeleri yaptı:

  1. Seyrek matrislerin seyrek farkındalık algoritmaları ile kullanılması
  2. Daha hızlı işlemci önbellek kullanımı için geliştirilmiş veri yapıları.
  3. Genel eğitim süresini kısaltan çok çekirdekli işlemlerde daha iyi destek.

Büyük veri kümelerini (5 milyon + kayıt) eğitirken GBM ve xgboost kullanırken deneyimime göre, aynı veri kümesi için bellek kullanımı (R cinsinden) önemli ölçüde azaldı ve eğitim süresini azaltmak için birden fazla çekirdek kullanmayı daha kolay buldum.



0

Gradyan artırma ve Xgboost arasındaki farkın xgboost olduğunu düşünüyorum, algoritma bu blogda görebileceği ağaç oluşumunu paralel hale getirerek hesaplama gücüne odaklanıyor .

Degrade artırma yalnızca varyansa odaklanır, ancak xg artırmasının düzenlileştirme faktörüne de odaklanabileceği yanlılık arasındaki değişime odaklanmaz.


-1

XGBoost uygulaması buggy. GPU’da v 082’de egzersiz yaparken sessizce çöktü . Benim için de 0.90'da oldu , bu yüzden sorun şu ana kadar ele alınmadı ve GitHub'da verilen "düzeltme" benim için işe yaramadı.

LGBM 2.3.1 kutudan bir cazibe gibi çalışır, ancak montajı biraz daha fazla çaba gerektirir. Şimdiye kadar GPU konusunda eğitim sorunu yok.

Hakkında XGBoost "olmanın çok hızlı " ise, bakmak gerekir bu kriterler .


OP, lightgbm'e karşı xgboost hakkında soru sormadı.
oW_
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.