XGBoost的模型複雜度是由葉子節點個數和葉子節點值大小組成,葉子節點個數好理解,模型越複雜葉子節點個數自然就越多,但是葉子節點的值有點難理解,只能說葉子節點值越大,整個集成模型依靠這個若分類器的權重就越大


這和線性回歸以及邏輯回歸的原理是非常類似的,xgb最終的決策就是w1x1+w2x2+......wnxn,如果是二分類再套一個sigmoid,其中n是葉子結點數量,w是葉子結點的值,只不過這裡的x都是1或0而已,假設一個極端的情況,第一個葉子結點對應的w1=1000,其它葉子結點權重為0.1,則顯然w1對應葉子結點對最終的輸出起到絕大部分的貢獻,那麼如果第一個葉子結點對應的基樹擬合的過頭,很容易導致整體的輸出方差增大引發過擬合。


感覺有些回答講得太過多無關內容,或者沒有回答到題目,僅憑個人理解強答一波。

既然題主提出了這樣的問題,證明應該是對XGBoost有一定的了解,XGBoost可以算是GBDT的一種變種,我們都知道,無論是boosting模型是還是bagging模型,都是將成百上千個基模型進行相加,即:

[公式]

其中 [公式] 表示第m棵決策樹, [公式] 為決策樹的參數,M為樹的個數(即n_estimators參數)。

假設現在是針對某個回歸任務,某條數據的y(標籤)為5,那麼下面兩種擬合方案:

  1. 5 = 0.3 + 0.2 + 0.5 + 0.3 + 0.2 + 0.5 + 0.3 + 0.2 + 0.5 + 0.4 + 0.2 + 0.5 + 0.3 + 0.2 + 0.6
  2. 5 = 3 + 3

很明顯,是不是直覺上會認為第一種方案會更好?因為每個基模型的值更小,就意味著每次向目標label的邁步就更「謹慎」,不容易超出,可以結合梯度下降的思想進行理解(每次對權值w進行更新的時候就會乘以一個學習率,防止「步子邁的太大了」)。所以這就是為什麼需要將葉子節點值加入正則項,限制其大小。

同時,我們也應該知道XGBoost中的學習率,即對應的eta參數,也是起著類似的作用將我們每次擬合的步幅進一步縮小,防止過擬合,所以我們也會發現,當減小eta時,會發現我們需要訓練更多的基模型進行擬合:

[公式]

以上,希望對您有幫助。


因為XGB中定義模型的複雜度的公式是 [公式]

[公式] 就是你說的葉子節點個數, [公式] 就是葉子節點的得分,這裡用了L2-norm,類似RidgeRegression, [公式] 大模型的複雜度也會提升,相當於這個葉子節點的權重提高了,就也會過擬合

十三:從GBDT到XGBoost?

zhuanlan.zhihu.com圖標

過擬合是?

是指模型結構相對數據複雜,模型學習能力強容易學習到片面統計雜訊。

xgboost模型結構複雜度的懲罰項:

葉子節點權重過大的影響?

當模型的葉子節點權重過大,意味著模型越容易依賴某部分數據特徵,

以方差-偏差分解分析,不同數據訓練的模型預測結果的分布波動(方差)較大,而缺失足夠的泛化能力。即過擬合。


GBDT模型最終輸出是多個提升樹輸出的和,其中某個樹的輸出過大會導致最終輸出方差變大,即過擬合。


論文裡面說了,可以嘗試其他的正則化方法,只不過L2的正則的效果在實驗中是最好的。個人感覺有兩個直觀想法導致推出這樣的正則化,一個是要考慮方便跟前面的泰勒展開進行合併計算,另外一個就是能保證後續的樹能有殘差學習。ensemble的方法一個大前提就是弱分類器不能夠一次性擬合當前的數據,如果當前的數據都已經能被一次性擬合的很好了,那這個分類器對於這個數據就不是弱分類器了。L2正則的好處就是把預測值限定在0附近,因此數據只能被多棵樹一點點慢慢的擬合出來,尤其是對於ground truth的方差很大時,此時數據的多樣性也很強,少量的樹肯定就擬合不了。


因為葉子節點分的越細,就對那個數據集分的越好,但是,就只是針對那個數據集


步子大了,容易走到局部最優點,出不來了。


boosting訓練過程中每棵樹都要求是弱學習器,避免單棵樹過量學習樣本信息,取而代之的方法是逐漸增加樹的數量,慢慢的減少偏差。如果葉子節點值過大,其實就意味著著這棵樹可能擬合的過量了,可以想一想如果是個回歸樹,葉子節點值越大,是不是殘差越小,下一棵樹可學習的是不是就越少,而且如果是前面的樹擬合多了,後面的樹是無法調整的這種過擬合現象,因此會對葉子節點的值進行正則化處理。甚至會添加一個步長參數(類似梯度下降中的步長參數),減緩學習速度,從而防止過擬合。


推薦閱讀:
相关文章