1. 程式人生 > >Xgboost的sklearn介面引數說明

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)

base_score: [default=0.5]

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

booster: [default=gbtree]

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

colsample_bylevel: [default=1]

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

colsample_bytree:[default=1]

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

gamma:[default=0]

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

learning_rate:[default=0.1]

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

max_delta_step:[default=0]

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

max_depth:[default=3]

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

min_child_weight:[default=1]

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

missing:[default=None]

  • 在資料中,標註為缺失值的表示。如果為None,則預設為np.nan

n_estimators:[default=100]

  • 估計器的數量

n_jobs:[default=1]

  • 執行緒數目

nthread:[default=None]

  • 主要用於平行計算,系統的核心數需要作為變數。如果希望執行所有的核心,就不需要設定該引數,程式會自己檢測到該值。

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

random_state:[default=0]

reg_alpha:[default=0]

  • L1 regularization term on weights,這個主要是用在資料維度很高的情況下,可以提高執行速度

reg_lambda:[default=1]

  • L2 regularization term on weights,這個其實用的很少

scale_pos_weight:[default=1]

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

seed:[default=None]

  • 隨機數種子,設定它可以復現隨機資料的結果,也可以用於調整引數。

silent:[default=True]

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

subsample:[default=1]

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