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]