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