1、简单介绍XGB

是一种基于boosting增强策略的加法模型,训练的时候采用前向分布算法进行贪婪的学习,每次迭代都学习一棵CART树来拟合之前 t-1 棵树的预测结果与训练样本真实值的残差。XGB对GBDT进行了一系列优化,比如损失函数进行了二阶泰勒展开、目标函数加入正则项、支持并行和默认缺失值处理等,在可扩展性和训练速度上有了巨大的提升,但其核心思想没有大的变化。

2、XGB与GBDT的区别

  • 基分类器:XGB的基分类器不仅支持CART决策树,还支持线性分类器。
  • 导数信息:XGB对损失函数做了二阶泰勒展开,GBDT只用了一阶导数信息,并且XGB还支持自定义损失函数,只要损失函数一阶、二阶可导。
  • 正则项:XGB的目标函数加了正则项, 相当于预剪枝,使得学习出来的模型更加不容易过拟合。
  • 列抽样:XGB支持列采样,与随机森林类似,用于防止过拟合。
  • 缺失值处理:对树中的每个非叶子结点,XGB可以自动学习出它的默认分裂方向。如果某个样本该特征值缺失,会将其划入默认分支。
  • 并行化:注意不是tree维度的并行,而是特征维度的并行。XGBt预先将每个特征按特征值排好序,存储为块结构,分裂结点时可以采用多线程并行查找每个特征的最佳分割点,极大提升训练速度。

3、XGBoost为什么使用泰勒二阶展开

  • 精准性:相对于GBDT的一阶泰勒展开,XGB采用二阶泰勒展开,可以更为精准的逼近真实的损失函数
  • 可扩展性:损失函数支持自定义,只需要新的损失函数二阶可导。

4、XGBoost为什么可以并行训练

  • XGB的并行,并不是说每棵树可以并行训练,XGB本质上仍然采用boosting思想,每棵树训练前需要等前面的树训练完成才能开始训练。
  • XGBoost的并行,指的是特征维度的并行。在训练之前,每个特征按特征值对样本进行预排序,并存储为Block结构,在后面查找特征分割点时可以重复使用,而且特征已经被存储为一个个block结构,那么在寻找每个特征的最佳分割点时,可以利用多线程对每个block并行计算。

5、XGBoost为什么快

  • 分块并行:训练前每个特征按特征值进行排序并存储为Block结构,后面查找特征分割点时重复使用,并且支持并行查找每个特征的分割点
  • 候选分位点:每个特征采用常数个分位点作为候选分割点
  • CPU cache 命中优化: 使用缓存预取的方法,对每个线程分配一个连续的buffer,读取每个block中样本的梯度信息并存入连续的Buffer中。
  • Block 处理优化:Block预先放入内存;Block按列进行解压缩;将Block划分到不同硬盘来提高吞吐。

6、XGBoost防止过拟合的方法

XGB在设计时,为了防止过拟合做了很多优化,具体如下:

  • 目标函数添加正则项:叶子节点个数+叶子节点权重的L2正则化
  • 列抽样:训练的时候只用一部分特征(不考虑剩余的block块即可)
  • 子采样:每轮计算可以不使用全部样本,使算法更加保守
  • shrinkage: 可以叫学习率或步长,在XGB 进行完一次迭代后,会将叶子节点的权重乘上该系数,主要是为了削弱每棵树的影响,让后面有更大的学习空间。

7、XGBoost如何处理缺失值

XGB模型的一个优点就是允许特征存在缺失值。对缺失值的处理方式如下:

  • 在特征k上寻找最佳分割点时,不会对该列特征缺失的样本进行遍历,而只对该列特征值为无缺失值的样本上对应的特征值进行遍历,通过这个技巧来减少了为稀疏离散特征寻找分割点 的时间开销。
  • 在逻辑实现上,为了保证完备性,会将该特征值缺失的样本分别分配到左叶子结点和右叶子结点,两种情形都计算一遍后,选择分裂后增益最大的那个方向(左分支或是右分支),作为预测时特征值缺失样本的默认分支方向。
  • 如果在训练中没有缺失值而在预测中出现缺失,那么会自动将缺失值的划分方向放到右子结点。

