ความแตกต่างทางคณิตศาสตร์ระหว่าง GBM, XGBoost, LightGBM, CatBoost?


33

มีการปรับใช้หลายรุ่นตระกูล GBDT เช่น:

  • GBM
  • XGBoost
  • LightGBM
  • Catboost

อะไรคือความแตกต่างทางคณิตศาสตร์ระหว่างการใช้งานที่แตกต่างกันเหล่านี้?

Catboost ดูเหมือนว่าจะมีประสิทธิภาพสูงกว่าการใช้งานอื่น ๆ แม้จะใช้เพียงพารามิเตอร์เริ่มต้นตามเครื่องหมายมาตรฐานนี้ แต่ก็ยังช้ามาก

ฉันเดาว่า catboost ไม่ได้ใช้ตัวแปร dummified ดังนั้นน้ำหนักที่กำหนดให้กับตัวแปร (หมวดหมู่) แต่ละตัวนั้นมีความสมดุลมากกว่าเมื่อเปรียบเทียบกับการใช้งานอื่น ๆ ดังนั้นตัวแปรที่มีความสำคัญสูงจึงไม่มีน้ำหนักมากกว่าตัวอื่น มันช่วยให้การจัดหมวดหมู่ที่อ่อนแอ (ที่มีความสำคัญน้อย) เข้าไปในต้นไม้บางต้นซึ่งมีประสิทธิภาพที่ดีกว่า นอกจากนั้นฉันไม่มีคำอธิบายเพิ่มเติม


เกณฑ์มาตรฐานที่อ้างอิงคือโดยทีมยานเดกซ์ / catboost เราต้องการอิสระ
mrgloom

คำตอบ:


27
My guess is that catboost doesn't use the dummified variables, so the weight given to each (categorical) variable is more balanced compared to the other implementations, so the high-cardinality variables don't have more weight than the others.

https://arxiv.org/abs/1706.09516

คุณต้องการดูกระดาษภาษาอังกฤษนี้จากทีม Yandex เกี่ยวกับเอกลักษณ์ทางคณิตศาสตร์ของ CATBoost

ฉันอ่านมันสั้น ๆ และในบางสิ่งที่ฉันสามารถเข้าใจได้อย่างรวดเร็วคือความจริงที่ว่าพวกเขาไม่ได้ใช้ส่วนที่เหลือที่ได้รับจากTRAINเพื่อทำTRAINเนื่องจากส่วนที่เหลือเหล่านี้สร้างอคติเชิงคุณภาพของการเรียนรู้ ( อัปเดต:ความแปลกใหม่นี้นำวิธีการต่อสู้กับการ overfitting ซึ่งเป็นหนึ่งในเหตุผลที่อัลกอริทึมทำงานได้ดีขึ้นเมื่อเทียบกับ analogues นอกเหนือจากความหลากหลายของวิธีในการประมวลผลตัวแปรเด็ดขาดล่วงหน้า)

ฉันขอโทษที่ไม่ให้คำตอบที่เฉพาะเจาะจงและครบถ้วน

ความแตกต่างทางคณิตศาสตร์ระหว่าง GBM, XGBoost

ก่อนอื่นฉันขอแนะนำให้คุณอ่านกระดาษโดย Friedman เกี่ยวกับเครื่องไล่สีไล่ระดับสีที่ใช้กับโมเดลเชิงเส้นถดถอยตัวแยกประเภทและต้นไม้ตัดสินใจโดยเฉพาะ https://statweb.stanford.edu/~jhf/ftp/trebst.pdf

ฉันจะไม่เข้าไปดูรายละเอียดที่นี่ มันเป็นเพียงการอ่านที่ดีที่ครอบคลุมประเภทการสูญเสีย (L) และนอกจากแนวคิดที่มีความสำคัญหลากหลาย ของหลักสูตรนี้เป็นเอกสารสำคัญของการใช้วิธีการสืบเชื้อสายในพื้นที่ของฟังก์ชั่น (แบบจำลองระดับต่ำ) มากกว่าพารามิเตอร์ในการแสวงหาการลดการสูญเสีย

หากคุณดูที่นี่: https://arxiv.org/pdf/1603.02754.pdf

