本篇文章主要介紹下Xgboost算法的原理和公式推導。關於XGB的一些應用場景在此就不贅述了,感興趣的同學可以自行google。下面開始:
1.模型構建
構建最優模型的方法一般是最小化訓練數據的損失函數,用L表示Loss Function(),F是假設空間:
上述(1)式就是俗稱的經驗風險最小化,當訓練數據集較小時,很容易過擬合,所以一般需要加入正則項來降低模型的復雜度。
其中的J(f)為控制模型復雜度,式(2)稱為結構風險最小化。
決策樹的生成和剪枝分別對應了經驗風險最小化和結構風險最小化。XGB決策樹在生成過程中,即是結構風險最小化的結果。
2.Boosting算法介紹
對於Boosting算法我們知道,是將多個弱分類器的結果結合起來作為最終的結果來進行輸出。對於回歸問題,假設
那么
3.XGBoost目標函數
通過最小化損失函數來構建最優模型,因此:
等式右邊第一部分是訓練誤差,中間是懲罰模型的復雜度(所有樹的復雜度之和)該項中包含了兩個部分,一個是葉子結點的總數,一個是葉子結點得到的L2正則化項。這個額外的正則化項能夠平滑每個葉節點的學習權重來避免過擬合。直觀地,正則化的目標將傾向於選擇采用簡單的模型。當正則化參數為零時,這個函數就變為傳統的GBDT。
這里(5)結合(4)再進行泰勒展開,
l表示前t-1棵樹組成的學習模型的預測誤差,gi、hi分別表示預測誤差對當前模型的一階導和二階導 ,當前模型往預測誤差減小的方向進行迭代。
對於f(x),需要明確對於一棵樹,由兩部分來確定,一是樹的結構,這個結構將輸入樣本映射到確定的葉子節點上,記為$$q(x)$$,第二部分是各個葉子節點的值,也就是權重,記為$$w_{q(x)}$$。所以(6)式中,
從上圖中可以很好的明確q和w的含義。
4.樹的復雜度定義
Xgboost包含多棵樹,定義每棵樹的復雜度:
其中T為葉子節點的個數,||w||為葉子節點向量的模 。γ表示節點切分的難度,λ表示L2正則化系數。
那么對於整棵樹復雜度的定義:
如圖可以算出當前樹的復雜度$$\Omega$$,同時,定義屬於葉子結點j 的樣本集合為$$I_{j}$$:
5.目標函數推導
根據(6)式:
其中$$l(y_i,\hat{y}^{t-1})$$是常數,代入(7),(8)式和$$I_{j}$$並忽略常數項,得:
令
Gj 表示映射為葉子節點 j 的所有輸入樣本的一階導之和,同理,Hj表示二階導之和。則(11)式為:
對於第 t 棵C樹的某一個確定結構(可用q(x)表示),其葉子節點是相互獨立的,Gj和Hj是確定量,因此,(12)可以看成是關於葉子節點的一元二次函數 。最小化(12)式即二次函數通過一階導得0求極值,得參數w的估計:
代入到(12)式得到最終的目標函數:
上式也稱為打分函數(scoring function),它是衡量樹結構好壞的標准,值越小,代表這樣的結構越好 。我們用打分函數選擇最佳切分點,從而構建一棵CART樹。
6.尋找分割點的貪心算法
對於每一個葉結點,根據增益分裂結點。增益的定義 :
這個公式通常被用於評估分割候選集(選擇最優分割點),其中前兩項分別是切分后左右子樹的的分支之和,第三項是未切分前該父節點的分數值,最后一項是引入額外的葉子節點導致的復雜度。
這里有一個問題,在分裂結點的時候,如何找到該次分裂最佳的分割點呢。實現方法是:遍歷所有特征,對每個特征將樣本按這個特征排好序,從左向右,依次遍歷。每次遍歷,向左邊加入一個結點,向右邊減掉這個結點,然后計算此時的gaingain。最后選擇gaingain最大的特征的最佳分割點作為該次分裂的分割點。
所以時間復雜度:O(nlogndk)。對於每一層,需要nlogn的時間去對特征值進行排序,假設有d個特征,樹的層數為k層。
7.XGBoost與GDBT的區別
- GBDT以CART為基分類器,XGB則支持多種分類器,可以通過booster[default=gbtree]設置參數:gbtree:tree-based models;gblinear:linear models。
- GBDT只用到了一階導數信息,xgboost則對代價函數進行了二階泰勒展開,同時用到了一階與二階導數,並且可以自定義代價函數,只要一階二階可導。
- XGBoost與GDBT都是逐次迭代來提高模型性能,但是XGBoost在選取最佳切分點時可以開啟多線程進行,大大提高了運行速度。(也就是可並行)
- 新增了Shrinkage和column subsampling,為了防止過擬合。
- 對缺失值有自動分裂處理(默認歸於左子樹)。
- xgb生成樹時,考慮了樹的復雜度 -- 預剪枝。
GBDT是在生成完后才考慮復雜度的懲罰 -- 后剪枝。(個人理解)
參考資料:
https://blog.csdn.net/yinyu19950811/article/details/81079192
陳天奇大神-https://www.kdd.org/kdd2016/papers/files/rfp0697-chenAemb.pdf
https://blog.csdn.net/shitaixiaoniu/article/details/53161348
https://baijiahao.baidu.com/s?id=1620689507114988717&wfr=spider&for=pc