【数据挖掘】GBDT,XGBoost

小白学数据,只为记录学习进程,对每个问题有新的理解会及时更正。

两个模型都是基于Boosting的思想,采用串联的方法来提升预测的精度

一、GBDT
GBDT采用的弱学习器是CART回归决策树,所以,首先学习一下CART回归决策树的知识
假设有 N 个样本,每个样本有 J 个属性
1.对每个样本的y值进行从小到大的排序,然后取相邻两个值的均值作为分割点
2.计算分割后,左右两个叶子的误差之和:
在这里插入图片描述
其中c1是左边叶子节点的y的预测值的均值,c2是右边叶子节点的y的预测值的均值,计算出每个划分点的均方误差的值,取均方误差最小的那个分割点,作为这个属性的最佳分割点。
3.遍历每个属性,取均方误差最小对应的属性为第一个分割点
4.对分割后的叶子节点,重复1-3的步骤,直到满足终止条件。
5.最后得到决策树模型:
在这里插入图片描述

以上便是CART回归树的原理。

在知道CART回归树的原理后,我们来看看GBDT的步骤:
1.先定义初始值:
在这里插入图片描述
2.然后计算第m步的残差,使用负梯度来替代:
在这里插入图片描述
3.计算第m棵树的每个叶子节点的值:
使用CART确定决策树的方法
在这里插入图片描述
4.集合第m步的弱学习器:
在这里插入图片描述
5.得到最终的强学习器:
在这里插入图片描述
得到最终的学习器为:
在这里插入图片描述
这里思考为什么采用负梯度来替代残差,而不是直接使用残差来当作下一个模型的拟合目标:
在这里插入图片描述

二、XGBOOST
1.确定目标函数:
在这里插入图片描述
L(x)是误差函数,即计算预测值和实际值之间的差值,Ω(x)是对每个模型的惩罚项。

2.迭代每一步的预测值:
在这里插入图片描述
因为xgboost也是采用boosting的思想,是多个弱学习器的累加。前m个弱学习器加上第m个弱学习器可以得到当前的强学习器。并把前m-1项(已知),换成常数constant。
3.利用Taylor二阶展开式来展开误差函数:
在这里插入图片描述

4.替换里面的常数值,并且根据一元二次方程来求目标函数的最小值:
为了使目标函数最小,可以令其导数为0,解得每个叶节点的最优预测分数为:
在这里插入图片描述
带入到原目标函数中,得到最小值:
在这里插入图片描述
5.决定每棵树该怎么构建:
思想和CART回归树一样,遍历每一个属性的每个分裂点,计算每个分裂点的目标函数值。
在这里插入图片描述
然后通过计算目标函数值的增益Gain,来选择分裂哪个属性(选择Gain最大的属性的分裂点),以及怎么分裂
6.循环5的步骤,直到满足终止条件
在这里插入图片描述
在这里插入图片描述

三、GBDT和XGBOOST的区别
1.传统GBDT在优化时只用到一阶导数信息,xgboost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。
2.xgboost在代价函数里加入了正则项,用于控制模型的复杂度。正则项里包含了树的叶子节点个数、每个叶子节点上输出的score的L2模的平方和。从Bias-variance tradeoff角度来讲,正则项降低了模型的variance,使学习出来的模型更加简单,防止过拟合,这也是xgboost优于传统GBDT的一个特性。
3.xgboost借鉴了随机森林的做法,支持列抽样,不仅能降低过拟合,还能减少计算,这也是xgboost异于传统gbdt的一个特性
4.对缺失值的处理。对于特征的值有缺失的样本,xgboost可以自动学习出它的分裂方向
5.传统的GBDT采用CART作为基分类器,XGBoost支持多种类型的基分类器,比如线性分类器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值