GBDT和XgBoost

GBDT和XgBoost的区别

首先,GBDT来自于融合模型中的Boosting算法,Boosting算法的原理是先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,提高训练数据集中判断错误的样本权重,降低判断正确的权重,使得先前基学习器做错的样本在后续能得到更多关注,然后基于调整后的样本分布来训练下一个基学习器,使下一轮的基学习器能纠正之前学习器的一些错误。

顺便提一下融合模型中的Bagging算法,它是基于自助采样法,每次有放回地随机从训练集中取出一个样本放入采样集,重复n此后(假设有n个样本),若n足够大,样本不被放到采样集中的概率是1/e,则采样集中的不同样本大约占总样本的63.2%。剩下的36.8%的样本还可以作为验证集对泛化性能进行估计。这样可以采样出T各含有n个样本的采样集,训练得到T个基学习器,再将它们进行结合。结合方式是,对于分类任务采用简单投票法,对回归任务使用平均法。

随机森林是Bagging的一个扩展变体,在Bagging算法采用数模型作为基学习器的基础上,在建立基学习器的时候,还采用了随机的属性选择。使得基学习器的多样性不仅包含了样本扰动的来源,还有属性扰动。使泛化性能通过基学习器之间的差异度增加而进一步提升。

 

以决策树为基函数的提升方法,称为提升树。如果提升树用作分类任务,那么就是AdaBoost的特殊情况,只要把基学习器设定为cart分类树即可。而对于回归任务,提升树的做法是,每次用以前的基学习器的组合训练结果和真实数据之间的残差来训练一个新的基学习器。由于损失函数的复杂性,使得对于有的损失函数,最大的残差并不一定是优化的最好方向。因此提出使用损失函数在当前模型的负梯度值来作为残差的近似值。并用该近似值来获得训练下一个基学习器。

利用负梯度代替残差的本质就是利用了损失函数的梯度下降法,相对于直接使用残差,优点是:

  1. 负梯度的方向可证,模型优化下去可以保证收敛;
  2. 对某些损失函数,最大残差方向并不是下降最好方向。损失函数最小和残差最小二者不统一;
  3. 梯度下降方法使我们可以对一些不能直接最小化的模型进行优化。

 

XgBoost方法利用了损失函数的一阶和二阶信息,从而构建残差近似。如果从优化的角度讲,XgBoost和GBDT最大的不同在于:

GBDT:采用数值优化的思维,利用最速下降法取求解loss function的最优解,其中用cart决策树去拟合负梯度,用牛顿法求步长;

XgBoost:用解析的思维,对loss function展开到二阶近似,求得解析解,将解析解带入损失函数,得到损失函数最优值,使用解析解构建树节点的值,并用损失函数的变化值作为下一个树模型的增益score来指导建立决策树,使loss function达到最优。

 

另外,XgBoost还:

弱分类器除了支持cart还支持lr和linear;

加入了正则项,用于控制模型的复杂度;

借鉴了随机森林的做法,支持列抽样(属性抽样);

支持不同的损失函数,条件是损失函数一、二阶可导;

……

LightGBM是Xgboost的进一步优化,在生长树时采用了leaf-wise的生长策略,选择使损失下降最快的叶节点进行分裂,生长相同的leaf时,leaf-wise可以使损失达到更小。对于树模型过拟合的处理方式是,对leaf(主要)、depth、min_data_in_leaf等参数进行调整,限制分裂的数目。

转载于:https://www.cnblogs.com/yuanzhengpeng/p/10421834.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值