XGBoost參數解釋及調優


原文鏈接: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 而不是轉換概率


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM