iPAS AI 應用規劃師 中級 科目三 機器學習技術與應用

XGBoost 相較於傳統 GBDT 有哪些技術改進?

原題 18

下列何者最能同時反映 XGBoost(eXtreme Gradient Boosting)相較於傳統梯度提升決策樹(Gradient Boosting Decision Tree, GBDT)的主要技術改進?

白話

XGBoost 是一種在傳統梯度提升決策樹(GBDT)基礎上改進的機器學習方法,在許多競賽和實務場景中都有很好的表現。

題目要問的是:XGBoost 和傳統 GBDT 相比,最核心的技術改進是哪些?

問你:XGBoost 相較於傳統 GBDT 最主要的技術改進是什麼?

點選你的答案。

01 總結

一句話總結

XGBoost 相較於傳統 GBDT 的核心改進是:在損失函數中加入正則化項抑制過擬合,同時支援缺失值自動處理,以及透過近似分割演算法實現並行化訓練,大幅提升了速度和泛化能力

02 情境

先感受問題:傳統 GBDT 有什麼瓶頸?

「元和數據」的 ML 工程師小凱參加 Kaggle 信用風險預測競賽。他用傳統 GBDT 訓練,遇到幾個問題:

  • 資料中有大量缺失值(客戶的部分財務欄位沒填),要花很多時間預處理。
  • 模型訓練很慢,1000 棵樹要跑好幾小時,無法快速迭代。
  • 驗證集和訓練集的誤差差距很大,過擬合嚴重,但調正則化很麻煩。

切換到 XGBoost 之後,這三個問題都大幅改善:缺失值自動處理、並行化讓訓練快了 10 倍、正則化直接內建在目標函數裡。最後排名也從前 40% 衝進前 5%。

03 對照

傳統 GBDT 的主要限制

  1. 沒有內建正則化:傳統 GBDT 的目標函數只包含損失(loss),沒有正則化項,容易過擬合,需要外部調參(如限制樹深、設定最小樣本數)來間接控制複雜度。
  2. 無法自動處理缺失值:傳統 GBDT 不能直接處理缺失值,需要工程師手動填補(均值填補、前向填補等),增加前處理複雜度。
  3. 訓練速度慢(無法並行):Boosting 的樹是「序列」建立的(第 N+1 棵樹依賴第 N 棵的殘差),但樹內部的分割點搜尋本身是可以並行的,傳統 GBDT 沒有充分利用這一點。
  4. 記憶體效率低:傳統實作將整份資料常駐記憶體,大型資料集訓練時可能超出可用記憶體。
  5. 分割點搜尋效率低:傳統方法對每個特徵的每個可能分割點都精確計算,計算成本隨特徵數和樣本數線性增長。
04 解法

XGBoost 的三大核心改進

小凱換用 XGBoost 後的三個主要改進:

改進一:正則化目標函數。XGBoost 把正則化項(L1 或 L2)直接加進目標函數,不是靠超參數間接控制,讓模型在訓練時自動權衡「擬合好」和「不過複雜」,泛化能力更強。

改進二:缺失值自動處理。XGBoost 對每個特徵學習一個「缺失值應往左節點還是右節點」的預設分配方向,讓缺失值在樹分割時自動找到最好的去處,不需要手動填補。

改進三:並行化訓練。雖然 Boosting 的樹序列建立無法並行,但 XGBoost 的樹內部分割點搜尋(Near-exact Greedy Algorithm)採用近似直方圖法,讓不同特徵的最優分割點可以並行計算,大幅加速訓練。

這就是選項 A 講的:引入正則化項以抑制過擬合,並支援缺失值自動處理與並行化訓練

技術版:XGBoost 的技術架構與在集成學習中的位置

XGBoost(eXtreme Gradient Boosting)由陳天奇(Tianqi Chen)在 2016 年提出,是梯度提升框架的系統化工程優化版本。

