相信小伙伴都用过XGBoost模型了,因为效果好,透明易解释等优点,XGBoost已经成为了特别流行的算法模型,小编今天也来介绍一下XGBoost调参。

一、XGBoost参数解释

XGBoost有三类参数:

1.通用参数:模型的宏观参数,控制了模型的宏观功能,比如booster、nthread、slience。

2.Booster参数:控制每一步booster tree或regression的生成。

3.学习目标参数:决定了学习目标,如损失函数或者评价函数等。

1.1通用函数:

1、booster[默认gbtree]

选择每次迭代的模型,有两种选择:

gbtree:基于树的模型进行提升

gbliner:基于线性模型进行提升

默认是gbtree,一般gbtree的效果远远胜于gbliner

2、silent[默认0]

当这个参数值为1时,静默模式开启,即表示不打印任何运行信息。一般这个参数就保持默认的0,因为这样能帮我们更好地理解模型。

3、nthread[默认值为最大可能的线程数]

这个参数用来进行多线程控制,应当输入系统的核数。默认是当前系统最大线程数。

4、num_pbuffer[系统自动设置]

5、num_feature[系统自动设置]

1.2booster参数

这里以gbtree为例进行介绍:

1、eta[默认0.3]

学习速率,用于控制树的权重,xgb模型在进行完每一轮迭代之后,会将叶子节点的分数乘上该系数,以便于削弱各棵树的影响,避免过拟合。

一般对eta进行调优时会结合迭代次数进行考虑。

如增加eta,就减少迭代次数。反之亦然。

2、min_child_weight[默认1]

表示最小叶子节点样本权重的和。可用于避免过拟合。当它的值较大时,可以避免模型学习到局部的特殊样本。但是如果这个值过高,会导致欠拟合。这个参数需要使用CV来调整。

3、max_depth[默认6]

表示树的最大深度。也是用来避免过拟合的。当它的值越大时,模型会学到更具体更局部的样本,可能会导致过拟合。需要使用CV函数来进行调优。 典型值:3-10

4、max_leaf_nodes

表示树上最大的节点或叶子的数量。可以替代max_depth的作用。因为如果生成的是二叉树,一个深度为n的树最多生成n2个叶子。

5、gamma[默认0]

在节点分裂时,只有分裂后损失函数的值下降了,才会分裂这个节点。Gamma指定了节点分裂所需的最小损失函数下降值。 这个参数的值越大,算法越保守。这个参数的值和损失函数息息相关,所以是需要调整的。

6、max_delta_step[默认0]

这参数限制每棵树权重改变的最大步长。如果这个参数的值为0,那就意味着没有约束。如果它被赋予了某个正值,那么它会让这个算法更加保守。 通常,这个参数不需要设置。但是当各类别的样本十分不平衡时,它对逻辑回归是很有帮助的。这个参数一般用不到,但是你可以挖掘出来它更多的用处。

7、subsample[默认1]

这个参数控制对于每棵树,随机采样的比例。减小这个参数的值,算法会更加保守,避免过拟合。但是,如果这个值设置得过小,它可能会导致欠拟合。 典型值:0.5-1

8、colsample_bytree[默认1]

和GBM里面的max_features参数类似。用来控制每棵随机采样的列数的占比(每一列是一个特征)。 典型值:0.5-1

9、colsample_bylevel[默认1]

用来控制树的每一级的每一次分裂,对列数的采样的占比。我个人一般不太用这个参数,因为subsample参数和colsample_bytree参数可以起到相同的作用。但是如果感兴趣,可以挖掘这个参数更多的用处。

10、lambda[默认1]

权重的L2正则化项。(和Ridgeregression类似)。 这个参数是用来控制XGBoost的正则化部分的。虽然大部分数据科学家很少用到这个参数,但是这个参数在减少过拟合上还是可以挖掘出更多用处的。

11、alpha[默认1]

权重的L1正则化项。(和Lassoregression类似)。 可以应用在很高维度的情况下,使得算法的速度更快。

12、scale_pos_weight[默认1]

在各类别样本十分不平衡时,把这个参数设定为一个正值,可以使算法更快收敛。

1.3学习任务参数

这个参数用来控制理想的优化目标和每一步结果的度量方法。

1、objective[默认reg:linear]

这个参数定义需要被最小化的损失函数。最常用的值有:

binary:logistic

binary:logitraw

2、eval_metric[默认值取决于objective参数的取值]

评价模型的指标,主要是对验证集进行评价。对于回归问题,默认值是rmse,对于分类问题,默认值是error。典型值有:

rmse均方根误差

mae 平均绝对误差

logloss负对数似然函数值

error二分类错误率(阈值为0.5)

merror多分类错误率

mlogloss多分类logloss损失函数

auc曲线下面积

3、seed(默认0)

随机数的种子 设置它可以复现随机数据的结果,也可以用于调整参数。

二、XGBoost调参示例

以下主要用网格搜索和随机搜索做示例:

原始数据集还是用小编上传在github上的数据集。

本篇文章使用CV进行调参,

首先定义一个XGBoost CV 函数, 它可以建立xgb模型并可以进行交叉验证。

接下来就开始进行调参了:

1. 选择较高的学习速率(learningrate)。一般情况下,学习速率的值为0.1。但是,对于不同的问题,理想的学习速率有时候会在0.05到0.3之间波动。选择对应于此学习速率的理想决策树数量。

2. 对于给定的学习速率和决策树数量,进行决策树特定参数调优(max_depth, min_child_weight, gamma, subsample, colsample_bytree)。在确定一棵树的过程中,我们可以选择不同的参数。

