常規參數General Parameters
- booster[default=gbtree]:選擇基分類器,可以是:gbtree,gblinear或者dart。gbtree和draf基於樹模型,而gblinear基於線性模型。
- slient[default=0]:是否有運行信息輸出,設置為1則沒有運行信息輸出。
- nthread[default to maximum number of threads available if not set]:線程數,默認使用能使用的最大線程數。
模型參數Booster Parameters
- eta[default=0.3]:收縮參數,也即學習率。用於更新葉節點權重時,乘該系數,避免步長過大。參數值越大,越可能無法收斂。把eta設置的小一些,小的學習率可以使后面的學習更加仔細。
- min_child_weight[default=1]:每個葉子里面的h的和至少是多少,這個參數非常影響結果,控制葉子節點中二階導的和的最小值,該參數越小,越容易過擬合。
- max_depth[default=6]:每棵樹的最大深度,該參數設置越大,越容易過擬合。
- max_leaf_nodes:最大葉節點數,和max_depth類似。
- gamma[default=0]:后剪枝時,用於控制是否后剪枝。
- max_delta_step[default=0]:該參數可以使得更新更加平緩,如果取0表示沒有約束,如果取正值則使得更新步驟更加保守,防止更新時邁的步子太大。
- subsample[default=1]:樣本隨機樣本,該參數越大,越容易過擬合,但設置過大也會造成過擬合。
- colsample_bytree[default=1]:列采樣,對每棵樹生成時用的特征進行列采樣,一般設置為0.5-1
- lambda[default=1]:模型的L2正則化參數,參數越大,越不容易過擬合。
- alpha[default=0]:模型的L1正則化參數,參數越大,越不容易過擬合。
- scale_pos_weight[default=1]:如果取值大於0,在類別樣本偏斜時,有助於快速收斂。
學習任務參數(Learning Task Parameters)
- objective[default=reg:linear]:定義最小化損失函數類型,常用參數:
- binary:logistic –二元分類的邏輯回歸模型,返回預測概率(p(y=1|x,w))
- multi:softmax –使用softmax objective的多類分類模型,返回預測的分類。這里需要設置一個額外的num_class參數,表示類的個數。
- multi:softprob –與softmax相同,但是返回每個數據點屬於每個類的預測概率。
- eval_metric[default according to objective]:用於衡量驗證數據的參數,即是各評價標准,常用參數如下:
- rmse – root mean square error
- mae – mean absolute error
- logloss – negative log-likelihood
- error – Binary classification error rate (0.5 threshold)
- merror – Multiclass classification error rate
- mlogloss – Multiclass logloss
- auc: Area under the curve
- seed[default=0]:隨機種子,用於產生可復現的結果。
這里,xgboost與sklearn的命名風格有點區別,如:
- eta->learning_rate
- lambda->reg_lambda
- alpha->reg_alpha
參數調優
-
import必要的庫
#Import libraries: import pandas as pd import numpy as np import xgboost as xgb from xgboost.sklearn import XGBClassifier from sklearn import cross_validation, metrics #Additional scklearn functions from sklearn.grid_search import GridSearchCV #Perforing grid search import matplotlib.pylab as plt %matplotlib inline from matplotlib.pylab import rcParams rcParams['figure.figsize'] = 12, 4 train = pd.read_csv('train_modified.csv') target = 'Disbursed' IDcol = 'ID'
注意,這里import兩種XGBoost:
- xgb-直接引用xgboost,接下來會用到其中的‘cv’函數。
- XGBClassifier-是xgboost的sklearn包。這個包允許我們使用Grid Search和並行處理。
參考鏈接:http://blog.csdn.net/u010657489/article/details/51952785