原文鏈接:https://blog.csdn.net/m_buddy/article/details/79337492
前言
本文中針對XGBoost的參數說明進行部分翻譯得來,原文鏈接。因而本文中只對一些關鍵參數進行了翻譯,且由於本人能力有限,文中難免存在錯誤的地方,還望指正。以下是大致翻譯內容。
在運行XGboost之前, 我們必須設置三種類型的參數: 通用參數(general parameters),Booster 參數(booster parameters)和學習目標參數(task parameters)
• 通用參數決定了那種Booster被我們選擇用於Boosting, 通常是線性和樹型模型,也就是用於宏觀函數控制
• Booster參數取決於選擇的Booster類型,用於控制每一步的booster
• 學習任務參數決定學習策略。例如,回歸任務可以使用不同的參數和排序任務
• 命令行參數取決於xgboost的CLI版本
General Parameters
booster [缺省值=gbtree]
決定那個使用那個booster,可以是gbtree,gblinear或者dart。 gbtree和dart使用基於樹的模型,而gblinear 使用線性函數.
silent [缺省值=0]
設置為0打印運行信息;設置為1靜默模式,不打印
nthread [缺省值=設置為最大可能的線程數]
並行運行xgboost的線程數,輸入的參數應該<=系統的CPU核心數,若是沒有設置算法會檢測將其設置為CPU的全部核心數
下面的兩個參數不需要設置,使用默認的就好了
num_pbuffer [xgboost自動設置,不需要用戶設置]
預測結果緩存大小,通常設置為訓練實例的個數。該緩存用於保存最后boosting操作的預測結果。
num_feature [xgboost自動設置,不需要用戶設置]
在boosting中使用特征的維度,設置為特征的最大維度
Parameters for Tree Booster
eta [缺省值=0.3,別名:learning_rate]
更新中減少的步長來防止過擬合。在每次boosting之后,可以直接獲得新的特征權值,這樣可以使得boosting更加魯棒。
范圍: [0,1]
gamma [缺省值=0,別名: min_split_loss](分裂最小loss)
在節點分裂時,只有分裂后損失函數的值下降了,才會分裂這個節點。Gamma指定了節點分裂所需的最小損失函數下降值。 這個參數的值越大,算法越保守。這個參數的值和損失函數息息相關,所以是需要調整的。
范圍: [0,∞]
max_depth [缺省值=6]
這個值為樹的最大深度。 這個值也是用來避免過擬合的。max_depth越大,模型會學到更具體更局部的樣本。設置為0代表沒有限制
范圍: [0,∞]
min_child_weight [缺省值=1]
決定最小葉子節點樣本權重和。XGBoost的這個參數是最小樣本權重的和,而GBM參數是最小樣本總數。 這個參數用於避免過擬合。當它的值較大時,可以避免模型學習到局部的特殊樣本。 但是如果這個值過高,會導致欠擬合。這個參數需要使用CV來調整。.
范圍: [0,∞]
subsample [缺省值=1]
這個參數控制對於每棵樹,隨機采樣的比例。 減小這個參數的值,算法會更加保守,避免過擬合。但是,如果這個值設置得過小,它可能會導致欠擬合。 典型值:0.5-1,0.5代表平均采樣,防止過擬合.
范圍: (0,1]
colsample_bytree [缺省值=1]
用來控制每棵隨機采樣的列數的占比(每一列是一個特征)。 典型值:0.5-1
范圍: (0,1]
colsample_bylevel [缺省值=1]
用來控制樹的每一級的每一次分裂,對列數的采樣的占比。 我個人一般不太用這個參數,因為subsample參數和colsample_bytree參數可以起到相同的作用。但是如果感興趣,可以挖掘這個參數更多的用處。
范圍: (0,1]
lambda [缺省值=1,別名: reg_lambda]
權重的L2正則化項。(和Ridge regression類似)。 這個參數是用來控制XGBoost的正則化部分的。雖然大部分數據科學家很少用到這個參數,但是這個參數在減少過擬合上還是可以挖掘出更多用處的。.
alpha [缺省值=0,別名: reg_alpha]
權重的L1正則化項。(和Lasso regression類似)。 可以應用在很高維度的情況下,使得算法的速度更快。
scale_pos_weight[缺省值=1]
在各類別樣本十分不平衡時,把這個參數設定為一個正值,可以使算法更快收斂。通常可以將其設置為負樣本的數目與正樣本數目的比值。
Parameters for Linear Booster
lambda [缺省值=0,別稱: reg_lambda]
L2正則化懲罰系數,增加該值會使得模型更加保守。
alpha [缺省值=0,別稱: reg_alpha]
L2正則化懲罰系數,增加該值會使得模型更加保守。
lambda_bias [缺省值=0,別稱: reg_lambda_bias]
偏置上的L2正則化(沒有在L1上加偏置,因為並不重要)
Learning Task Parameters
objective [缺省值=reg:linear]
“reg:linear” – 線性回歸
“reg:logistic” – 邏輯回歸
“binary:logistic” – 二分類邏輯回歸,輸出為概率
“binary:logitraw” – 二分類邏輯回歸,輸出的結果為wTx
“count:poisson” – 計數問題的poisson回歸,輸出結果為poisson分布。在poisson回歸中,max_delta_step的缺省值為0.7 (used to safeguard optimization)
“multi:softmax” – 設置 XGBoost 使用softmax目標函數做多分類,需要設置參數num_class(類別個數)
“multi:softprob” – 如同softmax,但是輸出結果為ndata*nclass的向量,其中的值是每個數據分為每個類的概率。
eval_metric [缺省值=通過目標函數選擇]
可供選擇的如下所示:
“rmse”: 均方根誤差
“mae”: 平均絕對值誤差
“logloss”: negative log-likelihood
“error”: 二分類錯誤率。其值通過錯誤分類數目與全部分類數目比值得到。對於預測,預測值大於0.5被認為是正嘞,其它歸為負類。
“error@t”: 不同的划分閾值可以通過 ‘t’進行設置
“merror”: 多分類錯誤率,計算公式為(wrong cases)/(all cases)
“mlogloss”: 多分類log損失
“auc”: 曲線下的面積
“ndcg”:Normalized Discounted Cumulative Gain
“map”: 平均正確率
seed [缺省值=0]
隨機數的種子 設置它可以復現隨機數據的結果,也可以用於調整參數
Command Line Parameters
一下的參數只用於命令行版本的XGBoost版本中。
1. use_buffer [缺省值=1]
是否為文本輸入創建二進制緩存。這樣做將加快加載速度。
2. num_round
boosting的迭代次數。
3. data
訓練數據的路徑
4. test:data
用作預測的測試數據路徑
5. save_period [缺省值=0]
保存參數模型的周期
6. task [缺省值=train] 可選項: train, pred, eval, dump
train: 使用data訓練
pred: 使用test:data做預測
eval: 進行評估統計,由eval[name]=filename指定
dump: 將學習的模型導出到文本格式
7. model_in [缺省值=NULL]
輸入模型的路徑,被用於test, eval, dump。在training中,XGBoost將會從輸入模型的基礎上繼續進行訓練。
8. model_out [缺省值=NULL]
訓練完成之后模型的保存路徑。如果沒有指定將會使用諸如0003.model,這里的 0003是boosting的迭代數
9. model_dir [缺省值=models]
訓練期間的訓練模型輸出文件夾
10. fmap
特征圖譜,被用於dump模式
11. name_dump [缺省值=dump.txt]
模型dump文件的名稱
12. name_pred [缺省值=pred.txt]
預測文件的名稱,被用於pred模式
13. pred_margin [缺省值=0]
predict margin 而不是轉換概率