GBM กับ XGBOOST ความแตกต่างที่สำคัญ?


39

ฉันพยายามเข้าใจถึงความแตกต่างที่สำคัญระหว่าง GBM และ XGBOOST ฉันพยายาม google แต่ไม่พบคำตอบที่ดีใด ๆ ที่อธิบายความแตกต่างระหว่างอัลกอริธึมทั้งสองและทำไม xgboost ทำงานได้ดีกว่า GBM เกือบทุกครั้ง อะไรทำให้ XGBOOST เร็วขึ้น?


XGBoost ไม่ว่า fast.Refer การทดลองนี้
agcala

คำตอบ:


35

อ้างอิงจากผู้เขียนxgboost:

ทั้ง xgboost และ gbm เป็นไปตามหลักการเพิ่มการไล่ระดับสี อย่างไรก็ตามมีความแตกต่างในการสร้างแบบจำลองรายละเอียด โดยเฉพาะอย่างยิ่ง xgboost ใช้รูปแบบการทำให้เป็นระเบียบแบบแผนมากขึ้นเพื่อควบคุมการกระชับซึ่งทำให้มันมีประสิทธิภาพที่ดีขึ้น

เราได้อัปเดตบทแนะนำที่ครอบคลุมเกี่ยวกับการแนะนำโมเดลซึ่งคุณอาจต้องการดู รู้เบื้องต้นเกี่ยวกับต้นไม้ที่ได้รับการส่งเสริม

แม้ว่าชื่อ xgboost จริงๆแล้วหมายถึงเป้าหมายทางวิศวกรรมเพื่อผลักดันขีด จำกัด ของทรัพยากรการคำนวณสำหรับอัลกอริทึมทรีที่เพิ่มขึ้น ซึ่งเป็นเหตุผลว่าทำไมหลายคนใช้ xgboost สำหรับแบบจำลองอาจเหมาะกว่าที่จะเรียกว่าเป็นการเพิ่มการไล่ระดับสีแบบสม่ำเสมอ

แก้ไข: มีคำแนะนำโดยละเอียดของ xgboost ซึ่งแสดงความแตกต่างมากขึ้น

อ้างอิง

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
คำตอบที่ดี. OP ยังถามด้วยว่าทำไม xgboost จึงเร็ว เหตุผลก็คือแม้ว่ามันจะเป็นไปไม่ได้ที่จะแยกวิเคราะห์ชุดตัวเองเพราะต้นไม้แต่ละต้นขึ้นอยู่กับต้นไม้ก่อนหน้านี้ แต่คุณสามารถแยกส่วนของอาคารหลายโหนดในแต่ละความลึกของแต่ละต้น รายละเอียดประเภทนี้เป็นสิ่งที่ทำให้ xgboost รวดเร็ว
Ricardo Cruz

13

นอกเหนือจากคำตอบที่ได้รับจาก Icyblade ผู้พัฒนาของ xgboost ได้ทำการปรับปรุงประสิทธิภาพที่สำคัญในส่วนต่าง ๆ ของการใช้งานซึ่งสร้างความแตกต่างอย่างมากในด้านความเร็วและการใช้หน่วยความจำ:

  1. การใช้เมทริกซ์กระจัดกระจายพร้อมอัลกอริธึมการรู้จำ sparsity
  2. ปรับปรุงโครงสร้างข้อมูลเพื่อการใช้แคชโปรเซสเซอร์ที่ดีขึ้นซึ่งทำให้เร็วขึ้น
  3. รองรับการประมวลผลแบบมัลติคอร์ที่ดีขึ้นซึ่งช่วยลดเวลาการฝึกอบรมโดยรวม

จากประสบการณ์ของฉันเมื่อใช้ GBM และ xgboost ขณะฝึกชุดข้อมูลขนาดใหญ่ (5 ล้านเร็กคอร์ด +) ฉันพบว่าการใช้หน่วยความจำลดลงอย่างมาก (ใน R) สำหรับชุดข้อมูลเดียวกันและพบว่าการใช้หลายคอร์ลดเวลาการฝึกอบรมได้ง่ายขึ้น


10

หนึ่งความแตกต่างที่สำคัญมากคือxgboostได้ดำเนินการโผที่กูกลางคันสำหรับต้นไม้ถดถอย

อ้างอิง

Rashmi, KV, & Gilad-Bachrach, R. (2015) Dart: ดร็อปอินพบต้นไม้ถดถอยหลายตัว พิมพ์ล่วงหน้า arXiv arXiv: 1505.01866


โผยังจะดำเนินการใน LGBM รวมxgboost_dart_mode
agcala

0

ผมคิดว่าความแตกต่างระหว่างการไล่ระดับสีที่ส่งเสริมและ Xgboost ที่อยู่ในขั้นตอนวิธีการ xgboost มุ่งเน้นไปที่การใช้พลังงานในการคำนวณโดย parallelizing ก่อต้นไม้ที่หนึ่งที่สามารถมองเห็นในบล็อกนี้

การไล่ระดับสีแบบเน้นจะเน้นที่ความแปรปรวน แต่ไม่ใช่การแลกเปลี่ยนระหว่างอคติเมื่อการเพิ่มระดับของ xg สามารถเน้นปัจจัยการทำให้เป็นปกติได้


0

การใช้งาน XGBoost เป็นบั๊กซี ล้มเหลวอย่างเงียบ ๆ เมื่อการฝึกอบรมใน GPU บนโวลต์ 082 มันเกิดขึ้นกับฉันเช่นกันในv 0.90ดังนั้นปัญหายังไม่ได้รับการแก้ไขและ "การแก้ไข" ที่ระบุใน GitHub ไม่ได้ผลสำหรับฉัน

LGBM 2.3.1 ใช้งานได้อย่างมีเสน่ห์นอกกรอบแม้ว่าการติดตั้งจะต้องใช้ความพยายามอีกเล็กน้อย จนถึงขณะนี้ยังไม่มีปัญหาในการฝึกอบรมเกี่ยวกับ GPU

เกี่ยวกับXGBoostเป็น " อย่างรวดเร็ว " คุณควรจะดูที่มาตรฐานเหล่านี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.