XGBoost為什麼若模型決策樹的葉子節點值越大,越容易過擬合呢?
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,那麼下面兩種擬合方案:
- 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
- 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訓練過程中每棵樹都要求是弱學習器,避免單棵樹過量學習樣本信息,取而代之的方法是逐漸增加樹的數量,慢慢的減少偏差。如果葉子節點值過大,其實就意味著著這棵樹可能擬合的過量了,可以想一想如果是個回歸樹,葉子節點值越大,是不是殘差越小,下一棵樹可學習的是不是就越少,而且如果是前面的樹擬合多了,後面的樹是無法調整的這種過擬合現象,因此會對葉子節點的值進行正則化處理。甚至會添加一個步長參數(類似梯度下降中的步長參數),減緩學習速度,從而防止過擬合。
推薦閱讀: