XGboost和GBDT区别及解读XGboost参数

XGBoost是GBDT的优化版,支持线性模型,采用二阶泰勒展开并引入正则项降低方差,支持列抽样和缺失值处理。XGBoost通过学习速率(eta)和缩减(shrinkage)控制过拟合,还支持并行计算。关键参数包括eta、min_child_weight、max_depth、gamma、subsample、colsample_bytree等,用于控制模型复杂度和学习步长。此外,scale_pos_weight用于处理类别不平衡问题。
摘要由CSDN通过智能技术生成

GBDT和XGBoost区别

  1. 传统的GBDT以CART树作为基学习器,XGBoost还支持线性分类器,这个时候XGBoost相当于L1和L2正则化的逻辑斯蒂回归(分类)或者线性回归(回归);

  2. 传统的GBDT在优化的时候只用到一阶导数信息,XGBoost则对代价函数进行了二阶泰勒展开,得到一阶和二阶导数;

  3. XGBoost在代价函数中加入了正则项,用于控制模型的复杂度。从权衡方差偏差来看,它降低了模型的方差,使学习出来的模型更加简单,放置过拟合,这也是XGBoost优于传统GBDT的一个特性;

  4. shrinkage(缩减),相当于学习速率(XGBoost中的eta)。XGBoost在进行完一次迭代时,会将叶子节点的权值乘上该系数,主要是为了削弱每棵树的影响,让后面有更大的学习空间。(GBDT也有学习速率);

  5. 列抽样。XGBoost借鉴了随机森林的做法,支持列抽样,不仅防止过拟合,还能减少计算;

  6. 对缺失值的处理。对于特征的值有缺失的样本,XGBoost还可以自动学习出它的分裂方向;通常情况下,我们人为在处理缺失值的时候大多会选用中位数、均值或是二者的融合来对数值型特征进行填补,使用出现次数最多的类别来填补缺失的类别特征。在逻辑实现上,为了保证完备性,会分别处理将missing该特征值的样本分配到左叶子结点和右叶子结点的两种情形,计算增益后选择增益大的方向进行分裂即可。可以为缺失值或者指定的值指定分支的默认方向,这能大大提升算法的效率。如果在训练中没有缺失值而在预测中出现缺失,那么会自动将缺失值的划分方向放到右子树。

  7. XGBoost工具支持并行。Boosting不是一种串行的结构吗?怎么并行的?注意XGBoost的并行不是tree粒度的并行,XGBoost也是一次迭代完才能进行下一次迭代的(第t次迭代的代价函数里包含了前面t-1次迭代的预测值)。XGBoost的并行是在特征粒度上的。我们知道,决策树的学习最耗时的一个步骤就是对特征的值进行排序(因为要确定最佳分割点),XGBoost在训练之前,预先对数据进行了排序,然后保存为block结构,后面的迭代中重复地使用这个结构,大大减小计算量。这个block结构也使得并行成为了可能,在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行。

Xgboost安装

  1. https://www.lfd.uci.edu/~gohlke/pythonlibs

  2. CTRL+F 查找 xgboost

  3. 单击 xgboost,找到如下页面

  4. 查询Python版本

  5. 根据Python版本下载安装包

  6. 下载到了桌面

  7. 在cmd模式下安装

pip install C:\Users\77777\Desktop\xgboost-0.90-cp36-cp36m-win_amd64.whl

有时候需要升级pip

直接运行命令:python -m pip install --upgrade pip

成功后再安装xgboost即可

Xgboost参数调节指南

  1. Xgboost参数 XGBoost作者将参数分为3类: 基本(General)参数:指导整体函数 提升(Booster)参数:在每一步指导每个提升(树或回归) 学习任务(Learning Task Parameters)参数:指导优化模型表现 1.1. 基本参数 1.1.1. booster 默认值:gbtree 含义:在每次迭代中的模型类型,有两种选择: gbtree:树模型 gblinear:线性模型 1.1.2. silent 默认值:0 含义 0=运行时打印running messages 1=不打running messages 1.1.3. nthread 运行时的最大线程数 默认值:占当前计算机的最大线程 1.2. 提升参数 这里仅仅介绍树模型(gbtree)的相关参数。 1.2.1. eta 学习步长 default=0.3 一般调整下限为0.01-0.2 1.2.2. min_child_weight 表示所有孩子节点(all observations required in a child)的最小权重和 一般都用来控制过拟合。 但如果调得太高就会导致欠拟合。 default=1 1.2.3. max_depth default=6 用来控制过拟合 一般在3-10之间 1.2.4. gamma default=0 range: [0,∞] 模型在默认情况下,对于一个节点的划分只有在其损失函数得到结果大于0的情况下才进行,而gamma给定了所需的最低损失函数的值 gamma值使得算法更conservation,且其值依赖于损失函数,在模型中应该进行调参。 1.2.5. max_delta_step default=0 在最大化步长的时候,我们允许每个树的权重去估算它。 当max_delta_step=0时,意味着没有误差 当max_delta_step>0时,意味着结果更保守 一般不需要调参。但当类别及不平衡的逻辑回归时可能会用到。 1.2.6. subsample [默认值=1] 与GBM中的subsample相同。表示每棵树中要随机抽样的观察样本的分数。较低的值使算法更为保守,可以防止过度拟合,但太小的值可能会导致欠拟合。典型值为:0.5-1 1.2.7. colsample_bytree

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值