1、  RF(随机森林)与GBDT之间的区别

相同点:

1)都是由多棵树组成的

2)最终的结果都是由多棵树一起决定

不同点:

1)  组成随机森林的树可以是分类树也可以是回归树,而GBDT只由回归树组成

2)  组成随机森林的树可是并行生成,而GBDT只能是串行生成

3)  随机森林的结果是多棵树表决决定,而GBDT则是多棵树累加之和

4)  随机森林对异常值不敏感,而GBDT对异常值比较敏感

5)  随机森林是通过减少模型的方差来提高性能,而GBDT是减少模型的偏差来提高性能

6)  随机森林不需要进行数据预处理、归一化,而GBDT需要进行归一化

2、  分类树与回归树的区别

1)  分类树使用信息增益或者增益比来划分节点;每个节点的类别经投票数额决定测试样本的类别;

2)  回归树使用最小化均方差划分节点;每个节点样本的均值作为测试样本的回归预测值

3、  GBDT的核心

1)  GBDT的核心就在于每一棵树都建立在之前所学的所有树的绝对值残差,这个残差就是一个加预测值后的真实值的累加量

4、  XGBOOST和GBDT的区别

1)  传统GBDT以CART作为基分类器,xgboost还支持线性分类器,这个时候xgboost相当于带L1和L2正则化项的逻辑斯蒂回归(分类问题)或者线性回归(回归问题)。

2)  节点分裂的方式不同,gbdt是用gini系数,xgboost是经过优化推导后的。

3)  传统的GBDT在优化时只用到一阶导数信息,xgboost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。

4)  xgboost在代价函数里加入了正则项,用于控制模型得复杂度,降低了过拟合的可能性。正则项里包含了树的叶子节点的个数、每个叶子节点上输出的score的L2模的平方和。

5)  shrinkage(缩减),相当于学习速率(XGBoost中的eta)。XGBoost在进行完一次迭代时,会将叶子节点的权值乘上该系数,主要是为了削弱每棵树的影响,让后面有更大的学习空间。(GBDT也有学习速率);

6)  列抽样。XGBoost借鉴了随机森林的做法,支持列抽样,不仅防止过 拟合,还能减少计算;

7)  对缺失值的处理。对于特征的值有缺失的样本,XGBoost还可以自动 学习出它的分裂方向;

8)  xgboost工具支持并行。注意xgboost的并行并不是tree粒度的并行,xgboost的并行是在特征粒度上的。我们知道,决策树的学习最耗时的一个步骤就是对特征值进行排序(因为要确定最佳分割点),xgboost在训练之前,预先对数据进行了排序,然后保存为block结构,后面的迭代中重复的使用这个结构,大大减小计算量。这个block结构也使得并行成为可能,在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行。

9)   xgboosst借鉴了随机森林的做法,支持列抽样,不仅能降低过拟合,还能减少计算,这也是xgboost异于传统gbdt的一个特性。

10)              对缺失值处理。对于特征的值有缺失样本,xgboost可以自动学习出他的分裂方向。

1)    为什么xgboost要用泰勒展开,优势在哪里?

xgboost使用了一阶和二阶偏导,二阶导数有利于梯度下降的更快更准。使用泰勒展开取得函数做自变量得二阶导数形式,可以在不选定损失函数具体形式的情况下,仅仅依靠输入数据的值就可以进行叶子分裂优化计算,本质上也就把损失函数的选取和模型算法优化/参数选择分开了,这种去耦合增加了xgboost的适用性,使得它按需选取损失函数,可以用于分类,也可以用于回归

5、  GBDT怎样设置单颗树的停止生长条件?

1)  节点分裂时的最小样本数

2)  树的最大深度

3)  最多叶子节点数

4)  Loss满足约束条件

6、  GBDT如何评估特征值的权重大小?

1)  通过计算每个特征在训练集下的信息增益,最后计算每个特征信息增益与所有特征信息增益之和的比例为权重值

2)  借鉴投票机制。用相同的GBDT参数对w每个特征训练出一个模型,然后在该模型下计算每个特征正确分类的个数,最后计算每个特征正确分类的个数与所有正确分类个数之和的比例为权重值

7、  GBDT当增加样本数量时,训练时长是线性增加吗?

不是的,因为生成单棵决策树时,对于损失函数极小值与样本数量N不是线性相关的

8、  当增加树的棵数时,训练时长是线性增加吗?

不是的,因为每棵树的生成时间复杂度O(N)不同

9、  当增加一棵树叶子节点数目时,训练时长是线性增加吗?

不是的,叶子节点数和每棵树的生成之间复杂度O(N)不成正比

10、每个节点上都保存什么信息?

中间节点保存某个特征的分割值,叶节点保存预测是某个类别的概率

11、如何防止过拟合

1)增加样本,移除噪声

2)减少特征,保留一些重要的特征

3)对样本进行采样,就是在构建树的时候,不是把所有的样本都作为输入,而是选择一部分数据作为子集

4)对特征进行采样化,和对样本采样基本一致,就是在每次建树的时候只对部分的特征进行切分

12、GBDT中哪些部分可以并行

1)计算每个样本的负梯度时