在 AI 領域的位置:XGBoost 屬於集成學習(Ensemble Learning)的 Boosting 分支,和 Random Forest(Bagging 分支)並列為結構化資料(表格型資料)的主流解法。在深度學習大行其道的今天,XGBoost 在結構化資料競賽中仍然是最常用的模型之一。

和 GBDT 的根本差異(三點):

  • 目標函數:GBDT 用一階泰勒展開近似損失,XGBoost 用二階泰勒展開,讓梯度資訊更精確。
  • 正則化:XGBoost 在目標函數加入 L1/L2 正則化項,直接控制每棵樹的葉節點權重,是 GBDT 沒有的設計。
  • 系統優化:XGBoost 針對稀疏特徵(Sparse Aware)、CPU 快取利用(Cache-aware)、外存計算(Out-of-core)等工程面做了大量優化,讓它在大規模資料上比傳統 GBDT 快 10 倍以上。

為什麼出題者要考這題:XGBoost 是實務上最常用的 ML 工具之一,也是結構化資料的代表性演算法。能否區分 XGBoost 和其他方法(Random Forest、Neural Network),反映應試者對集成學習各分支的掌握程度。

05 陷阱

為什麼其他選項是錯的

B改以隨機森林架構取代樹模型以提升準確率

字面在說什麼

隨機森林(Random Forest)是另一種集成學習方法,準確率通常也很高。

為什麼不對

XGBoost 仍然使用決策樹(CART)作為弱學習器,並未改用隨機森林架構。而且隨機森林和 GBDT 是不同的集成策略:隨機森林用 Bagging(並行建多棵獨立的樹),GBDT 和 XGBoost 用 Boosting(序列建樹,每棵樹修正前一棵的殘差)。XGBoost 是 GBDT 的改進,不是替換成隨機森林。

誰會選錯

把「集成學習的改進」自動聯想到「換更好的集成架構」的人,把 Bagging 和 Boosting 混為一談。XGBoost 的改進是在 Boosting 框架內的工程優化,不是換一套完全不同的集成策略。

C以類神經網路取代弱分類器

字面在說什麼

如果把 GBDT 裡的弱學習器(決策樹)換成神經網路,效果是否更強?

為什麼不對

XGBoost 的弱學習器仍然是決策樹(CART),不是神經網路。XGBoost 的改進方向是讓決策樹的組合效果更強、更快、更不過擬合,不是引入完全不同類型的學習器。把 Boosting 的弱學習器換成神經網路是一個不同的研究方向,不是 XGBoost 的改進。

誰會選錯

認為「深度學習永遠更好,所以改進一定是加入神經網路」的人。在結構化資料上,XGBoost 的決策樹組合往往比神經網路效果更好,XGBoost 的改進不需要、也不應該引入神經網路。

D採用批次正規化技術提升模型穩定性

字面在說什麼

批次正規化(Batch Normalization)是深度學習中穩定訓練、加速收斂的常用技術。

為什麼不對

批次正規化是深度神經網路的技術,適用於連續層激活值的分布標準化,和 XGBoost 這種決策樹集成方法完全沒有關聯。XGBoost 的「正規化」是損失函數中的正則化項(限制葉節點數量和葉節點權重),不是批次正規化。兩個詞都有「正規化」但意義完全不同。

誰會選錯

把「批次正規化(Batch Normalization)」和「正則化(Regularization)」混淆的人。前者是深度學習的訓練穩定化技術,後者是控制模型複雜度的懲罰項,雖然名稱相似,但屬於完全不同的概念。

06 變形

同個考點下次怎麼變形

變形 1

XGBoost 和 LightGBM 有什麼差別?

直覺

競賽上有時用 XGBoost,有時用 LightGBM,兩者是什麼關係?

答案

