xgboost是华盛顿大学博士陈天奇创造的一个梯度提升(Gradient Boosting)的开源框架。至今可以算是各种数据比赛中的大杀器,被大家广泛地运用。接下来,就简单介绍一下xgboost和普通的GBDT相比,有什么不同。(何为Gradient Boosting, GBDT请看我上篇文章)

1. 梯度下降

在GBDT中,我们每次生成下一个弱学习器,都是把损失函数的梯度作为学习目标,相当于利用梯度下降法进行优化来逼近损失函数的最小值,也就是使得损失函数为0,最终学习器尽可能接近真实结果。

而xgboost中,我们则是把损失函数的二阶泰勒展开的差值作为学习目标,相当于利用牛顿法进行优化,来逼近损失函数的最小值,也就是使得损失函数为0。

那为什么可以这么逼近呢?这就涉及到泰勒展开:

梯度下降法就是用一阶泰勒展开来近似函数:

而牛顿法则是用二阶泰勒展开来近似函数:

之后具体的迭代收敛原理请看最优化方法。

2. 正则项

正则项是为了防止模型过拟合。于是,一般的损失函数

就变成了目标函数

。这样,随着树的复杂度增大,对应的目标函数也就变大,这样就有效防止了过拟合。叶子节点个数(T),叶节点分数(w)

对叶子节点个数进行惩罚,相当于在训练过程中做了剪枝。

将xgboost的目标函数进行化简,并把

决策树和

代入:

令 其导数为0,解得每个叶节点的最优预测分数为:

代入目标函数,得到最小损失为:

3. 树节点分裂方法

精确算法:遍历所有特征的所有可能分割点,来寻找使目标函数最小的分割点。

近似算法:对于每个特征,只考察分位点,减少计算复杂度。

而XGBoost不是简单地按照样本个数进行分位,而是以二阶导数值作为权重(Weighted Quantile Sketch),比如:

4. 其他特征shrinkage(收缩)方法:相当于学习系数eta。对每颗子树都要乘上该系数,防止过拟合。

列采样:对特征进行降采样,灵感来源于随机森林,除了能降低计算量外,还能防止过拟合。

行采样:

缺失值处理:通过枚举所有缺失值在当前节点是进入左子树,还是进入右子树更优来决定一个处理缺失值默认的方向。

xgboost工具支持并行。一般决策树中,我们需要每次都对特征的值进行排序,来寻找分割点,极其费时。xgboost中,我们先对每个特征进行分块(block)并排序,使得在寻找最佳分裂点的时候能够并行化计算。这个结构加速了split finding的过程,只需要在建树前排序一次,后面节点分裂时直接根据索引得到梯度信息。这是xgboost比一般GBDT更快的一个重要原因。

out-of-core, cache-aware优化内存等方法来加速计算。

参考资料:

xgboost简单介绍_xgboost介绍相关推荐

  1. OKR简单通俗易懂的介绍,1分钟了解什么是OKR工作法

    OKR简单通俗易懂的介绍,1分钟了解什么是OKR工作法

  2. ASP.NET Atlas简单控件介绍——Sys.Component基类与Sys.UI.Control基类

    作者:Dflying Chen (http://dflying.cnblogs.com/) 本系列有三篇文章: ASP.NET Atlas简单控件介绍--Sys.Component基类与Sys.UI. ...

  3. ASP.NET Atlas简单控件介绍——InputControl,TextBox,Button和CheckBox

    作者:Dflying Chen (http://dflying.cnblogs.com/) 注:本系列文章比较基础,基本为Atlas官方文档的翻译,熟悉Atlas的朋友可以跳过. 本系列有三篇文章: ...

  4. 【转】区块链是什么,如何简单易懂地介绍区块链?

    作者:知乎用户 链接:https://www.zhihu.com/question/37290469 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 友情提醒:比特币 ...

  5. 用计算机自我介绍,计算机简单的自我介绍

    无论是找工作还是申请学校,面试都是大家必经的一个过程.而每一场面试几乎都是以"自我介绍"开始的.那么面试计算机应该怎么自我介绍?以下是学习啦小编为您整理的计算机简单的自我介绍内容, ...

  6. 简单地人物介绍页面设计

    简单地人物介绍页面设计 这是我的第一次练习,做的一个关于"杂交水稻之父"袁隆平的简介.简单地用了html和css.以下是两个特点: 1.页面主要有图片和文本组成. 2.文章下方用了 ...

  7. 区块链入门:如何简单易懂地介绍区块链(图文)

    原标题:区块链是什么,如何简单易懂地介绍区块链? 区块链目前就处于一个人人都谈区块链,却无法感知其实际技术魅力的阶段,正是因为此,做出区块链的杀手级应用就至关重要,要做到这一点就需要进行各种场景的探索 ...

  8. 计算机英语口语面试自我介绍,英语口语的简单面试自我介绍(精选7篇)

    英语口语的简单面试自我介绍(精选7篇) 来到一个陌生的地方时,我们就有可能用到自我介绍,自我介绍是我们重新认识自己的开始.现在你是否对自我介绍一筹莫展呢?下面是小编帮大家整理的英语口语的简单面试自我介 ...

  9. eNSP实验STP简单配置及介绍

    STP简单配置及介绍 [学习目标] [理论知识] [实验拓扑] [应用场景] [配置思路] [操作步骤] 步骤1 步骤2 步骤3 方法一: 方法二: 步骤4 步骤5 [实验结果] [学习目标] 1.掌 ...

最新文章

  1. [zz]lxc使用tc+tbf限制网速
  2. maven实战笔记-13
  3. windows系统共享文件夹访问无需验证(输入用户名和密码)即可进入
  4. itunes app 下载链接的几种表现形式
  5. IPv6应用普及,任重而道远
  6. Android位置服务介绍,并介绍如何通过LocationManager对象获取位置信息
  7. 虚拟机可以识别usb无线网卡,但一直提示设备正在运行中--解决方法
  8. 「leetcode」452. 用最少数量的箭引爆气球【贪心算法】详细图解
  9. oracle中isnumber函数,Oracle 函数isnumber问题
  10. 论文阅读:Deep learning—Yann LeCun, Yoshua Bengio Geoffrey Hinton
  11. adf输稿器是什么_送稿器是什么
  12. MySQL 的 Buffer Pool,终于被我搞懂了
  13. 由Python 学习受挫想到的激励自己学习的方法
  14. 基于matlab锁相环电路,锁相环PLL的电路原理以及基本构成
  15. vscode在报错时候自动格式化代码
  16. 教程:使用C#将PDF页面转换为PNG图像
  17. 容联云聚客SCRM如何破SCRM保险应用困局
  18. EPUB阅读APP推荐
  19. 如何在信号中添加指定信噪比的高斯白噪声,为何深度学习去噪研究采用高斯白噪声?
  20. 如何用origin作图

热门文章

  1. Windows 8以后的Windows操作系统关闭Driver Verifier的方法(disable Driver Verifier)
  2. (附源码)计算机毕业设计SSM健康饮食推荐系统
  3. 四针角oled屏连接arduino_使用Arduino构建OLED显示屏与Android手机接口的智能手表
  4. 极速office(Word)怎么撤销上一步操作
  5. Python中的KFold与StratifiedKFold
  6. Yarn的调度器--Scheduler探究
  7. java jjcc jjsdjj dd
  8. Scala模式匹配详解
  9. 如何搭建和发布自己的网站
  10. forword于redirect的区别