banner
Fight4354

Fight4354

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

XGBoost 中二階泰勒展開與 CART 分裂機制:從數學到直覺的完整理解

本文系統總結了 XGBoost 中二階泰勒展開、梯度 / 海森矩陣、CART 回歸樹以及分裂增益(Gain) 的核心思想,重點解決三個常見困惑:

  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):Hessian 矩陣(二階偏導數組成,描述曲率)

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

每一個樣本而言:

  • 自變量只有一個:預測值 y^i\hat{y}_i

  • 因此:

    • 梯度 gig_i:標量

    • Hessian 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:一棵 CART 回歸樹

  • 每個樣本最終落在某個葉子上,得到一個數值修正


五、XGBoost 的核心差異:顯式複雜度正則化#

1. 傳統 GBDT 的問題#

傳統 GBDT 在分裂時:

  • 只看 loss 是否下降

  • 不考慮樹是否已經 “過複雜”

  • 複雜度控制依賴人為規則(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:每增加一個葉子,需要付出的結構成本

  • λ\lambda:葉子權重的 L2 正則,防止輸出過大

👉 模型複雜度被直接寫進目標函數


六、分裂增益(Gain)的直覺與公式含義#

1. 分裂決策的本質#

XGBoost 每次分裂都在問:

分裂帶來的收益 − 分裂帶來的代價,是否為正?


2. Gain 的意義(不看公式也能懂)#

  • 左右子節點擬合得更好 → 收益

  • 多一個葉子 → 成本(γ)

  • 如果收益 ≤ 成本 → 不分裂


3. 為什麼傳統 GBDT 寫不出 Gain#

因為它:

  • 沒有 “分裂成本” 的數學定義

  • 只能做 “是否降 loss” 的局部判斷

  • 無法統一成 收益 − 成本 的公式


七、一个关键的直觉总结#

XGBoost 並不是更激進,而是更會 “算帳”

  • 傳統 GBDT:
    只要誤差降,就繼續分

  • XGBoost:
    誤差降得值不值得這個複雜度?


八、終極一句話總結#

XGBoost 的核心創新不在 “樹”,而在 “把二階信息和模型複雜度寫進同一個優化目標”

二階泰勒展開提供了可計算的收益,
正則項提供了明確的成本,
CART 結構讓這一切可以被高效實現。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。