0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

XGBoost原理概述 XGBoost和GBDT的区别

WpOh_rgznai100 来源:网络整理 2019-07-16 18:54 次阅读

作者 |梁云1991

一、XGBoost和GBDT

xgboost是一种集成学习算法,属于3类常用的集成方法(bagging,boosting,stacking)中的boosting算法类别。它是一个加法模型,基模型一般选择树模型,但也可以选择其它类型的模型如逻辑回归等。

xgboost属于梯度提升树(GBDT)模型这个范畴,GBDT的基本想法是让新的基模型(GBDT以CART分类回归树为基模型)去拟合前面模型的偏差,从而不断将加法模型的偏差降低。相比于经典的GBDT,xgboost做了一些改进,从而在效果和性能上有明显的提升(划重点面试常考)。第一,GBDT将目标函数泰勒展开到一阶,而xgboost将目标函数泰勒展开到了二阶。保留了更多有关目标函数的信息,对提升效果有帮助。第二,GBDT是给新的基模型寻找新的拟合标签(前面加法模型的负梯度),而xgboost是给新的基模型寻找新的目标函数(目标函数关于新的基模型的二阶泰勒展开)。第三,xgboost加入了和叶子权重的L2正则化项,因而有利于模型获得更低的方差。第四,xgboost增加了自动处理缺失值特征的策略。通过把带缺失值样本分别划分到左子树或者右子树,比较两种方案下目标函数的优劣,从而自动对有缺失值的样本进行划分,无需对缺失特征进行填充预处理。

此外,xgboost还支持候选分位点切割,特征并行等,可以提升性能。

二、XGBoost原理概述

下面从假设空间,目标函数,优化算法3个角度对xgboost的原理进行概括性的介绍。

1,假设空间

2,目标函数

3,优化算法

基本思想:贪心法,逐棵树进行学习,每棵树拟合之前模型的偏差。

三、第t棵树学什么?

要完成构建xgboost模型,我们需要确定以下一些事情。

1,如何boost? 如果已经得到了前面t-1棵树构成的加法模型,如何确定第t棵树的学习目标?

2,如何生成树?已知第t棵树的学习目标的前提下,如何学习这棵树?具体又包括是否进行分裂?选择哪个特征进行分裂?选择什么分裂点位?分裂的叶子节点如何取值?

我们首先考虑如何boost的问题,顺便解决分裂的叶子节点如何取值的问题。

四、如何生成第t棵树?

xgboost采用二叉树,开始的时候,全部样本都在一个叶子节点上。然后叶子节点不断通过二分裂,逐渐生成一棵树。

xgboost使用levelwise的生成策略,即每次对同一层级的全部叶子节点尝试进行分裂。对叶子节点分裂生成树的过程有几个基本的问题:是否要进行分裂?选择哪个特征进行分裂?在特征的什么点位进行分裂?以及分裂后新的叶子上取什么值?叶子节点的取值问题前面已经解决了。我们重点讨论几个剩下的问题。

1,是否要进行分裂?

根据树的剪枝策略的不同,这个问题有两种不同的处理。如果是预剪枝策略,那么只有当存在某种分裂方式使得分裂后目标函数发生下降,才会进行分裂。但如果是后剪枝策略,则会无条件进行分裂,等树生成完成后,再从上而下检查树的各个分枝是否对目标函数下降产生正向贡献从而进行剪枝。xgboost采用预剪枝策略,只有分裂后的增益大于0才会进行分裂。

2,选择什么特征进行分裂?

xgboost采用特征并行的方法进行计算选择要分裂的特征,即用多个线程,尝试把各个特征都作为分裂的特征,找到各个特征的最优分割点,计算根据它们分裂后产生的增益,选择增益最大的那个特征作为分裂的特征。

3,选择什么分裂点位?

xgboost选择某个特征的分裂点位的方法有两种,一种是全局扫描法,另一种是候选分位点法。

全局扫描法将所有样本该特征的取值按从小到大排列,将所有可能的分裂位置都试一遍,找到其中增益最大的那个分裂点,其计算复杂度和叶子节点上的样本特征不同的取值个数成正比。

而候选分位点法是一种近似算法,仅选择常数个(如256个)候选分裂位置,然后从候选分裂位置中找出最优的那个。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • GBDT
    +关注

    关注

    0

    文章

    13

    浏览量

    3893
  • XGBoost
    +关注

    关注

    0

    文章

    9

    浏览量

    2216

原文标题:30分钟看懂XGBoost的基本原理

文章出处:【微信号:rgznai100,微信公众号:rgznai100】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何通过XGBoost解释机器学习

    本文为大家介绍用XGBoost解释机器学习。 这是一个故事,关于错误地解释机器学习模型的危险以及正确解释所带来的价值。如果你发现梯度提升或随机森林之类的集成树模型具有很稳定的准确率,但还是需要对其
    发表于 10-12 11:48 1813次阅读
    如何通过<b class='flag-5'>XGBoost</b>解释机器学习

    PyInstaller打包xgboost算法包等可能出现问题是什么

    PyInstaller 打包 xgboost算法包等可能出现问题
    发表于 07-16 14:35

    基于xgboost的风力发电机叶片结冰分类预测 精选资料分享

    xgboost中文叫做极致梯度提升模型,官方文档链接:https://xgboost.readthedocs.io/en/latest/tutorials/model.html2018年9月6日笔记
    发表于 07-12 06:58

    基于xgboost的风力发电机叶片结冰分类预测 精选资料下载

    xgboost中文叫做极致梯度提升模型,官方文档链接:https://xgboost.readthedocs.io/en/latest/tutorials/model.html2018年9月6日笔记
    发表于 07-12 06:44

    通过学习PPT地址和xgboost导读和实战地址来对xgboost原理和应用分析

    关于xgboost的原理网络上的资源很少,大多数还停留在应用层面,本文通过学习陈天奇博士的PPT和xgboost导读和实战地址,希望对xgboost原理进行深入理解。
    的头像 发表于 01-02 10:18 6530次阅读
    通过学习PPT地址和<b class='flag-5'>xgboost</b>导读和实战地址来对<b class='flag-5'>xgboost</b>原理和应用分析

    面试中出现有关Xgboost总结

    介绍 Xgboost是GB算法的高效实现,xgboost中的基学习器除了可以是CART(gbtree)也可以是线性分类器(gblinear)
    发表于 03-20 16:48 4472次阅读

    基于遗传算法和随机森林的XGBoost改进方法

    回归预测是机器学习中重要的研究方向之一,有着广阔的应用领域。为了进一步提升回归预测的精度,提出了基于遗传算法与随机森林的 Gboost改进方法( GA Xgboost_RF)。首先利用遗传算法
    发表于 04-26 15:44 10次下载
    基于遗传算法和随机森林的<b class='flag-5'>XGBoost</b>改进方法

    基于XGBoost的树突状细胞算法综述

    树突状细胞算法(DCA)要求输入3类信号,需要通过人工选取或统计学等方式提前进行特征提取。为准确、高效地提取特征,提岀一种基于 Xgboost的DCA。通过使用ⅹ Gboost算法迭代生成决策树
    发表于 06-09 14:48 3次下载

    基于Xgboost算法的高锰钢表面粗糙度预测

    基于Xgboost算法的高锰钢表面粗糙度预测
    发表于 06-19 15:09 14次下载

    在几个AWS实例上运行的XGBoost和LightGBM的性能比较

    XGBoost(eXtreme Gradient Boosting)是一个在Gradient Boosting Decision Tree(GBDT)框架下的开源机器学习库(https://github.com/dmlc/xgboost
    的头像 发表于 10-24 10:24 1406次阅读

    XGBoost超参数调优指南

    对于XGBoost来说,默认的超参数是可以正常运行的,但是如果你想获得最佳的效果,那么就需要自行调整一些超参数来匹配你的数据,以下参数对于XGBoost非常重要
    的头像 发表于 06-15 18:15 825次阅读
    <b class='flag-5'>XGBoost</b>超参数调优指南

    详细解释XGBoost中十个最常用超参数

    对于XGBoost来说,默认的超参数是可以正常运行的,但是如果你想获得最佳的效果,那么就需要自行调整一些超参数来匹配你的数据
    的头像 发表于 06-19 17:31 1472次阅读
    详细解释<b class='flag-5'>XGBoost</b>中十个最常用超参数

    XGBoost中无需手动编码的分类特征

    XGBoost 中无需手动编码的分类特征
    的头像 发表于 07-05 16:30 645次阅读

    XGBoost 2.0介绍

    XGBoost是处理不同类型表格数据的最著名的算法,LightGBM 和Catboost也是为了修改他的缺陷而发布的。近日XGBoost发布了新的2.0版,本文除了介绍让XGBoost的完整历史以外
    的头像 发表于 11-03 10:12 474次阅读
    <b class='flag-5'>XGBoost</b> 2.0介绍

    详解XGBoost 2.0重大更新!

    另外还有一点是基于树的模型可以轻松地可视化和解释,这进一步增加了吸引力,特别是在理解表格数据结构时。通过利用这些固有的优势,基于树的方法——尤其是像XGBoost这样的高级方法——非常适合处理数据科学中的各种挑战,特别是在处理表格数据时。
    的头像 发表于 11-14 16:22 785次阅读
    详解<b class='flag-5'>XGBoost</b> 2.0重大更新!