今日面试题分享:请问 GBDT 和 XGBoost的区别是什么

题目:请问(决策树、Random Forest、Booting、Adaboot)GBDT和XGBoost的区别是什么?


参考答案:

解析:

集成学习的集成对象是学习器. Bagging和Boosting属于集成学习的两类方法. Bagging方法有放回地采样同数量样本训练每个学习器, 然后再一起集成(简单投票); Boosting方法使用全部样本(可调权重)依次训练每个学习器, 迭代集成(平滑加权).

决策树属于最常用的学习器, 其学习过程是从根建立树, 也就是如何决策叶子节点分裂. ID3/C4.5决策树用信息熵计算最优分裂, CART决策树用基尼指数计算最优分裂, xgboost决策树使用二阶泰勒展开系数计算最优分裂.

下面所提到的学习器都是决策树:

Bagging方法:

学习器间不存在强依赖关系, 学习器可并行训练生成, 集成方式一般为投票;

Random Forest属于Bagging的代表, 放回抽样, 每个学习器随机选择部分特征去优化;

Boosting方法:

学习器之间存在强依赖关系、必须串行生成, 集成方式为加权和; Adaboost属于Boosting, 采用指数损失函数替代原本分类任务的0/1损失函数;

GBDT属于Boosting的优秀代表, 对函数残差近似值进行梯度下降, 用CART回归树做学习器, 集成为回归模型;

xgboost属于Boosting的集大成者, 对函数残差近似值进行梯度下降, 迭代时利用了二阶梯度信息, 集成模型可分类也可回归. 由于它可在特征粒度上并行计算, 结构风险和工程实现都做了很多优化, 泛化, 性能和扩展性都比GBDT要好。

关于决策树,这里有篇《决策树算法》(链接:http://blog.csdn.net/v_july_v/article/details/7577684)。

而随机森林Random Forest是一个包含多个决策树的分类器。至于AdaBoost,则是英文"Adaptive Boosting"(自适应增强)的缩写,关于AdaBoost可以看下这篇文章《Adaboost 算法的原理与推导》。GBDT(Gradient Boosting Decision Tree),即梯度上升决策树算法,相当于融合决策树和梯度上升boosting算法。

引用自:@AntZ

xgboost类似于gbdt的优化版,不论是精度还是效率上都有了提升。与gbdt相比,具体的优点有:

1.损失函数是用泰勒展式二项逼近,而不是像gbdt里的就是一阶导数 2.对树的结构进行了正则化约束,防止模型过度复杂,降低了过拟合的可能性

3.节点分裂的方式不同,gbdt是用的gini系数,xgboost是经过优化推导后的

引用自:@Xijun LI

题目来源:七月在线官网(www.julyedu.com)——面试题库——面试大题——机器学习


关注公众号:七月在线实验室,回复:100,免费领取机器学习面试题PDF版


分享到:


相關文章: