XGBoost vs Python Sklearn ทำให้ต้นไม้ดีขึ้น


20

ฉันพยายามเข้าใจว่า XGBoost ทำงานอย่างไร ฉันเข้าใจอยู่แล้วว่าต้นไม้ที่ถูกไล่ระดับสีนั้นทำงานบน Python sklearn ได้อย่างไร สิ่งที่ไม่ชัดเจนสำหรับฉันคือถ้า XGBoost ทำงานในลักษณะเดียวกัน แต่เร็วกว่าหรือหากมีความแตกต่างพื้นฐานระหว่างมันกับการใช้งานของหลาม

เมื่อฉันอ่านเอกสารนี้

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

ฉันดูเหมือนว่าผลลัพธ์สุดท้ายที่ออกมาจาก XGboost จะเหมือนกับในการใช้งาน Python แต่ความแตกต่างที่สำคัญคือวิธีที่ XGboost พบว่าการแยกที่ดีที่สุดที่จะทำในต้นไม้การถดถอยแต่ละต้น

โดยพื้นฐานแล้ว XGBoost ให้ผลลัพธ์เหมือนกัน แต่เร็วกว่า

ถูกต้องหรือมีอย่างอื่นที่ฉันหายไปหรือไม่

คำตอบ:


18

คุณถูกต้อง XGBoost ('eXtreme Gradient Boosting') และ GradientBoost ของ sklearn นั้นเป็นพื้นฐานเดียวกันกับที่พวกมันเป็นทั้งการเพิ่มการไล่ระดับสี

อย่างไรก็ตามมีความแตกต่างอย่างมีนัยสำคัญภายใต้ประทุนในทางปฏิบัติ XGBoost เร็วกว่ามาก (ดูhttp://machinelearningmastery.com/gentle-introduction-xgboost-applied-machine-learning/ ) มากกว่าของ sklearn XGBoost ค่อนข้างมีประสิทธิภาพของหน่วยความจำและสามารถขนานกันได้ (ฉันคิดว่า sklearn ไม่สามารถทำได้ตามค่าเริ่มต้นฉันไม่รู้แน่ชัดเกี่ยวกับประสิทธิภาพของหน่วยความจำของ sklearn แต่ฉันค่อนข้างมั่นใจว่ามันต่ำกว่า XGBoost ของ)

เมื่อใช้ทั้งสองความเร็วของ XGBoost นั้นค่อนข้างน่าประทับใจและประสิทธิภาพของมันนั้นเหนือกว่า GradientBoosting ของ Sklearn


1
นอกจากนี้ยังมีความแตกต่างด้านประสิทธิภาพ Xgboost ใช้อนุพันธ์อันดับสองเพื่อค้นหาค่าคงที่ที่เหมาะสมในแต่ละโหนดเทอร์มินัล การนำมาตรฐานไปใช้นั้นใช้อนุพันธ์อันดับแรกเท่านั้น
Zelazny7

@ Zelazny7 คุณมีการอ้างอิงใด ๆ สำหรับคำสั่งของคุณ? หนึ่งคาดว่าการคำนวณอนุพันธ์อันดับสองจะทำให้ประสิทธิภาพลดลง นอกจากนี้ยังหมายถึงมีการใช้บางสิ่งบางอย่างนอกเหนือจากการสืบเชื้อสายการไล่ระดับสี
Meh



ยืนยันการโพสต์ของ @ K88 GradientBoostingClassifierของ Sklearn ไม่มีn_jobsพารามิเตอร์ของอินเตอร์เฟส การประมวลผลแบบขนานเป็นไปไม่ได้ภายในด้วยการใช้อัลกอริทึมของ sklearn
bmc

7

ซึ่งแตกต่างจากการเพิ่มการไล่ระดับสีของ Sklearn Xgboost ทำต้นไม้เป็นประจำเพื่อหลีกเลี่ยงการ overfitting และจัดการกับค่าที่หายไปอย่างมีประสิทธิภาพเช่นกัน ลิงค์ต่อไปนี้อาจมีประโยชน์ในการเรียนรู้ xgboost อย่างแม่นยำhttps://www.youtube.com/watch?v=Vly8xGnNiWs


GBM ของ SkLearn ทำการกำหนดมาตรฐานผ่านพารามิเตอร์ learning_rate
Teja Chebrole

1

XGboost กำลังดำเนินการตาม GBDT โดยใช้การสุ่มตัวอย่าง (ใช้การสุ่มตัวอย่าง coloumn และการสุ่มตัวอย่างแถว) การสุ่มตัวอย่างแบบแถวทำได้โดยไม่ใช้ข้อมูลการฝึกอบรมทั้งหมดสำหรับแต่ละรุ่นฐานของ GBDT แทนที่จะใช้ข้อมูลการฝึกอบรมทั้งหมดสำหรับแต่ละแบบจำลองพื้นฐานเราสุ่มตัวอย่างชุดย่อยของแถวและใช้เฉพาะแถวข้อมูลเพื่อสร้างแบบจำลองพื้นฐานแต่ละแบบ สิ่งนี้ช่วยให้มั่นใจได้ว่ามีโอกาสน้อยที่จะ overfitting ซึ่งเป็นปัญหาสำคัญกับ GBDT อย่างง่ายซึ่ง XGBoost พยายามที่จะจัดการกับการใช้การสุ่มนี้

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