【数据挖掘】XGBoost面试题:与GBDT的区别?为什么使用泰勒二阶展开?为什么可以并行训练?为什么快?防止过拟合的方法?如何处理缺失值?相关推荐

  1. xgboost参数_珍藏版 | 20道XGBoost面试题,你会几个?(下篇)

    XGBoost的威名想必大家都有所耳闻,它不仅是数据科学竞赛神器,在工业界中也被广泛地使用.本文给大家分享珍藏许久的XGBoost高频面试题,希望能够加深大家对XGBoost的理解,更重要的是能够在找 ...

  2. 20道XGBoost面试题

    20道XGBoost面试题 20道XGBoost面试题 XGBoost的威名想必大家都有所耳闻,它不仅是数据科学竞赛神器,在工业界中也被广泛地使用.本文给大家分享珍藏了多年的XGBoost高频面试题, ...

  3. adaboost和GBDT的区别以及xgboost和GBDT的区别

    adaboost和GBDT的区别以及xgboost和GBDT的区别 AdaBoost:提高那些被前一轮弱分类器错误分类样本的权值,而降低那些被正确分类样本的权值.这样一来,那些没有得到正确分类的数据, ...

  4. XGBoost Plotting API以及GBDT组合特征实践

    XGBoost Plotting API以及GBDT组合特征实践 写在前面: 最近在深入学习一些树模型相关知识点,打算整理一下.刚好昨晚看到余音大神在Github上分享了一波 MachineLearn ...

  5. 面试题字符集和编码区别_您和理想工作之间的一件事-编码面试!

    面试题字符集和编码区别 A recruiter calls you for a position with your dream company. You get extremely excited ...

  6. (7)FPGA面试题Latch和Register区别

    1.1 FPGA面试题Latch和Register区别 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题Latch和Register区别: 5)结束语. 1 ...

  7. XGBOOST和LGBM及RF的区别:

    1.xgboost基于一种划分时对数值进行预排序presort,因此不能处理类别型特征,这种方法好处是能够处理精准找到分裂点,但是时间复杂度很高: 而Light GBM基于hist直方图,对于连续性特 ...

  8. [马士兵] 一. 初识JAVA 20. 反编译工具的使用 21. 本章最后一段代码 22. 扩展面试题: JDK, JRE, JVM区别

    20. 反编译工具的使用 编译 源代码----->class 反编译 class---->源代码 反编译工具 jd-gui.exe 21. 本章最后一段代码 public class Hi ...

  9. Xgboost如何处理缺失值

    Xgboost Xgboost简介 Xgboost[1]是由陈天奇提出的一种集成学习方法,要想了解Xgboost,这里建议先了解决策树,再了解GBDT(Gradient boosting descen ...

  10. xgboost与gbdt的区别

    目标函数的区别:如图所示(来自于xgboost论文): 从这里来看传统的gbdt是xgboost中的一种特例, 正则化参数为0: 正则化中的T代表叶子的数量,w代表叶子中的结果,即预测值(得分值) , ...

最新文章

  1. 在eclipse里的 flex 没有可视化的编辑
  2. sql 获取两个月内数据_如何在3个月的时间内自学成为数据分析师?
  3. anaconda3卸载python_机器学习Python编程环境:VSCode+Anaconda
  4. 多源计算机培训,多源数据汇聚的多流形学习算法研究
  5. hive xmlserde_hive多分隔符
  6. python的排序方式
  7. 数学打比方(函数和卷积)
  8. word把选择答案弄到题目里_一个极限案例弄明白为何“看答案都明白,做题目就是想不起来”...
  9. 数据增强语义分割和作物杂草分类
  10. 顺藤摸瓜的解决GDB的DEBUG中出现的小问题
  11. cpu核心分配给不同进程linux,Linux技巧:多核下绑定硬件/进程到不同CPU
  12. V5-SP6:iocomp-32/iocomp-64-crack-免安装
  13. 高等代数——大学高等代数课程创新教材(丘维声)——3.4笔记+习题
  14. 以太网和令牌环网的区别
  15. 在WPS绿色版中增加自定义皮肤
  16. 权御天下计算机音乐数字乐谱,权御天下-洛天依-和弦谱-《弹吧》官网tan8.com-和弦谱大全,学吉他,秀吉他...
  17. ArcGIS实验教程——实验二十:ArcGIS数字高程模型DEM建立
  18. 成功解决Fatal error in launcher: Unable to create process using ‘“…python.exe“ “…jupyter.exe“ notebook‘
  19. 【题解】P2916 [USACO08NOV]安慰奶牛Cheering up the Cow-C++
  20. 重磅!人工智能会取代科学家? 道翰天琼认知智能机器人API接口平台为您揭秘-1。

热门文章

  1. 软件架构师的“不归之路“——架构师的职责
  2. 手机黑屏摄像app_手机黑屏摄像软件下载-手机黑屏摄像持续拍摄app1.3安卓版下载_骑士下载...
  3. 知识点:Office插入数学公式常用的快捷键(终于可以解放鼠标了)
  4. CVE-2017-11176: A step-by-step Linux Kernel exploitation (part 3/4)
  5. 降雪致国道315线部分道路通行受阻公路交警部门昼夜坚守
  6. 城市智慧水务供水测试床在工业互联网上发布
  7. Vue 项目中各种痛点问题及解决方案
  8. 常用计算机病毒表及其专杀工具,维金病毒-谁可以提供一个可以在win98平台下使用的维金病毒专杀工具(好象是....
  9. 四月,诗月,你是最美人间四月天。
  10. Crazy Number