3.xgboost的正则化参数的调优。(lambda, alpha)。这些参数可以降低模型的复杂度,从而提高模型的表现。

4. 降低学习速率,确定理想参数。

未完待续。。。

谢谢大家返回搜狐,查看更多

责任编辑:

20201203

max_depth 和 max_leaf_nodes
二者可以替代,只需设置其中一个就可以了
gamma:在最大深度或者最大结点数量之内 如果分裂后损失函数的值下降了,就会分裂这个节点
max_delta_step:赋予正值 意味着 给了其取最大值的限制 所以说保守
subsample:这个参数控制对于每棵树,随机采样的比例 是对样本采样
colsample_bytree:和GBM里面的max_features参数类似。用来控制每棵随机采样的列数的占比
alpha[默认1]
权重的L1正则化项。(和Lassoregression类似)。 可以应用在很高维度的情况下,使得算法的速度更快。
scale_pos_weight[默认1]
在各类别样本十分不平衡时,把这个参数设定为一个正值,可以使算法更快收敛。

xgboost重要参数2为主但不全要参照1相关推荐

  1. xgboost重要参数1

    XGBoost 重要参数(调参使用) 数据比赛Kaggle,天池中最常见的就是XGBoost和LightGBM. 模型是在数据比赛中尤为重要的,但是实际上,在比赛的过程中,大部分朋友在模型上花的时间却 ...

  2. XGBoost的参数介绍及调参

    XGBoost的参数介绍及调参 XGBoost参数解释 一.通用参数 二.Booster参数 二.学习目标函数 三.XGBoost调参 XGBoost参数解释 XGBoost的参数分为三大类: 通用参 ...

  3. XGBoost 重要参数(调参使用)

    XGBoost 重要参数(调参使用) 数据比赛Kaggle,天池中最常见的就是XGBoost和LightGBM. 模型是在数据比赛中尤为重要的,但是实际上,在比赛的过程中,大部分朋友在模型上花的时间却 ...

  4. 【机器学习】信用卡欺诈检测|用启发式搜索优化XGBoost超参数

    本文将展示如何使用模拟退火[1]启发式搜索[2]机器学习算法中超参数的最佳组合.这些方法比盲随机生成参数得到的模型效果好.另外,模型效果最好是分别微调每个超参数,因为它们之间通常存在交互. 模拟退火简 ...

  5. XGBoost 重要参数、方法、函数理解及调参思路(附例子)

    文章目录 一.xgboost 原生接口 重要参数 训练参数 预测函数 绘制特征重要性 分类例子 回归例子 二.xgboost 的 sklearn 风格接口 XGBClassifier 基本使用 例子 ...

  6. 麻雀优化算法 优化XGBoost的参数 python代码

    文章目录 麻雀优化算法 麻雀优化算法的改进 加入Ten混沌序列 XGBoost原理 麻雀优化算法优化XGBoost 参数范围 部分代码 画图 优化结果 评价结果和运行时间 适应度曲线 训练集结果 测试 ...

  7. XGBoost:参数解释

    XGBoost参数 在运行XGboost之前,必须设置三种类型成熟:general parameters,booster parameters和task parameters: General par ...

  8. xgboost 算法参数解释

    xgboost 算法 目前集成学习方法大致可分为两大类: 第一类是个体学习器之间存在强依赖关系.必须串行生成的序列化方法,这种方法的代表是"Boosting": 第二类是个体学习器 ...

  9. 用贝叶斯优化的方法优化xgboost的参数

    除了我们平常所做的网格搜索,随机搜索外,我发现贝叶斯优化的方法挺不错,然后我就尝试了一下,发现效果挺好的,我这里把我的代码分享出来: 贝叶斯优化通过基于目标函数的过去评估结果建立替代函数(概率模型), ...

最新文章

  1. 谷歌助力,快速实现 Java 应用容器化
  2. phpMyAdmin的配置
  3. python交互式命令_在python中运行交互式命令
  4. python培训中心-吴中区Python培训中心
  5. gdo图形引擎中的旋转角
  6. NVM安装与使用(实现Node多版本控制)
  7. 01-UIContainerView纯代码实现及原理介绍
  8. java.lang.RuntimeException: can not run elasticsearch as root
  9. Thymeleaf select 使用 和多select 级联选择
  10. 面试官系统精讲Java源码及大厂真题 - 31 AbstractQueuedSynchronizer 源码解析(下)
  11. std::cin 溢出_溢出:坦诚地工作与焦虑如何影响我的团队
  12. 在Markdown中更改图像大小
  13. Ubuntu18.04安装福昕阅读器
  14. 总结: 1.函数 2.函数调用 3.函数的参数
  15. Mangos导入AI的教学
  16. Android源码在线查看工具
  17. mhdd测试hdd硬盘软件,硬盘检测工具(HDDScan)
  18. Python自然语言处理 8 分析句子结构
  19. 美团网手机客户端产品分析
  20. Python基础之闭包函数

热门文章

  1. Linux下创建硬链接,文件访问为空,提示:xxxx: 符号连接的层数过多
  2. Alibaba代码规范插件、FindBugs插件安装及详解,IDEA插件安装,代码规范,代码查错,代码格式规范
  3. c++中的vector的常见使用
  4. CMD 输入中文看不到输入法的解决方法
  5. ISOOSI网络模型的通俗解析
  6. 王道考研 计算机网络笔记 第六章:应用层
  7. NVIDIA 自动驾驶软件平台
  8. Minkowski修剪
  9. 基于自动驾驶车辆的NVIDIA-TensorRT推理实时优化
  10. 适用于Linux 2的Windows子系统上的CUDA