GBM vs XGBOOST? Perbedaan utama?

40

Saya mencoba memahami perbedaan utama antara GBM dan XGBOOST. Saya mencoba untuk google itu, tetapi tidak dapat menemukan jawaban yang baik menjelaskan perbedaan antara kedua algoritma dan mengapa xgboost hampir selalu berkinerja lebih baik daripada GBM. Apa yang membuat XGBOOST begitu cepat?

Seorang pria
sumber
XGBoost tidak bahwa fast.Refer untuk percobaan ini
agcala

Jawaban:

36

Kutipan dari penulis xgboost:

Baik xgboost dan gbm mengikuti prinsip peningkatan gradien. Namun demikian, perbedaan dalam detail pemodelan. Secara khusus, xgboost menggunakan formalisasi model yang lebih teratur untuk mengontrol over-fitting, yang memberikan kinerja yang lebih baik.

Kami telah memperbarui tutorial komprehensif tentang pengantar model, yang mungkin ingin Anda lihat. Pengantar Pohon yang Ditingkatkan

Nama xgboost, sebenarnya, mengacu pada tujuan rekayasa untuk mendorong batas sumber daya komputasi untuk algoritma pohon yang ditingkatkan. Itulah alasan mengapa banyak orang menggunakan xgboost. Untuk model, mungkin lebih cocok disebut sebagai penguat gradien teregulasi.

Sunting: Ada panduan terperinci xgboost yang menunjukkan lebih banyak perbedaan.

Referensi

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
sumber
2
Jawaban yang bagus. OP juga bertanya mengapa xgboost begitu cepat. Alasannya adalah bahwa sementara itu tidak mungkin untuk memparalelkan ansambel itu sendiri karena setiap pohon bergantung pada yang sebelumnya, Anda dapat memparalelkan pembangunan beberapa node dalam setiap kedalaman setiap pohon. Jenis detail inilah yang membuat xgboost begitu cepat.
Ricardo Cruz
13

Selain jawaban yang diberikan oleh Icyblade, para pengembang xgboost telah membuat sejumlah peningkatan kinerja penting ke berbagai bagian implementasi yang membuat perbedaan besar dalam kecepatan dan pemanfaatan memori:

  1. Penggunaan matriks jarang dengan algoritma sadar sparsity
  2. Struktur data yang ditingkatkan untuk pemanfaatan cache prosesor yang lebih baik yang membuatnya lebih cepat.
  3. Dukungan yang lebih baik untuk pemrosesan multicore yang mengurangi waktu pelatihan secara keseluruhan.

Dalam pengalaman saya ketika menggunakan GBM dan xgboost saat melatih dataset besar (5 juta + catatan), saya telah mengalami pemanfaatan memori yang berkurang secara signifikan (dalam R) untuk dataset yang sama dan menemukan lebih mudah untuk menggunakan banyak core untuk mengurangi waktu pelatihan.

Sandeep S. Sandhu
sumber
10

Satu perbedaan yang sangat penting adalah xgboosttelah menerapkan DART, regularisasi putus sekolah untuk pohon regresi .

Referensi

Rashmi, KV, & Gilad-Bachrach, R. (2015). Dart: Putus sekolah bertemu beberapa pohon regresi aditif. arXiv preprint arXiv: 1505.01866.

horaceT
sumber
1
Dart juga diterapkan di LGBM termasuk xgboost_dart_mode .
agcala
0

Saya pikir perbedaan antara meningkatkan gradien dan Xgboost adalah dalam xgboost algoritma berfokus pada kekuatan komputasi, dengan cara memaralelkan formasi pohon yang dapat dilihat di blog ini .

Peningkatan gradien hanya berfokus pada varians tetapi bukan trade off antara bias sedangkan xg boost juga dapat fokus pada faktor regularisasi.

purna15111
sumber
-1

Implementasi XGBoost bermasalah. Hancur secara diam-diam saat berlatih menggunakan GPU pada v 082 . Itu terjadi pada saya juga pada v 0.90 , jadi masalah ini belum diatasi sejauh ini, dan "perbaikan" yang disediakan di GitHub tidak bekerja untuk saya.

LGBM 2.3.1 bekerja seperti pesona di luar kotak, meskipun menginstalnya membutuhkan sedikit usaha. Sejauh ini tidak ada masalah pelatihan pada GPU.

Tentang XGBoost karena " begitu cepat ", Anda harus melihat pada tolok ukur ini .

agcala
sumber
OP tidak bertanya tentang xgboost vs lightgbm.
oW_