XGBoost超參數調優(yōu)指南(2)
子抽樣subsample它將更多的隨機性引入到訓練中,從而有助于對抗過擬合。
Subsample =0.7意味著集合中的每個決策樹將在隨機選擇的70%可用數據上進行訓練。值1.0表示將使用所有行(不進行子抽樣)。
與subsample類似,也有colsample_bytree。顧名思義,colsample_bytree控制每個決策樹將使用的特征的比例。Colsample_bytree =0.8使每個樹使用每個樹中隨機80%的可用特征(列)。
調整這兩個參數可以控制偏差和方差之間的權衡。使用較小的值降低了樹之間的相關性,增加了集合中的多樣性,有助于提高泛化和減少過擬合。
但是它們可能會引入更多的噪聲,增加模型的偏差。而使用較大的值會增加樹之間的相關性,降低多樣性并可能導致過擬合。
最大深度max_depth控制決策樹在訓練過程中可能達到的最大層次數。
更深的樹可以捕獲特征之間更復雜的相互作用。但是更深的樹也有更高的過擬合風險,因為它們可以記住訓練數據中的噪聲或不相關的模式。為了控制這種復雜性,可以限制max_depth,從而生成更淺、更簡單的樹,并捕獲更通用的模式。
Max_depth數值可以很好地平衡了復雜性和泛化。
這兩個參數一起說是因為alpha (L1)和lambda (L2)是兩個幫助過擬合的正則化參數。
與其他正則化參數的區(qū)別在于,它們可以將不重要或不重要的特征的權重縮小到0(特別是alpha),從而獲得具有更少特征的模型,從而降低復雜性。
alpha和lambda的效果可能受到max_depth、subsample和colsample_bytree等其他參數的影響。更高的alpha或lambda值可能需要調整其他參數來補償增加的正則化。例如,較高的alpha值可能受益于較大的subsample值,因為這樣可以保持模型多樣性并防止欠擬合。
如果你讀過XGBoost文檔,它說gamma是:
在樹的葉節(jié)點上進行進一步分區(qū)所需的最小損失減少。
英文原文:the minimum loss reduction required to make a further partition on a leaf node of the tree.
我覺得除了寫這句話的人,其他人都看不懂。讓我們看看它到底是什么,下面是一個兩層決策樹:
為了證明通過拆分葉節(jié)點向樹中添加更多層是合理的,XGBoost應該計算出該操作能夠顯著降低損失函數。
但“顯著是多少呢?”這就是gamma——它作為一個閾值來決定一個葉節(jié)點是否應該進一步分割。
如果損失函數的減少(通常稱為增益)在潛在分裂后小于選擇的伽馬,則不執(zhí)行分裂。這意味著葉節(jié)點將保持不變,并且樹不會從該點開始生長。
所以調優(yōu)的目標是找到導致?lián)p失函數最大減少的最佳分割,這意味著改進的模型性能。
XGBoost從具有單個根節(jié)點的單個決策樹開始初始訓練過程。該節(jié)點包含所有訓練實例(行)。然后隨著 XGBoost 選擇潛在的特征和分割標準最大程度地減少損失,更深的節(jié)點將包含越來越少的實例。
如果讓XGBoost任意運行,樹可能會長到最后節(jié)點中只有幾個無關緊要的實例。這種情況是非常不可取的,因為這正是過度擬合的定義。
所以XGBoost為每個節(jié)點中繼續(xù)分割的最小實例數設置一個閾值。通過對節(jié)點中的所有實例進行加權,并找到權重的總和,如果這個最終權重小于min_child_weight,則分裂停止,節(jié)點成為葉節(jié)點。
上面解釋是對整個過程的最簡化的版本,因為我們主要介紹他的概念。
以上就是我們對這 10個重要的超參數的解釋,如果你想更深入的了解仍有很多東西需要學習。所以建議給ChatGPT以下兩個提示:
1) Explain the {parameter_name} XGBoost parameter in detail and how to choose values for it wisely.
2) Describe how {parameter_name} fits into the step-by-step tree-building process of XGBoost.
它肯定比我講的明白,對吧。
最后如果你也用optuna進行調優(yōu),請參考以下的GIST:
https://gist.github.com/BexTuychiev/823df08d2e3760538e9b931d38439a68
*博客內容為網友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。