xgboost 中的 gamma 參數
我在 xgboost 教程中遇到了一條評論。它說“請記住,當您想使用淺(低 max_depth)樹時,伽瑪會帶來改進”。
我的理解是更高的伽瑪更高的正則化。如果我們有很深的(高 max_depth)樹,就會有更多的過擬合傾向。為什麼伽馬可以使用淺樹來提高性能?
正如您正確注意到的那樣,
gamma
是一個正則化參數。與使用“樹內”信息進行正則化相比min_child_weight
,它通過使用“跨樹”信息進行正則化來工作。特別是通過觀察損失變化的典型大小,我們可以適當調整,以便我們指示我們的樹僅在相關增益大於或等於時添加節點max_depth``gamma``gamma
$ \gamma $ . 在Chen 相當著名的 2014 XGBoost 演講中,第 33頁指的是 $ \gamma $ 作為“引入額外葉子的複雜性成本”。現在,我們會調整的一個典型情況
gamma
是當我們嘗試使用淺樹來對抗過度擬合時。對抗過度擬合的明顯方法是使用較淺的樹(即 lowermax_depth
),因此與調整gamma
相關的上下文是“當您想要使用淺(低 max_depth)樹時”。事實上,這有點重言式,但實際上,如果我們期望更深的樹是有益的,調優gamma
雖然在正則化方面仍然有效,但也會給我們的學習過程帶來不必要的負擔。另一方面,如果我們錯誤地使用了更深的樹,除非我們非常積極地進行正則化,否則我們可能會意外地達到局部最小值,其中 $ \gamma $ 無法拯救我們。所以, $ \gamma $ 確實與“淺樹情況”更相關。:) 一篇關於調優的精彩博文 $ \gamma $ 可以在這裡找到:xgboost:“嗨,我是 Gamma。我能為你做什麼?” - 和正則化的調整。最後的警告:請注意 $ \gamma $ 強烈依賴於實際估計的參數和(訓練)數據。這是因為我們的響應變量的規模有效地決定了我們的損失函數的規模以及損失函數的後續減少(即 $ \gamma $ ) 我們認為有意義。