คุณพบบทความสั้นคณิตศาสตร์สำหรับโมเดล XGBoost โดย Tianqi Chen และคณะ ตอนนี้มันกลายเป็นที่น่าสนใจ ความเบี่ยงเบนทางคณิตศาสตร์ของโมเดลนี้ในรูปแบบ GBM ของ Friedman คลาสสิกคือ:

  • Normalized (ลงโทษ) พารามิเตอร์ (และเราจำได้ว่าพารามิเตอร์ใน boossting คือฟังก์ชันต้นไม้หรือโมเดลเชิงเส้น): L1 และ L2 พร้อมใช้งาน

ป้อนคำอธิบายรูปภาพที่นี่

  • ใช้อนุพันธ์ที่สองเพื่อเร่งกระบวนการ (ถ้าใช้ก่อนโปรดแก้ไขให้ถูกต้อง)

มาถึงจุดนี้: ดูที่นี่เพื่อค้นหาการใช้งานการสูญเสียควอไทล์ใน CATBoost ซึ่งมีประโยชน์และให้ทั้งอนุพันธ์อันดับหนึ่งและสอง: https://github.com/catboost/catboost/blob/master/catboost/libs/algo/ error_functions.h

class TQuantileError : public IDerCalcer<TQuantileError, /*StoreExpApproxParam*/ false> { public:
    const double QUANTILE_DER2 = 0.0;

    double Alpha;
    SAVELOAD(Alpha);

    explicit TQuantileError(bool storeExpApprox)
        : Alpha(0.5)
    {
        CB_ENSURE(storeExpApprox == StoreExpApprox, "Approx format does not match");
    }

    TQuantileError(double alpha, bool storeExpApprox)
        : Alpha(alpha)
    {
        Y_ASSERT(Alpha > -1e-6 && Alpha < 1.0 + 1e-6);
        CB_ENSURE(storeExpApprox == StoreExpApprox, "Approx format does not match");
    }

    double CalcDer(double approx, float target) const {
        return (target - approx > 0) ? Alpha : -(1 - Alpha);
    }

    double CalcDer2(double = 0, float = 0) const {
        return QUANTILE_DER2;
    } };

แม้ว่าคุณจะไม่พบฟังก์ชันการสูญเสีย L1 ที่มีประโยชน์นี้ใน XGBoost คุณสามารถลองเปรียบเทียบการใช้งานของ Yandex กับฟังก์ชั่นการสูญเสียที่กำหนดเองที่เขียนขึ้นสำหรับ XGB

  • นอกจากนี้ CATBoost ยังทำงานได้อย่างยอดเยี่ยมด้วยฟีเจอร์ที่จัดหมวดหมู่ในขณะที่ XGBoost รับเฉพาะอินพุตที่เป็นตัวเลขเท่านั้น

พิจารณาลิงค์นี้: https://tech.yandex.com/catboost/doc/dg/concepts/algorithm-main-stages_cat-to-numberic-docpage/#algorithm-main-stages_cat-to-numberic

พวกเขาเสนอวิธีที่หลากหลายในการป้อนฟีเจอร์ที่เป็นหมวดหมู่ให้กับการฝึกอบรมแบบจำลองโดยใช้วิธีการแบบเก่าและที่รู้จักกันดี การลดขนาดของพื้นที่อินพุตโดยไม่สูญเสียข้อมูลมากเป็นหนึ่งในสาเหตุที่เป็นไปได้รุ่นที่ติดตั้งจะติดตั้งน้อยเกินไป

ฉันเสร็จแล้ว. ฉันไม่ใช้ LightGBM ดังนั้นจึงไม่สามารถกำจัดแสงใด ๆ


5
ฉันสงสัยว่าทำไมบางคนถึงลงคำตอบโดยไม่ให้คำตอบที่ดีกว่า ยินดีต้อนรับบนเวทีเพื่อให้ข้อมูลใด ๆ นอกเหนือจากการทำ downvoting นิรนามครับ
Alexey พูดว่า Reinstate Monica ใน

มันตอบสนองกับคำถามของฉันสำหรับ catboost คุณมีสื่อเสริมสำหรับ LightGBM, XGBoost และ GBM หรือไม่?
Metariat

ใช่ฉันจะตอบคำตอบของฉัน คุณรับมือกับคณิตศาสตร์อย่างหนักหรือต้องการคำอธิบายที่เข้าใจง่ายหรือไม่?
Alexey พูดว่า Reinstate Monica

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

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