XGBoost基本参数与调参

XGBoost基本参数理解与设置

本文讨论XGBoost使用过程中调试参数的基本意义与设置,参考于一篇国外大佬文章。链接在此。

一、基本参数

1. booster [default : gbtree]

(1) gbtree:以树为基础的模型。
(2) gbliner:线性模型。

2. silent [default : 0]

设置为1时起作用(也就是运行时,不打印相关信息)。

3. nthread [default to maximum number]

如不设置时,则代表最大线程数目。

二、提升参数 (tree booster)

1. eta [default : 0.3]

(1) 类似于GBM的学习速率。
(2) 通过缩小每一步的权重,使得模型变得更好。
(3) 典型的最终值为0.01~0.2之间。

2. min-child-weight [default : 1]

(1) 定义一个叶子节点所需观察值(oberservation)最小值的和。
(2) 用于控制过度学习,较高的值阻止了模型的学习关系,可能是特定于某棵树的特定样本的关系。
(3) 过高的值可能导致模型不合适(CV中进行调优过程中)

3. max_depth [default : 6]

(1) 表示树的最大深度。
(2) 用于控制过拟合的问题,因为较高的深度将使模型与样本产生特定的联系。
(3) 常规范围为3~10。

4. max_leaf_nodes (最大叶子节点数)

(1) 树的终端节点或叶子节点的数量。
(2) 可在max_depth中设置,因为创建二叉树时,一个深度(层)最多有2的n次方个树叶。
(3) 如果该参数已定义,在GBM中将忽略max_depth参数。

5. gamma [default : 0]

(1) 在损失函数中,只有当分裂次数减少中,一个节点才会被分裂。gamma参数确定了进分拆分或分裂时,所需最小的损失减少。
(2) gamma参数使算法保持保守,该参数根据损失函数的不同应进行调整。

6. max_delta_step [default : 0]

(1) 在最大化delta步骤中,我们将估计每棵树的权重,如果该值设置为0,那就意味着将没有约束,如果设置成一个合适的数值,它将使更新步骤更加保守。
(2) 通常该数值不需使用,但是在逻辑回归中,级别差别太大不平衡时可能有用。

7. subsample [default : 1]

(1) 和GBM的子样本相同,表示每棵树随机样本的分数。
(2) 较低的值可以使得算法更加保守,避免过拟合,但是太小的值会导致模型不合适。
(3) 常规数值为0.5~1。

8. colsample_bytree [default : 1]

(1) 类似于GBM中的max_features这一概念,表示每棵树的随机抽样的列的分数部分。
(2) 典型取值范围为0.5~1。

9. colsample_bylevel [default : 1]

(1) 表示每一层中每一层子样本比率。
(2) 改参数不常用,因为colsample_bytree有类似相同的作用。

10. lambda [default : 1]

(1) L2正则化项(类似于岭回归)。
(2) 该参数用于处理XGBoost的正则化部分,虽然不太常使用。但是该参数可以用于解决过拟合的问题。

11. alpha [default : 0]

(1) L1正则化项(类似于Lesso回归)。
(2) 该参数用于处理非常高的维度上,来保证算法的运行速度更快。

12. scale_pos_weight [default : 1]

该参数应是一个大于0的数,当数据模型处于非常不平衡时应用,有利于更快收敛。

三、学习任务参数 (Learning Task Parameters)

这些参数用于定义优化目标,以及每个步骤下的度量。

1. objective [default : reg:liner]

该参数用于定义最小化损失参数,其值主要为:
(1) binary:logistic 二元分类的逻辑回归,返回输出预测概率(非类型)。
(2) multi-softmax 使用softmax函数目标进行多类分类,返回预测的类(不是概率)。同时还需要设置一个额外的参数num_class来定义特殊的类的数量。
(3) multi-softprob 和softmax相同,但是返回每个类的每个数据点的预测概率。

2. eval_metric [default : 根据objective参量确定其参数]

(1) 用于度量数据的验证。
(2) 默认值为rmse,用于回归和分类的错误。
(3) 典型的参数选择有一下:
rmse: 均方根误差
mae: 平均绝对误差
logloss: 负对数相似度
error: 二进制分类错误率(0.5阈值)
merror: 多级分类错误率
mloss: 多级logloss
auc: AUC曲线面积

3. seed [default : 0]

(1) 随机数种子。
(2) 用于产生可重复产生的结果和参数调优。
python中的xgboost模块有个名为XGBClassifier的sklearn包装器,它使用sklearn风格命名约定,如:
eta→learning_rate
lambda→reg_lambda
alpha→reg_alpha

猜你喜欢

转载自blog.csdn.net/chenhaouestc/article/details/79101107