1. 程式人生 > >XGBoost基本引數與調參

XGBoost基本引數與調參

XGBoost基本引數理解與設定

本文討論XGBoost使用過程中除錯引數的基本意義與設定,參考於一篇國外大佬文章。連結在此。

一、基本引數

1. booster [default : gbtree]

(1) gbtree:以樹為基礎的模型。
(2) gbliner:線性模型。

2. silent [default : 0]

設定為1時起作用(也就是執行時,不列印相關資訊)。

3. nthread [default to maximum number]

如不設定時,則代表最大執行緒數目。

二、提升引數 (tree booster)

1. eta [default : 0.3]

(1) 類似於GBM的學習速率。
(2) 通過縮小每一步的權重,使得模型變得更好。
(3) 典型的最終值為0.01~0.2之間。

2. min-child-weight [default : 1]

(1) 定義一個葉子節點所需觀察值(oberservation)最小值的和。
(2) 用於控制過度學習,較高的值阻止了模型的學習關係,可能是特定於某棵樹的特定樣本的關係。
(3) 過高的值可能導致模型不合適(CV中進行調優過程中)

3. max_depth [default : 6]

(1) 表示樹的最大深度。
(2) 用於控制過擬合的問題,因為較高的深度將使模型與樣本產生特定的聯絡。
(3) 常規範圍為3~10。

4. max_leaf_nodes (最大葉子節點數)

(1) 樹的終端節點或葉子節點的數量。
(2) 可在max_depth中設定,因為建立二叉樹時,一個深度(層)最多有2的n次方個樹葉。
(3) 如果該引數已定義,在GBM中將忽略max_depth引數。

5. gamma [default : 0]

(1) 在損失函式中,只有當分裂次數減少中,一個節點才會被分裂。gamma引數確定了進分拆分或分裂時,所需最小的損失減少。
(2) gamma引數使演算法保持保守,該引數根據損失函式的不同應進行調整。

6. max_delta_step [default : 0]

(1) 在最大化delta步驟中,我們將估計每棵樹的權重,如果該值設定為0,那就意味著將沒有約束,如果設定成一個合適的數值,它將使更新步驟更加保守。
(2) 通常該數值不需使用,但是在邏輯迴歸中,級別差別太大不平衡時可能有用。

7. subsample [default : 1]

(1) 和GBM的子樣本相同,表示每棵樹隨機樣本的分數。
(2) 較低的值可以使得演算法更加保守,避免過擬合,但是太小的值會導致模型不合適。
(3) 常規數值為0.5~1。

8. colsample_bytree [default : 1]

(1) 類似於GBM中的max_features這一概念,表示每棵樹的隨機抽樣的列的分數部分。
(2) 典型取值範圍為0.5~1。

9. colsample_bylevel [default : 1]

(1) 表示每一層中每一層子樣本比率。
(2) 改引數不常用,因為colsample_bytree有類似相同的作用。

10. lambda [default : 1]

(1) L2正則化項(類似於嶺迴歸)。
(2) 該引數用於處理XGBoost的正則化部分,雖然不太常使用。但是該引數可以用於解決過擬合的問題。

11. alpha [default : 0]

(1) L1正則化項(類似於Lesso迴歸)。
(2) 該引數用於處理非常高的維度上,來保證演算法的執行速度更快。

12. scale_pos_weight [default : 1]

該引數應是一個大於0的數,當資料模型處於非常不平衡時應用,有利於更快收斂。

三、學習任務引數 (Learning Task Parameters)

這些引數用於定義優化目標,以及每個步驟下的度量。

1. objective [default : reg:liner]

該引數用於定義最小化損失引數,其值主要為:
(1) binary:logistic 二元分類的邏輯迴歸,返回輸出預測概率(非型別)。
(2) multi-softmax 使用softmax函式目標進行多類分類,返回預測的類(不是概率)。同時還需要設定一個額外的引數num_class來定義特殊的類的數量。
(3) multi-softprob 和softmax相同,但是返回每個類的每個資料點的預測概率。

2. eval_metric [default : 根據objective參量確定其引數]

(1) 用於度量資料的驗證。
(2) 預設值為rmse,用於迴歸和分類的錯誤。
(3) 典型的引數選擇有一下:
rmse: 均方根誤差
mae: 平均絕對誤差
logloss: 負對數相似度
error: 二進位制分類錯誤率(0.5閾值)
merror: 多級分類錯誤率
mloss: 多級logloss
auc: AUC曲線面積

3. seed [default : 0]

(1) 隨機數種子。
(2) 用於產生可重複產生的結果和引數調優。
python中的xgboost模組有個名為XGBClassifier的sklearn包裝器,它使用sklearn風格命名約定,如:
eta→learning_rate
lambda→reg_lambda
alpha→reg_alpha