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 ekibinden CATBoost'un matematiksel benzersizliği hakkındaki bu İngilizce makaleye bakmak istiyorsunuz.
Ben kısaca okuyun ve birkaç şeyler arasında hızla anlayabileceği onlar üzerinde elde edilen artıkların kullanmayın olmasıydı TREN yapmak TREN bu kalıntılar öğrenme kalitesinin iyimser önyargı oluşturmak beri,. ( Güncelleme: Bu yenilik, algoritmanın analoglara kıyasla daha iyi çalışmasının sebeplerinden biri olan aşırı kategoriye karşı savaşmanın bir yolunu ortaya çıkarır).
Size kesin ve kesin bir cevap vermediğim için özür dilerim.
GBM, XGBoost arasındaki matematiksel farklar
Öncelikle Friedman tarafından özellikle doğrusal regresör modellerine, sınıflandırıcılara ve karar ağaçlarına uygulanan Gradient Boost Machine hakkında bir makale okumanızı öneririm. https://statweb.stanford.edu/~jhf/ftp/trebst.pdf
Buradaki ayrıntılara girmem. Çeşitli kayıp tiplerini (L) kapsayan ve değişken önem kavramının yanı sıra sadece iyi bir okumadır. Elbette bu, kayıpların en aza indirilmesinin peşindeki parametreler yerine, işlevler alanındaki bir iniş yönteminin (düşük seviye modeller) uygulanmasının bir dönüm noktası kağıdıdır.
Buraya bakarsanız: https://arxiv.org/pdf/1603.02754.pdf
Tianqi Chen ve arkadaşlarının XGBoost modeli için matematiksel bir skeç buldun. Şimdi ilginçleşiyor. Bu modelin birkaç matematiksel sapması klasik Friedman'ın GBM'sini oluşturur:
- Düzenli (cezalandırılmış) parametreler (ve artırmadaki parametrelerin fonksiyon, ağaçlar veya doğrusal modeller olduğunu hatırlıyoruz): L1 ve L2 mevcuttur.
- Süreci hızlandırmak için ikinci türevlerin kullanılması (daha önce kullanılmışsa lütfen beni düzeltin).
Bu noktaya: kullanışlı ve hem birinci hem de ikinci türev sağlayan CATBoost'ta niceliksel bir kayıp uygulaması bulmak için buraya bakın: 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;
} };
Bu faydalı L1 kaybı işlevini XGBoost'ta bulamazken, Yandex'in uygulamasını XGB için yazılmış bazı özel kayıp işlevleriyle karşılaştırmayı deneyebilirsiniz.
- Ayrıca, CATBoost kategorik özelliklerle mükemmel çalışır, XGBoost ise sadece sayısal girdileri kabul eder.
Bu bağlantıyı düşünün: https://tech.yandex.com/catboost/doc/dg/concepts/algorithm-main-stages_cat-to-numberic-docpage/#algorithm-main-stages_cat-to-numberic
Eski ve iyi bilinen bir sıcak yaklaşımı kullanmanın yanı sıra, model eğitimine kategorik özellikler beslemek için çeşitli yollar sunarlar. Çok fazla bilgi kaybetmeden bir giriş alanının boyutlarını azaltmak, takılan modelin daha az giydirilmesinin olası nedenlerinden biridir.
Ben bittim LightGBM kullanmıyorum, bu yüzden üzerinde herhangi bir ışık tutamıyor.