文章目录

  • 1.xgboost使用之前是否需要对数据进行归一化处理?
  • 2.xgboost使用之前是否需要对类别型特征进行one-hot处理?
  • 3.XGBoost与GBDT的联系和区别有哪些?
  • 4.为什么XGBoost泰勒二阶展开后效果就比较好呢?
  • 5.XGBoost对缺失值是怎么处理的?
  • 6.XGBoost为什么可以并行训练?

1.xgboost使用之前是否需要对数据进行归一化处理?

  不需要。首先,归一化是对连续特征来说的。那么连续特征的归一化,起到的主要作用是进行数值缩放。数值缩放的目的是解决梯度下降时,等高线是椭圆导致迭代次数增多的问题。而xgboost等树模型是不能进行梯度下降的,因为树模型是阶越的,不可导。树模型是通过寻找特征的最优分裂点来完成优化的。由于归一化不会改变分裂点的位置,因此xgboost不需要进行归一化。

2.xgboost使用之前是否需要对类别型特征进行one-hot处理?

  xgboost支持离散类别特征进行onehot编码,因为xgboost只支持数值型的特征。但是不提倡对离散值特别多的特征通过one-hot的方式进行处理。因为one-hot进行特征打散的影响,其实是会增加树的深度。针对取值特别多的离散特征,我们可以通过embedding的方式映射成低纬向量。与单热编码相比,实体嵌入不仅减少了内存使用并加速了神经网络,更重要的是通过在嵌入空间中映射彼此接近的相似值,它揭示了分类变量的内在属性。

3.XGBoost与GBDT的联系和区别有哪些?

  1. GBDT是机器学习算法,XGBoost是该算法的工程实现。
  2. 正则项:在使用CART作为基分类器时,XGBoost显式地加入了正则项来控制模型的复杂度,有利于防止过拟合,从而提高模型的泛化能力。
  3. 导数信息:GBDT在模型训练时只使用了代价函数的一阶导数信息,XGBoost对代价函数进行二阶泰勒展开,可以同时使用一阶和二阶导数。
  4. 基分类器:传统的GBDT采用CART作为基分类器,XGBoost支持多种类型的基分类器,比如线性分类器。
  5. 子采样:传统的GBDT在每轮迭代时使用全部的数据,XGBoost则采用了与随机森林相似的策略,支持对数据进行采样。
  6. 缺失值处理:传统GBDT没有设计对缺失值进行处理,XGBoost能够自动学习出缺失值的处理策略。
  7. 并行化:传统GBDT没有进行并行化设计,注意不是tree维度的并行,而是特征维度的并行。XGBoost预先将每个特征按特征值排好序,存储为块结构,分裂结点时可以采用多线程并行查找每个特征的最佳分割点,极大提升训练速度。

4.为什么XGBoost泰勒二阶展开后效果就比较好呢?

  1. 从为什么会想到引入泰勒二阶的角度来说(可扩展性):XGBoost官网上有说,当目标函数是MSE时,展开是一阶项(残差)+二阶项的形式,而其它目标函数,如logistic loss的展开式就没有这样的形式。为了能有个统一的形式,所以采用泰勒展开来得到二阶项,这样就能把MSE推导的那套直接复用到其它自定义损失函数上。简短来说,就是为了统一损失函数求导的形式以支持自定义损失函数。至于为什么要在形式上与MSE统一?是因为MSE是最普遍且常用的损失函数,而且求导最容易,求导后的形式也十分简单。所以理论上只要损失函数形式与MSE统一了,那就只用推导MSE就好了。
  2. 从二阶导本身的性质,也就是从为什么要用泰勒二阶展开的角度来说(精准性):二阶信息本身就能让梯度收敛更快更准确。这一点在优化算法里的牛顿法中已经证实。可以简单认为一阶导指引梯度方向,二阶导指引梯度方向如何变化。简单来说,相对于GBDT的一阶泰勒展开,XGBoost采用二阶泰勒展开,可以更为精准的逼近真实的损失函数。

5.XGBoost对缺失值是怎么处理的?

  在普通的GBDT策略中,对于缺失值的方法是先手动对缺失值进行填充,然后当做有值的特征进行处理,但是这样人工填充不一定准确,而且没有什么理论依据。而XGBoost采取的策略是先不处理那些值缺失的样本,采用那些有值的样本搞出分裂点,在遍历每个有值特征的时候,尝试将缺失样本划入左子树和右子树,选择使损失最优的值作为分裂点。

6.XGBoost为什么可以并行训练?

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

参考:

  1. xgboost使用之前是否需要对数据进行归一化处理
  2. 关于categorical embedding
  3. 深入理解XGBoost

如果对您有帮助,麻烦点赞关注,这真的对我很重要!!!如果需要互关,请评论留言!


