GBM, XGBoost, LightGBM, CatBoost के बीच गणितीय अंतर?


33

मॉडल के GBDT परिवार के कई कार्यान्वयन मौजूद हैं जैसे:

  • जीबीएम
  • XGBoost
  • LightGBM
  • Catboost।

इन विभिन्न कार्यान्वयनों के बीच गणितीय अंतर क्या हैं ?

कैटबॉस्ट इस बेंच मार्क के अनुसार केवल अपने डिफ़ॉल्ट मापदंडों का उपयोग करके अन्य कार्यान्वयन को बेहतर बनाने के लिए लगता है , लेकिन यह अभी भी बहुत धीमा है।

मेरा अनुमान है कि कैटबॉस्ट डम्मीफाइड वैरिएबल का उपयोग नहीं करता है, इसलिए प्रत्येक (कमोरियल) वैरिएबल को दिया गया वज़न अन्य इम्प्लीमेंटेशन की तुलना में अधिक संतुलित होता है, इसलिए हाई-कार्डिनैलिटी वैरिएबल का वज़न दूसरों की तुलना में अधिक नहीं होता है। यह कमजोर वर्गीकरण (कम कार्डिनलिटी के साथ) को कुछ पेड़ों में प्रवेश करने की अनुमति देता है, इसलिए बेहतर प्रदर्शन। इसके अलावा, मेरे पास और कोई स्पष्टीकरण नहीं है।


संदर्भित बेंचमार्क yandex / catboost टीम द्वारा है, हमें स्वतंत्र की आवश्यकता है।
मर्गलोम

जवाबों:


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

आप CATBoost गणितीय विशिष्टता के बारे में यैंडेक्स टीम से इस अंग्रेजी भाषा के पेपर को देखना चाहते हैं।

मैं इसे संक्षेप में पढ़ा है, और कुछ बातों के अलावा मैं जल्दी से समझ सकते हैं तथ्य यह है कि वे बच पर प्राप्त का उपयोग नहीं करते था TRAIN करने के लिए TRAIN , क्योंकि ये बच सीखने की गुणवत्ता के आशावादी पूर्वाग्रह पैदा करते हैं। ( अपडेट: यह नवीनता ओवरफिटिंग से लड़ने का एक तरीका है, जो कि एल्गोरिदम ने इसके एनालॉग्स की तुलना में बेहतर काम किया है, इसके अलावा विभिन्न प्रकारों से प्रीप्रोसेसरी वैरिएबल तक)।

मुझे आपको विशिष्ट और पूर्ण उत्तर न देने के लिए खेद है।

GBM, XGBoost के बीच गणितीय अंतर

पहले मैं सुझाव देता हूं कि आप फ्रीडमैन द्वारा ग्रैडिएंट बूस्टिंग मशीन के बारे में फ्राइडमैन द्वारा एक पेपर पढ़ें, जो कि विशेष रूप से रैखिक रेजिस्टर मॉडल, क्लासिफायर और निर्णय पेड़ों पर लागू होता है। https://statweb.stanford.edu/~jhf/ftp/trebst.pdf

मैं यहां विवरण में नहीं जाऊंगा। यह विभिन्न प्रकार के नुकसान (एल) को कवर करने और परिवर्तनीय महत्व की अवधारणा के अलावा सिर्फ एक अच्छा पढ़ा गया है। बेशक यह नुकसान को कम करने की दिशा में मापदंडों के बजाय फ़ंक्शंस (निम्न-स्तरीय मॉडल) के स्थान में एक वंश की विधि के कार्यान्वयन का एक मील का पत्थर कागज है।

अगर आप यहां देखें: https://arxiv.org/pdf/1603.02754.pdf

आप Tianqi चेन एट अल द्वारा XGBoost मॉडल के लिए एक गणितीय विगनेट पाते हैं। अब यह दिलचस्प हो गया। इस मॉडल के गणितीय विचलन की एक जोड़ी के रूप में क्लासिक फ्राइडमैन की जीबीएम हैं:

  • नियमित (दंडित) पैरामीटर (और हमें याद है कि बूस्टिंग में पैरामीटर फ़ंक्शन, पेड़ या रैखिक मॉडल हैं): 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;
    } };

जब आप XGBoost में इस उपयोगी L1 हानि फ़ंक्शन को नहीं ढूंढ सकते हैं, तो आप XGB के लिए लिखे गए कुछ कस्टम लॉस फ़ंक्शन के साथ Yandex के कार्यान्वयन की तुलना करने का प्रयास कर सकते हैं।

  • इसके अलावा, CATBoost श्रेणीबद्ध विशेषताओं के साथ उत्कृष्ट रूप से काम करता है, जबकि XGBoost केवल संख्यात्मक आदानों को स्वीकार करता है।

इस लिंक पर विचार करें: https://tech.yandex.com/catboost/doc/dg/congets/algorithm-main-stages_cat-to-numberic-docpage/#algorithm-main-cages-cat-to-numberic

वे पुराने और प्रसिद्ध एक-गर्म दृष्टिकोण का उपयोग करने के शीर्ष पर मॉडल प्रशिक्षण को श्रेणीबद्ध विशेषताओं को खिलाने के लिए कई तरह की पेशकश करते हैं। अधिक जानकारी खोए बिना एक इनपुट स्पेस के घटते आयाम संभव कारणों में से एक है जो फिट किए गए मॉडल से कम ओवरफीड हैं।

मैंने कर लिया है। मैं लाइट जीबीएम का उपयोग नहीं करता, इसलिए इस पर कोई प्रकाश नहीं डाल सकता।


5
मुझे आश्चर्य है कि कोई बेहतर उत्तर दिए बिना किसी उत्तर को क्यों रद्द कर देगा? अनाम downvoting, सर करने से परे किसी भी इनपुट देने के लिए मंच पर आपका स्वागत है।
एलेक्सी का कहना है कि मोनिका

यह कैटबॉस्ट के लिए मेरे सवाल का सटीक जवाब देता है। क्या आपके पास LightGBM, XGBoost, और GBM के लिए कोई पूरक सामग्री है?
मेटारिएट

हां, मैं अपने उत्तर पर ध्यान दूंगा। क्या आप कठिन गणित का अच्छी तरह से सामना करते हैं या सहज ज्ञान युक्त स्पष्टीकरण पसंद करते हैं?
एलेक्सी का कहना है कि मोनिका

धन्यवाद, मैं दोनों के साथ अच्छी तरह से सामना कर सकता हूं, सहज स्पष्टीकरण प्राप्त करने के लिए तेज है, और गणितीय विवरण में अधिक समय लगता है लेकिन आगे की समझ / कार्यान्वयन के लिए बहुत ही लाभदायक है।
मेटेरियट

1
उत्तर समृद्ध हुआ।
एलेक्सी का कहना है कि 12
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.