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]