GBM、XGBoost、LightGBM、CatBoostの数学的な違いは?


33

以下のようなモデルのGBDTファミリの実装がいくつか存在します。

  • GBM
  • XGBoost
  • LightGBM
  • キャットブースト。

これらの異なる実装の数学的違いは何ですか?

Catboostは、このベンチマークに従ってデフォルトパラメータのみを使用しても、他の実装よりも優れているようですが、それでも非常に遅いです。

私の推測では、catboostはダミー変数を使用しないため、各(カテゴリ)変数に与えられた重みは他の実装と比較してよりバランスが取れているため、高カーディナリティー変数は他の変数よりも重みがありません。弱いカテゴリカル(低カーディナリティ)が一部のツリーに入ることができるため、パフォーマンスが向上します。それ以外は、これ以上の説明はありません。


参照されるベンチマークはyandex / 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

CATBoostの数学的な一意性について、Yandexチームが発表したこの英語の論文をご覧ください。

私はそれを簡単に読み、そしていくつかのもののうち、私は、彼らが上で得られた残差を使用していないという事実だったすぐに理解できるTRAINを行うためTRAINをこれらの残差が学習の質の楽観バイアスを作成しているので、。(更新:このノベルティは、過剰適合と戦う方法をもたらします。これは、アルゴリズムが、カテゴリ変数を前処理するさまざまな方法とは別に、類似物と比較してよりうまく機能した理由の1つです)。

具体的かつ完全な回答をしてくれないことを残念に思います。

GBM、XGBoostの数学的な違い

まず、線形回帰モデル、分類器、および決定木に特に適用される勾配ブースティングマシンに関するFriedmanの論文を読むことをお勧めします。https://statweb.stanford.edu/~jhf/ftp/trebst.pdf

ここでは詳しく説明しません。これは、さまざまなタイプの損失(L)をカバーし、変数の重要性の概念に加えて、良い読み物です。もちろん、これは、損失の最小化を追求するパラメーターではなく、関数の空間での降下法(低レベルモデル)の実装のマイルストーンペーパーです。

こちらをご覧くださいhttps : //arxiv.org/pdf/1603.02754.pdf

Tianqi ChenらによるXGBoostモデルの数学的ビネットを見つけました。今では面白くなっています。古典的なフリードマンのGBMからのこのモデルの数学的偏差は次のとおりです。

  • 正則化(ペナルティ化)パラメーター(およびブーストのパラメーターは関数、ツリー、または線形モデルであることを覚えています):L1およびL2が使用可能です。

ここに画像の説明を入力してください

  • 2次導関数を使用してプロセスを高速化します(以前に使用した場合は修正してください)。

この点まで:CATBoostの変位値損失の実装を見つけるにはこちらをご覧ください。これは便利で、1次および2次の派生物を提供します: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損失関数を見つけることはできませんが、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

従来のよく知られたワンホットアプローチの使用に加えて、カテゴリフィーチャをモデルトレーニングに提供するさまざまな方法を提供します。多くの情報を失うことなく入力空間の次元を小さくすることは、近似モデルの過剰適合が少ない理由の1つです。

出来ました。私はLightGBMを使用していないので、光を当てることはできません。


5
なぜ誰かがより良い答えを出さずに答えを落とすのだろうか?ステージへようこそ、匿名の投票を行うだけでなく、ご意見をお聞かせください。
アレクセイは、モニカを復活させる

catboostに対する私の質問に正確に応答します。LightGBM、XGBoost、GBMの補足資料はありますか?
-Metariat

はい、私は私の答えを魅了します。あなたは難しい数学にうまく対処していますか、むしろ直感的な説明を好みますか?
アレクセイは、モニカを復活させる

ありがとう、私は両方にうまく対処することができます、直感的な説明はすぐに得られ、数学的な詳細はより時間がかかりますが、さらなる理解/実装には非常に有益です。
-Metariat

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.