XGBoost vs Python Sklearn eğimli güçlendirilmiş ağaçlar


20

XGBoost'un nasıl çalıştığını anlamaya çalışıyorum. Degrade artırılmış ağaçların Python sklearn'de nasıl çalıştığını zaten anlıyorum. Benim için net olmayan şey, XGBoost'un aynı şekilde, ancak daha hızlı çalışması veya python uygulaması arasında temel farklılıklar olup olmadığıdır.

Bu makaleyi okuduğumda

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

Bana öyle geliyor ki XGboost'tan çıkan sonuç Python uygulamasında olduğu gibi, ancak asıl fark XGboost'un her regresyon ağacında yapılacak en iyi ayrımı nasıl bulduğu.

Temel olarak, XGBoost aynı sonucu verir, ancak daha hızlıdır.

Bu doğru mu, yoksa özlediğim başka bir şey var mı?

Yanıtlar:


18

Doğru, XGBoost ('eXtreme Gradient Boosting') ve sklearn'in GradientBoost temelde her ikisi de gradyan artırıcı uygulamalarla aynıdır.

Bununla birlikte, pratik anlamda kaputun altında çok önemli farklılıklar vardır. XGBoost, sklearn'lerden çok daha hızlıdır (bkz. Http://machinelearningmastery.com/gentle-introduction-xgboost-applied-machine-learning/ ). XGBoost oldukça bellek verimlidir ve paralelleştirilebilir (bence sklearn varsayılan olarak bunu yapamaz, sklearn'un bellek verimliliği hakkında tam olarak bilmiyorum ama XGBoost'un altında olduğundan oldukça eminim).

Her ikisini de kullanan XGBoost'un hızı oldukça etkileyici ve performansı sklearn'in GradientBoosting'inden daha üstündür.


1
Ayrıca bir performans farkı var. Xgboost, her bir terminal düğümünde optimum sabiti bulmak için ikinci türevleri kullandı. Standart uygulama sadece ilk türevi kullanır.
Zelazny7

@ Zelazny7 İfadeniz için referansınız var mı? İkinci türevlerin hesaplanmasının performansı düşmesi beklenebilir. Ayrıca gradyan kökenli dışında (herhangi bir lezzet) bir şey kullanıldığı anlamına da gelir.
meh



@ K88'in gönderisini onaylayan sklearn'in GradientBoostingClassifier öğesinde n_jobskullanılabilir bir arabirim parametresi yok ; sklearn'in algoritmayı uygulamasıyla dahili olarak paralel işlem mümkün değildir.
BMC

7

Sklearn'in gradyan hızlandırmasının aksine, Xgboost aşırı sığmayı önlemek için ağacın düzenli hale getirilmesini de yapar ve eksik değerlerle de verimli bir şekilde ilgilenir. Aşağıdaki bağlantı xgboost'u tam olarak öğrenmek için yararlı olabilir https://www.youtube.com/watch?v=Vly8xGnNiWs


SkLearn'ün GBM'si learning_rate parametresi aracılığıyla düzenlileştirme yapar.
Teja Chebrole

1

XGboost, randımanla GBDT'nin uygulanmasıdır (Sütun örneklemesi ve sıra örneklemesi kullanır). Her temel model için tüm eğitim verilerini kullanmak yerine, bir satır alt kümesini örnekliyoruz ve temel modellerin her birini oluşturmak için yalnızca bu veri satırlarını kullanıyoruz. Bu, XGBoost'un bu randomizasyonu kullanarak ele almaya çalıştığı basit GBDT ile büyük bir sorun olan aşırı sığdırma şansının daha az olmasını sağlar.

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.