本文系統總結了 XGBoost 中二階泰勒展開、梯度 / 海森矩陣、CART 回歸樹以及分裂增益(Gain) 的核心思想,重點解決三個常見困惑:
-
二階泰勒展開在 XGBoost 中到底在做什麼
-
多元泰勒公式中的線性代數符號(如轉置)是什麼意思
-
XGBoost 與傳統 GBDT 在 “分裂決策” 上的本質差異
一、泰勒展開的基本思想#
1. 一維泰勒展開#
泰勒展開用於在某一點附近,用多項式近似一個函數:
-
一階項:描述函數的變化方向
-
二階項:描述函數的彎曲程度(曲率)
-
高階項:提高精度,但計算成本高
在機器學習優化中,通常只保留到二階。
二、多元函數的二階泰勒展開(為 XGBoost 鋪墊)#
對於多元函數 ,其中 ,在點 附近的二階泰勒展開為:
各項含義說明#
-
:梯度向量(一階偏導數組成,列向量)
-
:Hessian 矩陣(二階偏導數組成,描述曲率)
-
:轉置符號,用於保證矩陣乘法維度正確
為什麼有轉置 $T$#
梯度和位移向量都是列向量,直接相乘不合法;
轉置後形成 內積(點積),結果是一個標量:
三、XGBoost 中 “多元 → 一維” 的簡化#
在 XGBoost 中,損失函數是:
對每一個樣本而言:
-
自變量只有一個:預測值
-
因此:
-
梯度 :標量
-
Hessian :標量
-
二階泰勒展開自然退化為:
這就是 XGBoost 中常見的 “逐樣本一維二階展開”。
四、CART 回歸樹在 XGBoost 中的角色#
1. CART 是什麼#
CART(Classification And Regression Tree)是:
-
嚴格的二叉樹
-
每個葉子輸出一個常數值
-
可用於分類和回歸
XGBoost 使用的是 CART 回歸樹,即使是分類任務。
2. XGBoost 的模型形式#
-
每個 :一棵 CART 回歸樹
-
每個樣本最終落在某個葉子上,得到一個數值修正
五、XGBoost 的核心差異:顯式複雜度正則化#
1. 傳統 GBDT 的問題#
傳統 GBDT 在分裂時:
-
只看 loss 是否下降
-
不考慮樹是否已經 “過複雜”
-
複雜度控制依賴人為規則(max_depth 等)
2. XGBoost 的目標函數#
其中正則項為:
含義:
-
:每增加一個葉子,需要付出的結構成本
-
:葉子權重的 L2 正則,防止輸出過大
👉 模型複雜度被直接寫進目標函數
六、分裂增益(Gain)的直覺與公式含義#
1. 分裂決策的本質#
XGBoost 每次分裂都在問:
分裂帶來的收益 − 分裂帶來的代價,是否為正?
2. Gain 的意義(不看公式也能懂)#
-
左右子節點擬合得更好 → 收益
-
多一個葉子 → 成本(γ)
-
如果收益 ≤ 成本 → 不分裂
3. 為什麼傳統 GBDT 寫不出 Gain#
因為它:
-
沒有 “分裂成本” 的數學定義
-
只能做 “是否降 loss” 的局部判斷
-
無法統一成 收益 − 成本 的公式
七、一个关键的直觉总结#
XGBoost 並不是更激進,而是更會 “算帳”
-
傳統 GBDT:
只要誤差降,就繼續分 -
XGBoost:
誤差降得值不值得這個複雜度?
八、終極一句話總結#
XGBoost 的核心創新不在 “樹”,而在 “把二階信息和模型複雜度寫進同一個優化目標”。
二階泰勒展開提供了可計算的收益,
正則項提供了明確的成本,
CART 結構讓這一切可以被高效實現。