xgboost简单介绍_xgboost介绍
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介绍相关推荐
- OKR简单通俗易懂的介绍,1分钟了解什么是OKR工作法
OKR简单通俗易懂的介绍,1分钟了解什么是OKR工作法
- ASP.NET Atlas简单控件介绍——Sys.Component基类与Sys.UI.Control基类
作者:Dflying Chen (http://dflying.cnblogs.com/) 本系列有三篇文章: ASP.NET Atlas简单控件介绍--Sys.Component基类与Sys.UI. ...
- ASP.NET Atlas简单控件介绍——InputControl,TextBox,Button和CheckBox
作者:Dflying Chen (http://dflying.cnblogs.com/) 注:本系列文章比较基础,基本为Atlas官方文档的翻译,熟悉Atlas的朋友可以跳过. 本系列有三篇文章: ...
- 【转】区块链是什么,如何简单易懂地介绍区块链?
作者:知乎用户 链接:https://www.zhihu.com/question/37290469 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 友情提醒:比特币 ...
- 用计算机自我介绍,计算机简单的自我介绍
无论是找工作还是申请学校,面试都是大家必经的一个过程.而每一场面试几乎都是以"自我介绍"开始的.那么面试计算机应该怎么自我介绍?以下是学习啦小编为您整理的计算机简单的自我介绍内容, ...
- 简单地人物介绍页面设计
简单地人物介绍页面设计 这是我的第一次练习,做的一个关于"杂交水稻之父"袁隆平的简介.简单地用了html和css.以下是两个特点: 1.页面主要有图片和文本组成. 2.文章下方用了 ...
- 区块链入门:如何简单易懂地介绍区块链(图文)
原标题:区块链是什么,如何简单易懂地介绍区块链? 区块链目前就处于一个人人都谈区块链,却无法感知其实际技术魅力的阶段,正是因为此,做出区块链的杀手级应用就至关重要,要做到这一点就需要进行各种场景的探索 ...
- 计算机英语口语面试自我介绍,英语口语的简单面试自我介绍(精选7篇)
英语口语的简单面试自我介绍(精选7篇) 来到一个陌生的地方时,我们就有可能用到自我介绍,自我介绍是我们重新认识自己的开始.现在你是否对自我介绍一筹莫展呢?下面是小编帮大家整理的英语口语的简单面试自我介 ...
- eNSP实验STP简单配置及介绍
STP简单配置及介绍 [学习目标] [理论知识] [实验拓扑] [应用场景] [配置思路] [操作步骤] 步骤1 步骤2 步骤3 方法一: 方法二: 步骤4 步骤5 [实验结果] [学习目标] 1.掌 ...
最新文章
- [zz]lxc使用tc+tbf限制网速
- maven实战笔记-13
- windows系统共享文件夹访问无需验证(输入用户名和密码)即可进入
- itunes app 下载链接的几种表现形式
- IPv6应用普及,任重而道远
- Android位置服务介绍,并介绍如何通过LocationManager对象获取位置信息
- 虚拟机可以识别usb无线网卡,但一直提示设备正在运行中--解决方法
- 「leetcode」452. 用最少数量的箭引爆气球【贪心算法】详细图解
- oracle中isnumber函数,Oracle 函数isnumber问题
- 论文阅读:Deep learning—Yann LeCun, Yoshua Bengio Geoffrey Hinton
- adf输稿器是什么_送稿器是什么
- MySQL 的 Buffer Pool,终于被我搞懂了
- 由Python 学习受挫想到的激励自己学习的方法
- 基于matlab锁相环电路,锁相环PLL的电路原理以及基本构成
- vscode在报错时候自动格式化代码
- 教程:使用C#将PDF页面转换为PNG图像
- 容联云聚客SCRM如何破SCRM保险应用困局
- EPUB阅读APP推荐
- 如何在信号中添加指定信噪比的高斯白噪声,为何深度学习去噪研究采用高斯白噪声?
- 如何用origin作图
热门文章
- Windows 8以后的Windows操作系统关闭Driver Verifier的方法(disable Driver Verifier)
- (附源码)计算机毕业设计SSM健康饮食推荐系统
- 四针角oled屏连接arduino_使用Arduino构建OLED显示屏与Android手机接口的智能手表
- 极速office(Word)怎么撤销上一步操作
- Python中的KFold与StratifiedKFold
- Yarn的调度器--Scheduler探究
- java jjcc jjsdjj dd
- Scala模式匹配详解
- 如何搭建和发布自己的网站
- forword于redirect的区别