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展开到二阶近似,求得解析解,将解析解带入损失函数得到损失函数最优质Gain,并用这个Gain值作为下一个树模型的增益score来指导建立决策树,使loss function达到最优。

另外,XgBoost还:

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

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

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

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

……

原文地址:https://www.cnblogs.com/yuanzhengpeng/p/10421083.html

时间: 2024-10-17 07:37:43

GBDT和XgBoost的相关文章

一步一步理解GB、GBDT、xgboost

GBDT和xgboost在竞赛和工业界使用都非常频繁,能有效的应用到分类.回归.排序问题,虽然使用起来不难,但是要能完整的理解还是有一点麻烦的.本文尝试一步一步梳理GB.GBDT.xgboost,它们之间有非常紧密的联系,GBDT是以决策树(CART)为基学习器的GB算法,xgboost扩展和改进了GDBT,xgboost算法更快,准确率也相对高一些. 1. Gradient boosting(GB) 机器学习中的学习算法的目标是为了优化或者说最小化loss Function, Gradient

机器学习(四)--- 从gbdt到xgboost

gbdt(又称Gradient Boosted Decision Tree/Grdient Boosted Regression Tree),是一种迭代的决策树算法,该算法由多个决策树组成.它最早见于yahoo,后被广泛应用在搜索排序.点击率预估上. xgboost是陈天奇大牛新开发的Boosting库.它是一个大规模.分布式的通用Gradient Boosting(GBDT)库,它在Gradient Boosting框架下实现了GBDT和一些广义的线性机器学习算法. 本文首先讲解了gbdt的原

四、决策树、随机森林、GBDT、XGBoost

(本节课各种数学式子比较多.....^_^) 决策树 Decision Tree? 介绍? 熵 Entropy? 信息增益 Information Gain? 常见算法? 过度拟合 Overfitting? 剪枝 Prune? 增益率 GainRatio? 更多的DT应?场景类别:? 连续函数,多分类,回归? 决策树的究极进化 Ensemble? Bagging? Random Forest? Boosting? GBDT? XGBoost 决策树 分治思想 根据不同的条件作出相应的决定 熵 区

RF、GBDT、XGBOOST常见面试算法整理

1.  RF(随机森林)与GBDT之间的区别 相同点: 1)都是由多棵树组成的 2)最终的结果都是由多棵树一起决定 不同点: 1)  组成随机森林的树可以是分类树也可以是回归树,而GBDT只由回归树组成 2)  组成随机森林的树可是并行生成,而GBDT只能是串行生成 3)  随机森林的结果是多棵树表决决定,而GBDT则是多棵树累加之和 4)  随机森林对异常值不敏感,而GBDT对异常值比较敏感 5)  随机森林是通过减少模型的方差来提高性能,而GBDT是减少模型的偏差来提高性能 6)  随机森林

gbdt和xgboost api

class xgboost.XGBRegressor(max_depth=3, learning_rate=0.1, n_estimators=100, silent=True, objective='reg:linear', booster='gbtree', n_jobs=1, nthread=None, gamma=0, min_child_weight=1, max_delta_step=0, subsample=1, colsample_bytree=1, colsample_byle

GBDT && XGBOOST

                              GBDT && XGBOOST Outline Introduction GBDT Model XGBOOST Model GBDT vs. XGBOOST Experiments References Introduction Gradient Boosting Decision Tree is a machine learning technique for regression and classification prob

Adaboost和GBDT的区别以及xgboost和GBDT的区别

Adaboost和GBDT的区别以及xgboost和GBDT的区别 以下内容转自 https://blog.csdn.net/chengfulukou/article/details/76906710 ,本文主要用作记录收藏 AdaBoost VS GBDT 和AdaBoost一样,Gradient Boosting每次基于先前模型的表现选择一个表现一般的新模型并且进行调整.不同的是,AdaBoost是通过提升错分数据点的权重来定位模型的不足,而Gradient Boosting是通过算梯度(g

xgboost原理

出处http://blog.csdn.net/a819825294 1.序 距离上一次编辑将近10个月,幸得爱可可老师(微博)推荐,访问量陡增.最近毕业论文与xgboost相关,于是重新写一下这篇文章. 关于xgboost的原理网络上的资源很少,大多数还停留在应用层面,本文通过学习陈天奇博士的PPT.论文.一些网络资源,希望对xgboost原理进行深入理解.(笔者在最后的参考文献中会给出地址) 2.xgboost vs gbdt 说到xgboost,不得不说gbdt,两者都是boosting方法

决策树和基于决策树的集成方法(DT,RF,GBDT,XGB)复习总结

摘要: 1.算法概述 2.算法推导 3.算法特性及优缺点 4.注意事项 5.实现和具体例子 内容: 1.算法概述 1.1 决策树(DT)是一种基本的分类和回归方法.在分类问题中它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布,学习思想包括ID3,C4.5,CART(摘自<统计学习方法>). 1.2 Bagging :基于数据随机重抽样的集成方法(Ensemble methods),也称为自举汇聚法(boostrap aggregating),整个数据集是