banner
Fight4354

Fight4354

AI,Chem,Science,Study,Share,Hobby,LLM,Life,Sport

XGBoost における二階テイラー展開と CART 分割メカニズム:数学から直感への完全な理解

本文システムは XGBoost における二次テイラー展開、勾配 / ヘッセ行列、CART 回帰木および分裂利益(Gain) の核心思想をまとめ、3 つの一般的な混乱を解決することに重点を置いています:

  1. 二次テイラー展開は XGBoost で何をしているのか

  2. 多変数テイラー公式における線形代数記号(転置など)の意味

  3. XGBoost と従来の GBDT の「分裂決定」における本質的な違い


一、テイラー展開の基本思想#

1. 一次元テイラー展開#

テイラー展開は、ある点の近くで関数を多項式で近似するために使用されます:

f(x)=f(x0)+f(x0)(xx0)+f(x0)2!(xx0)2+f(3)(x0)3!(xx0)3+f(x) = f(x_0) + f'(x_0)(x-x_0) + \frac{f''(x_0)}{2!}(x-x_0)^2 + \frac{f^{(3)}(x_0)}{3!}(x-x_0)^3 + \cdots
  • 一次項:関数の変化方向を記述

  • 二次項:関数の ** 曲がり具合(曲率)** を記述

  • 高次項:精度を向上させるが、計算コストが高い

機械学習の最適化においては、通常は二次までを保持します


二、多変数関数の二次テイラー展開(XGBoost の基礎)#

多変数関数 f(x)f(x) に対して、xRdx \in \mathbb{R}^d の場合、点 x0x_0 の近くでの二次テイラー展開は次のようになります:

f(x)f(x0)+f(x0)T(xx0)+12(xx0)TH(x0)(xx0)f(x) \approx f(x_0) + \nabla f(x_0)^T (x - x_0) + \frac{1}{2}(x - x_0)^T H(x_0)(x - x_0)

各項の意味#

  • f(x0)\nabla f(x_0):勾配ベクトル(一階偏導数から構成される列ベクトル)

  • H(x0)H(x_0):ヘッセ行列(二階偏導数から構成され、曲率を記述)

  • TT:転置記号、行列の乗算の次元を正しく保つために使用

なぜ転置 $T$ があるのか#

勾配と変位ベクトルはどちらも列ベクトルであり、直接掛け算することはできません;
転置することで 内積(ドット積) が形成され、結果はスカラーになります:

f(x0)T(xx0)=k=1dfxk(x0)(xkx0,k)\nabla f(x_0)^T (x-x_0) = \sum_{k=1}^d \frac{\partial f}{\partial x_k}(x_0)(x_k-x_{0,k})

三、XGBoost における「多変数 → 一次元」の簡略化#

XGBoost では、損失関数は次のようになります:

l(yi,y^i)l(y_i, \hat{y}_i)

各サンプルに対して:

  • 独立変数は 1 つだけ:予測値 y^i\hat{y}_i

  • したがって:

    • 勾配 gig_i:スカラー

    • ヘッセ行列 hih_i:スカラー

二次テイラー展開は自然に次のように退化します:

l(yi,y^i+Δ)l(yi,y^i)+giΔ+12hiΔ2l(y_i, \hat{y}_i + \Delta) \approx l(y_i, \hat{y}_i) + g_i \Delta + \frac{1}{2} h_i \Delta^2

これが XGBoost でよく見られる「サンプルごとの一次元二次展開」です。


四、CART 回帰木の XGBoost における役割#

1. CART とは#

CART(Classification And Regression Tree)は:

  • 厳密な二分木

  • 各葉は定数値を出力

  • 分類と回帰の両方に使用可能

XGBoost が使用するのは CART 回帰木であり、分類タスクであってもです。


2. XGBoost のモデル形式#

y^i=t=1Tft(xi)\hat{y}_i = \sum_{t=1}^{T} f_t(x_i)
  • ftf_t:1 本の CART 回帰木

  • 各サンプルは最終的にある葉に落ち着き、数値的な修正を得ます


五、XGBoost の核心的な違い:明示的な複雑度正則化#

1. 従来の GBDT の問題#

従来の GBDT は分裂時に:

  • 損失が減少するかどうかだけを見ます

  • 木が「過度に複雑」になっているかどうかは考慮しません

  • 複雑度の制御は人為的なルール(max_depth など)に依存します


2. XGBoost の目的関数#

Obj=il(yi,y^i)+Ω(f)\mathcal{Obj} = \sum_i l(y_i, \hat{y}_i) + \Omega(f)

ここで正則項は:

Ω(f)=γT+12λjwj2\Omega(f) = \gamma T + \frac{1}{2}\lambda \sum_j w_j^2

意味:

  • γ\gamma:葉を 1 つ増やすごとに必要な構造コスト

  • λ\lambda:葉の重みの L2 正則化、出力が大きくなりすぎないように防止

👉 モデルの複雑度が直接目的関数に書き込まれています


六、分裂利益(Gain)の直感と公式の意味#

1. 分裂決定の本質#

XGBoost は毎回の分裂で次のことを尋ねます:

分裂による利益 − 分裂によるコストは正か?


2. Gain の意味(公式を見なくても理解できる)#

  • 左右の子ノードがより良くフィットする → 利益

  • 1 つの葉が増える → コスト(γ)

  • 利益 ≤ コスト の場合 → 分裂しない


3. なぜ従来の GBDT は Gain を表現できないのか#

それは:

  • 「分裂コスト」の数学的定義がないため

  • 「損失が減少するかどうか」の局所的判断しかできないため

  • 利益 − コスト の公式に統一できないため


七、重要な直感のまとめ#

XGBoost はより過激ではなく、より「計算をする」ことが得意です

  • 従来の GBDT:
    誤差が減る限り、分裂を続ける

  • XGBoost:
    誤差が減ることはこの複雑度に見合うのか?


八、究極の一言まとめ#

XGBoost の核心的な革新は「木」ではなく、「二次情報とモデルの複雑度を同じ最適化目標に書き込むこと」です
二次テイラー展開は計算可能な利益を提供し、
正則項は明確なコストを提供し、
CART 構造はこれを効率的に実現します。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。