目標函數: [公式]

其中正則項: [公式] ,包含了輸出值

正則項一般用來表徵演算法的複雜程度,那演算法的輸出值和演算法的負責程度有什麼關係?


xgboost的正則項包含兩個部分,L1正則和L2正則,問題裏只提到了L2正則。

L1正則和L2正則都是作用到演算法的「參數」上的,一般認為參數量越少,參數的值越小,模型的複雜度越低,方差越小,過擬合的風險就越低。前者是L1正則要達到的效果,後者是L2正則要達到的效果。

再稍微解釋下,為什麼參數越小,模型的過擬合風險越小。想像一下:y=x*w,輸出y是輸入數據x和參數w作用的結果,如果w中部分參數值很大,那麼x中對應部分的微小波動也可能引起輸出的較大波動,換句話說模型過度關注輸入數據中的局部,而這個局部有可能都不是我們想要模型關注的部分,而僅僅是因為訓練數據中的分佈或者雜訊造成的。

舉個例子,你想訓練個模型區分男女,在你的訓練樣本的某個子集中所有的男人都是短髮,所有的女人都是長發,最終「頭髮長短」這個特徵對應的w就可能很大,造成模型過度關注這一個特徵,那麼在預測階段,只要遇到長發就都判定為女人了。這是我們不希望看到的,因為我們知道很多男人也是會留長發。我們更希望模型各個方面的特徵都關注,綜合判斷,也就是讓對應每個特徵的w分配更均勻一點。

xgbosot中,加上L2正則後,葉節點的值w從 [公式] ,看到嗎? 分母變大了,也就是w的值變小了。

另外,問題中將w定義成演算法的輸出,但同時要明白,樹模型中,這個輸出也是模型的參數


前面高贊解釋了w變小了可以控制xgb過擬合,但沒說具體怎麼控制。w變小在線性回歸中很好理解,如果w過大會導致wx對x更敏感,即更容易過擬合。但xgb的w是葉子節點輸出值,並非線性回歸中特徵的權重w。

這裡需要把加法模型和過擬合結合起來,因為最後輸出是加上當前樹的輸出值,如果這棵樹的輸出值接近0,那麼這棵樹的輸出在模型最後輸出權重越小,即最後的輸出值受這棵樹的影響越小。想像一下假設這棵樹的輸出值就等於0,那麼當前最終的輸出值就是前n-1棵樹的輸出值和+0,那這棵樹跟沒學沒有什麼區別,也就是更不容易過擬合。也可以換句話說,輸出值更加保守,更不容易過擬合。

另外一點,控制w的參數λ越大越防止過擬合,可以從另一角度解釋:xgb有個參數gamma,含義是Gain-gamma&<0則剪枝,這裡Gain=G^2/(H+λ),也就是λ越大,Gain越小,gamma不變時小於0的子樹更多也更容易被剪,所以樹越簡單越不容易過擬合。


L2正則就是對可訓練參數的大小做約束,對xgb來說可訓練參數就是樹模型的輸出值(


為了防止葉節點取值過大,出現過擬合。


控制樹複雜度


樹模型本來就是函數空間的擬合(通過控制葉子結點的輸出值實現),而不是參數空間的擬合,葉子結點值的大小恰好是函數值的反映,通過限制葉子結點值可以限制擬合的程度。


推薦閱讀:
相關文章