LightGBM(Light Gradient Boosting Machine,微軟開發)是 XGBoost 的進一步改進,引入了「Leaf-wise 樹生長策略」(XGBoost 用 Level-wise),以及「Gradient-based One-Side Sampling(GOSS)」和「Exclusive Feature Bundling(EFB)」技術,讓大資料集上的訓練速度和記憶體效率都進一步提升。LightGBM 通常比 XGBoost 更快,但在較小資料集上差異不大。

變形 2

Boosting 和 Bagging 的根本差異是什麼?

直覺

XGBoost(Boosting)和 Random Forest(Bagging)都是集成學習,差在哪?

答案

Bagging(如 Random Forest):並行建多棵獨立的樹,每棵樹用隨機抽樣的子資料集訓練,最後用投票或平均。主要解決高方差(過擬合)問題。Boosting(如 XGBoost):序列建樹,每棵樹專注修正前面樹的錯誤,最後加權組合。主要解決高偏差(欠擬合)問題,但如果樹太深也容易過擬合。

變形 3

為什麼 XGBoost 在結構化資料比深度學習表現好?

直覺

深度學習不是在所有任務上都更好嗎?

答案

深度學習在圖像、語音、文字等非結構化資料上表現優異,但結構化資料(表格型)有幾個特殊性:特徵往往不多、存在大量類別型特徵、資料集通常不如圖像資料大。XGBoost 的決策樹本身就非常適合處理類別型特徵和缺失值,不需要 Embedding 或特殊處理;而且訓練時間短,容易解釋(特徵重要性),在實務中的工程成本更低。

變形 4

XGBoost 的「正則化項」如何控制過擬合?

直覺

正則化放在損失函數裡,具體是懲罰什麼?

答案

XGBoost 的目標函數 = 損失 + 正則化項,其中正則化項懲罰:(1) 樹的葉節點數量(γ × 葉節點數),讓模型傾向簡單的樹;(2) 葉節點權重的 L2 範數(½λ × 權重平方和),防止個別葉節點的預測值過大。這比傳統 GBDT 靠「限制最大深度」這種間接方式更精確,也更容易通過調超參數 γ 和 λ 來控制泛化。

變形 5

XGBoost 怎麼處理缺失值?這比手動填補好在哪?

直覺

缺失值自動處理是黑魔法嗎?為什麼比均值填補更好?

答案

XGBoost 在建樹時,對缺失值樣本學習「預設分割方向」(Sparsity-aware Split Finding):在每個特徵的每個分割點,同時計算缺失值樣本去左節點還是右節點的增益,選增益更大的方向作為預設方向。好處:均值填補會引入假設(缺失是隨機的),而 XGBoost 的方法讓模型自己從資料中學習缺失值的含義,不引入人工假設,且不需要訓練前的前處理步驟。

07 延伸

想再往下看,這 5 個

  • 極端梯度提升(XGBoost)本題核心,在 GBDT 基礎上加入正則化、缺失值自動處理、並行化等改進,是結構化資料競賽的代表性工具。
  • 梯度提升法(Gradient Boosting)XGBoost 的基礎架構,序列建立決策樹,每棵樹修正前一棵的殘差,理解 GBDT 是理解 XGBoost 改進點的前提。
  • 正則化(Regularization)XGBoost 最重要的改進之一,將 L1/L2 懲罰項直接加入目標函數,是 GBDT 沒有的設計,有效控制過擬合。
  • 集成學習(Ensemble Learning)XGBoost 和 Random Forest 都屬於集成學習,前者是 Boosting 分支,後者是 Bagging 分支,理解兩個分支的差異是本題的背景知識。
  • 決策樹(Decision Tree)XGBoost 的弱學習器,CART 決策樹是 XGBoost 每一輪 Boosting 迭代中建立的基本模型,理解決策樹的分割機制有助於理解 XGBoost 的優化。
出處

iPAS 經濟部產業人才能力鑑定 ・ 114 年第二梯次 iPAS AI 應用規劃師 中級 科目三 機器學習技術與應用 第 18 題

查看官方原文 PDF