GBM, XGBoost, LightGBM, CatBoost arasındaki matematiksel farklar?


33

GBDT model ailesinin aşağıdaki gibi birkaç uygulaması vardır:

  • GBM
  • XGBoost
  • LightGBM
  • Catboost.

Bu farklı uygulamalar arasındaki matematiksel farklar nelerdir ?

Catboost, bu uygulama işaretine göre sadece varsayılan parametrelerini kullanarak bile diğer uygulamalardan daha iyi performans gösteriyor gibi görünüyor , ancak yine de çok yavaş.

Tahminime göre catboost, varsayılan değişkenleri kullanmıyor, bu yüzden her bir (kategorik) değişkene verilen ağırlık, diğer uygulamalara göre daha dengelidir, dolayısıyla yüksek kardinalite değişkenleri diğerlerinden daha fazla ağırlığa sahip değildir. Zayıf kategoriklerin (kardinalitesi düşük olan) bazı ağaçlara girmesini sağlar, dolayısıyla daha iyi performans sağlar. Bunun dışında başka bir açıklamam yok.


Referanslanan kriter yandex / catboost ekibi tarafından yapılır, bağımsız olana ihtiyacımız vardır.
mrgloom

Yanıtlar:


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 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.

görüntü tanımını buraya girin

  • 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.


5
Acaba neden birileri daha iyi bir cevap vermeden cevaptan vazgeçsin? İsimsiz bir aşağı oylama yapmanın ötesine herhangi bir girdi vermek için sahneye hoş geldiniz, efendim.
Alexey, Reinstate Monica’nın

katagoriye yönelik soruma tam olarak cevap veriyor. LightGBM, XGBoost ve GBM için ek materyaliniz var mı?
Metariat

Evet, cevabımı hatırlayacağım. Sert matematikle başa çıkabiliyor musunuz yoksa sezgisel açıklamaları mı tercih ediyorsunuz?
Alexey, Reinstate Monica’nın

Teşekkürler, ikisiyle de başa çıkabiliyorum, sezgisel anlatım daha hızlı ve matematiksel detaylar daha fazla zaman alıyor ancak daha fazla anlayış / uygulamalar için çok faydalı.
Metariat

1
Cevap zenginleştirildi.
Alexey diyor ki Reinstate Monica
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.