2)分裂挑选最佳特征及其分割点时,对特征计算相应的误差及均值时

3)更新每个样本的负梯度时

4)最后预测的过程当中,每个样本将之前的所有树的结果累加的时候

13、树生成畸形树,会带来哪些危害,如何预防?

在生成树的过程中,加入树不平衡的约束条件。这种约束条件可以是用户自定义的。例如对样本集中分到某个节点,而另一个节点的样本很少的情况进行惩罚。

RF、GBDT、XGBOOST常见面试算法整理的更多相关文章

  1. RF,GBDT,XGBoost,lightGBM的对比

    转载地址:https://blog.csdn.net/u014248127/article/details/79015803 RF,GBDT,XGBoost,lightGBM都属于集成学习(Ensem ...

  2. RF/GBDT/XGBoost/LightGBM简单总结(完结)

    这四种都是非常流行的集成学习(Ensemble Learning)方式,在本文简单总结一下它们的原理和使用方法. Random Forest(随机森林): 随机森林属于Bagging,也就是有放回抽样 ...

  3. 常见面试算法题JS实现-设计一个有getMin功能的栈

    前言: 已经确定工作了-下周一正式入职,按理说应该是可以好好浪荡一周的,但是内心总是不安,总觉得自己这个水平真的太菜了,还是趁着现在有自己的时间,赶紧多看看书,多学习学习吧orz所以把之前校招买的书, ...

  4. 常见排序算法整理(python实现 持续更新)

    1 快速排序 快速排序是对冒泡排序的一种改进.  它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行 ...

  5. 常见面试算法题JS实现-仅用递归函数和栈操作逆序一个栈

    前言: 因为JAVA和JS语言特性的不同,有些东西在JAVA中可能需要一些技巧和手段才能实现的复杂程序,但是在JS中可能就是天然存在的,所以这套书里面的题目不会全部用JS去实现一遍,因为可能JS的实现 ...

  6. 机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)

    前言: 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考 ...

  7. 机器学习&数据挖掘笔记(常见面试之机器学习算法思想简单梳理)

    机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 作者:tornadomeet 出处:http://www.cnblogs.com/tornadomeet 前言: 找工作时( ...

  8. [转]机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)

    机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 转自http://www.cnblogs.com/tornadomeet/p/3395593.html 前言: 找工作时(I ...

  9. 随机森林RF、XGBoost、GBDT和LightGBM的原理和区别

    目录 1.基本知识点介绍 2.各个算法原理 2.1 随机森林 -- RandomForest 2.2 XGBoost算法 2.3 GBDT算法(Gradient Boosting Decision T ...

随机推荐

  1. 如何在VS中快速导入新的源码以及文件夹

    参考链接:http://www.cjjjs.com/paper/xmkf/201641716212844.aspx 在visual studio 2013中尝试发现的问题:原文中“显示所有文件 ”的操 ...

  2. app开发,H5+CSS3页面布局小tips

    1.inline-block使用后带来的间隔影响 2.竖线的处理 3.ssh公匙 4.星星组件的巧妙用法 5.api.js的$api对象与 安卓原生引擎的api对象,均相当于jQuery的$对象 6. ...

  3. 工控图表控件ProEssentials创建3D柱状图示例代码

    使用ProEssentials可以创建3D柱状图,柱状图的形式包括线框.实体和阴影. 类似于Graph control,3D柱状图只需要YData. Subsets定义沿z轴有多少行,Points定义 ...

  4. Activiti20180624

    1.工作流介绍 工作流(WorkFlow),是对工作流程及其各操作步骤之间业务规则的抽象.概括.描述.工作建模,即将工作流程中的工作如何前后组织在一起的逻辑和规则,在计算机中以恰当的模型进行表示并对其 ...

  5. 事件(Application Event)

    Spring的事件(Appllcation Event)为Bean与Bean之间的消息通信提供了支持.当一个Bean处理完一个任务后,希望另一个Bean知道并能做相应的处理,这种情况可以让另一个Bea ...

  6. nvm安装nodejs(安装在非系统盘内)

    在使用nodejs时有时需要不同的版本之间进行切换,所以就用到了版本管理工具nvm,在windows系统下用的是nvm-windows,这里选择的是nvm-noinstall.zip免安装版本(需要配 ...

  7. COGS 2769. mk去撸串

    [题目描述] 今天 mk 去撸串 ,恰逢店里活动 ,如果吃一种串串超过记录, 可以 赠送 328, 所以 mk 想知道他吃的串串中吃的最多的种类是什么. [输入格式] 第一行一个整数 1<=n& ...

  8. [Rails学习之路]初识Ruby(二)

    继续上次Ruby的学习.接下来就到了Ruby的方法. Ruby的方法与Python仍然很像.使用def定义,可以使用undef取消定义. 在Ruby中,经常可以看见方法后面跟有"?" ...

  9. Problem G: 角谷步数

    Problem G: 角谷步数 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 78  Solved: 28[Submit][Status][Web Bo ...

  10. Matlab将多幅图片保存为mat

    %% 储存某目录所有的图片 pt = 'd:\imgs\'; ext = '*.jpg'; dis = dir([pt ext]); nms = {dis.name}; for k = 1:lengt ...