机器学习—XGBoost常见问题解析相关推荐

  1. [机器学习] 面试常见问题+解析汇总

    机器学习面试题的分类 The first really has to do with the algorithms and theory behind machine learning. You'll ...

  2. 深度学习常见问题解析

    深度学习常见问题解析 计算机视觉与自动驾驶 今天 一.为什么深层神经网络难以训练? 1.梯度消失.梯度消失是指通过隐藏层从后向前看,梯度会变得越来越小,说明前面层的学习会显著慢于后面层的学习,所以学习 ...

  3. DMLC深盟分布式深度机器学习开源平台解析

     DMLC深盟分布式深度机器学习开源平台解析 width="22" height="16" src="http://hits.sinajs.cn/ ...

  4. [深度学习] 面试常见问题+解析汇总

    什么是深度学习,与传统机器学习算法的区别? (1)传统机器学习算法,在一开始,性能(识别率)会随着数据的增加而增加,但一段时间后,它的性能会进入平台期.这些模型无法处理海量数据. (2)最近20年来, ...

  5. java未将对象引用设置_未将对象引用到实例怎么解决_常见问题解析,java

    PPT导入GIF图无法播放_常见问题解析 PPT导入GIF图无法播放,是因为PPT保存时会自动压缩图片,所以导致GIF图片动画效果就失效,解决方法进入图片工具栏,在"压缩图片"的& ...

  6. 加载svr模型_机器学习XGBoost实战,网格搜索自动调参,对比随机森林,线性回归,SVR【完整代码(含注释)+数据集见原文链接】...

    建议:阅读2020.8.7的文章,完全了解GDBT和XGBT的原理. 机器学习- XGBoost,GDBT[过程:决策树,集成学习,随机森林,GDBT,XGBT,LightGBM] 本次实践内容: 数 ...

  7. Kubernetes与docker集群管理常见问题解析

    很荣幸受邀参加开源中国社区的高手问答,我是时速云团队的后端工程师,负责主机管理功能开发.在互动过程中,发现大家在使用/调研kubernetes(简称k8s)过程中遇到了很多问题,这里我总结为几点: l ...

  8. 机器学习算法实现解析:libFM之libFM的训练过程之SGD的方法

    本节主要介绍的是libFM源码分析的第五部分之一--libFM的训练过程之SGD的方法. 5.1.基于梯度的模型训练方法 在libFM中,提供了两大类的模型训练方法,一类是基于梯度的训练方法,另一类是 ...

  9. 蜡笔同步 java_蜡笔同步常见问题解析

    蜡笔同步常见问题解析,蜡笔同步是国内第一个实现联系人.短信.日历与通话记录实时同步的手机软件.下面是蜡笔同步常见问题解析,是不是遇到同样的烦恼,看看怎么解决吧! 手机蜡笔安装后如何启动? 安装手机蜡笔 ...

  10. 机器学习 入门详细解析(二)决策树、随机森林

    文章目录 分类算法-决策树 认识决策树 信息熵 决策树的划分一句之一:信息增益 信息增益的计算 算法案例-泰坦尼克号乘客生存分类模型 决策树的优缺点以及改进 集成学习方法-随机森林 什么是随机森林 算 ...

最新文章

  1. Java8Stream
  2. 机器学习问题方法总结
  3. 关于登录 token 的设计
  4. mave工程中的一个类调用另一个聚合工程的一个类_软件工程系列-UML1
  5. MySQL中常见的函数常见的问题
  6. cocos2dx中node的pause函数(lua)
  7. sql2005中一个xml聚合的例子
  8. 解决Mac电脑在启动时出现空白屏幕情况的解决方法
  9. Python3网络爬虫:requests+mongodb+wordcloud 爬取豆瓣影评并生成词云
  10. 一个 C盘搬家 方式.Chrome搬家到D盘
  11. 努比亚 Z17s (Nubia NX595J) 解锁BootLoader 并刷入recovery ROOT
  12. Bugku misc 旋转跳跃wp
  13. 网络在线播放ASF格式流媒体文件的制作(转)
  14. DOTA数据集+YOLOV5
  15. u3d快速入门图文教程
  16. 单、双目相机标定及其校正相关函数整理
  17. React Native 仿 ofo 共享单车 App
  18. matlab 广义帕累托分布,基于对数矩的广义帕累托分布参数估计方法与流程
  19. 流浪的python博客园_python学习心得第二章
  20. 水声通信系统的建模和仿真-多径衰落信道

热门文章

  1. hasCode in Java
  2. repeater上EVAL绑定后台方法并且传参数
  3. 《视觉SLAM十四讲》课后习题—ch7(更新中……)
  4. Idea 里svn的导入使用
  5. Python Tkinter Grid布局管理器详解
  6. 利用ant脚本 自动构建svn增量/全量 系统程序升级包
  7. 安卓系统所有可声明的权限
  8. Hello China操作系统运行截图(完整版)
  9. C++ enum类型的一个更好的用法
  10. SQL 语句 - Select(2): 指定表中的字段