Xgboost的sklearn接口參數說明


1 from xgboost.sklearn import XGBClassifier
2 model=XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,
3        colsample_bytree=1, gamma=0, learning_rate=0.1, max_delta_step=0,
4        max_depth=3, min_child_weight=1, missing=None, n_estimators=100,
5        n_jobs=1, nthread=None, objective='binary:logistic', random_state=0,
6        reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=None,
7        silent=True, subsample=1)

1、通用參數(控制Xgboost的宏觀功能)

booster: [default=gbtree]

  • gbtree: tree-based models,樹模型做為基分類器
  • gblinear: linear models,線性模型做為基分類器

silent:[default=True]

  • silent=True時,不輸出中間過程(默認)
  • silent=Flase時,輸出中間過程

nthread:[default=None]

  • 主要用於並行計算,系統的內核數需要作為變量。如果希望運行所有的內核,就不需要設置該參數,程序會自己檢測到該值。

n_jobs:[default=1]

  • 線程數目

2、Booster參數(控制每一步的Booster(tree\regression))

有兩種booster可以選擇,但是tree booster的效果比 linear booster效果好太多,因此linear booster很少用到。

learning_rate:[default=0.1]

  • 原名eta,學習率,控制每次迭代更新權重時的步長。值越小,訓練的越慢。取值范圍:[0,1]。典型值為0.01~0.2

n_estimators:[default=100]

  • 估計器的數量

min_child_weight:[default=1]

  • 拆分節點權重和閾值
  • 如果節點的樣本權重和小於該閾值,就不再進行拆分。在線性回歸模型中,這個是指建立每個模型所需要的最小樣本數。
  • 值越大,算法越保守。取值范圍為:[0,∞]
  • 用於防止過擬合問題:較大的值能防止過擬合,過大的值會導致欠擬合問題
  • 需要通過CV調參

max_depth:[default=3]

  • 每個基本學習器樹的最大深度,用於防止過擬合問題。通過CV調參。典型值:3~10

gamma:[default=0]

  • 損失閾值,在樹的一個葉節點上進一步分裂所需的最小損失減少量,gamma值越大,算法越保守。取值范圍為:[0,∞]

max_delta_step:[default=0]

  • 每棵樹的最大權重估計。如果它的值被設置為0,意味着沒有約束;如果它被設置為一個正值,能夠權重的變化將會變得相對保守。通常這個參數不會被使用,但如果是極度不平衡的邏輯回歸將會有所幫助。把它范圍設置為1-10之間也許能控制更新。 取值范圍為:[0,∞]

subsample:[default=1]

  • 隨機選取一定比例的樣本來訓練樹。設置為0.5,則意味着XGBoost將從整個樣本集合中隨機的抽取出50%子樣本建立樹模型,這能夠防止過擬合。
  • 取值范圍為:(0,1]。減小這個參數的值,算法會更加保守,避免過擬合。但是,如果這個值設置得過小,它可能會導致欠擬合。 典型值:0.5-1。

colsample_bytree:[default=1]

  • 指的是每棵樹隨機選取的特征的比例,取值范圍(0,1]。

colsample_bylevel: [default=1]

  • 指的是樹的每個層級分裂時子樣本的特征所占的比例,這個一般很少用。因為subsample和colsample_bytree組合做的事與之類似。

reg_alpha:[default=0]

  • 權重的L1正則化項(和Lasso regression類似)。這個主要是用在數據維度很高的情況下,可以提高運行速度。

reg_lambda:[default=1]

  • 權重的L2正則化項(和Ridge regression類似)。這個參數是用來控制XGBoost的正則化部分的。雖然大部分數據科學家很少用到這個參數,但是這個參數在減少過擬合上還是可以挖掘出更多用處的。

scale_pos_weight:[default=1]

  • 處理樣本不平衡問題。在樣本高度不平衡時,將參數設置大於0,可以加快算法收斂。

3、學習目標參數

objective:指的是需要被最小化的損失函數。

  • “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”   采用softmax目標函數處理多分類問題,需要多設置一個參數num_class(類別個數),返回預測的類別(不是概率)。
  • “multi:softprob”   和multi:softmax參數類似,但是輸出結果是每個樣本屬於各個類別的概率。
  • “rank:pairwise”   set XGBoost to do ranking task by minimizing the pairwise loss

seed:[default=None]

  • 隨機數種子,設置它可以復現隨機數據的結果,也可以用於調整參數。

4、其他

base_score: [default=0.5]

  • 所有實例的初始預測得分,整體偏倚。

missing:[default=None]

  • 在數據中,標注為缺失值的表示。如果為None,則默認為np.nan

random_state:[default=0]

 


免責聲明!

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



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