XGBoost vs Python Sklearn gradien meningkatkan pohon

20

Saya mencoba memahami cara kerja XGBoost. Saya sudah mengerti bagaimana gradien meningkatkan kerja pohon di Python sklearn. Yang tidak jelas bagi saya adalah apakah XGBoost bekerja dengan cara yang sama, tetapi lebih cepat, atau jika ada perbedaan mendasar antara itu dan implementasi python.

Ketika saya membaca makalah ini

http://learningsys.org/papers/LearningSys_2015_paper_32.pdf

Bagi saya sepertinya hasil akhir yang keluar dari XGboost sama dengan dalam implementasi Python, namun perbedaan utama adalah bagaimana XGboost menemukan pemisahan terbaik untuk dibuat di setiap pohon regresi.

Pada dasarnya, XGBoost memberikan hasil yang sama, tetapi lebih cepat.

Apakah ini benar, atau ada hal lain yang saya lewatkan?

Cukup kutu buku
sumber

Jawaban:

18

Anda benar, XGBoost ('eXtreme Gradient Boosting') dan sklearn's GradientBoost pada dasarnya sama dengan keduanya, keduanya merupakan implementasi peningkatan gradien.

Namun, ada perbedaan yang sangat signifikan di bawah tenda dalam arti praktis. XGBoost jauh lebih cepat (lihat http://machinelearningmastery.com/gentle-introduction-xgboost-applied-machine-learning/ ) daripada sklearn's. XGBoost cukup hemat memori dan dapat diparalelkan (saya pikir sklearn tidak dapat melakukannya secara default, saya tidak tahu persis tentang efisiensi memori sklearn tapi saya cukup yakin ini di bawah XGBoost).

Setelah menggunakan keduanya, kecepatan XGBoost cukup mengesankan dan kinerjanya lebih unggul daripada GradientBoosting sklearn.

K88
sumber
1
Ada juga perbedaan kinerja. Xgboost menggunakan turunan kedua untuk menemukan konstanta optimal di setiap node terminal. Implementasi standar hanya menggunakan turunan pertama.
Zelazny7
@ Zelazny7 Apakah Anda memiliki referensi untuk pernyataan Anda? Orang akan berharap bahwa menghitung turunan ke-2 akan menurunkan kinerja. Ini juga berarti bahwa sesuatu selain (rasa) gradien keturunan digunakan.
meh
Konfirmasi untuk posting @ K88, sklearn's GradientBoostingClassifier tidak memiliki n_jobsparameter antarmuka yang tersedia; pemrosesan paralel tidak dimungkinkan secara internal dengan implementasi algoritma sklearn.
bmc
7

Tidak seperti peningkatan gradien Sklearn, Xgboost melakukan regularisasi pohon juga untuk menghindari overfitting dan juga menangani nilai yang hilang secara efisien. Tautan berikut mungkin bermanfaat untuk mempelajari xgboost dengan tepat https://www.youtube.com/watch?v=Vly8xGnNiWs

Harshit Mehta
sumber
GBM SkLearn melakukan regularisasi melalui parameter learning_rate.
Teja Chebrole
1

XGboost adalah implementasi dari GBDT dengan randmization (Ini menggunakan pengambilan sampel kolom dan pengambilan sampel baris). Sampling sampel dimungkinkan dengan tidak menggunakan semua data pelatihan untuk setiap model dasar GBDT. Alih-alih menggunakan semua data pelatihan untuk masing-masing model-dasar, kami mengambil sampel sejumlah baris dan hanya menggunakan baris-baris data untuk membangun masing-masing model dasar. Ini memastikan bahwa ada peluang yang lebih kecil untuk overfitting yang merupakan masalah utama dengan GBDT sederhana yang XGBoost coba atasi menggunakan pengacakan ini.

Hemanth
sumber