RF 和 GBDT联系和区别
1、RF 原理
用随机的方式建立一个森林,森林里面有很多的决策树,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。
2、RF 优缺点
优点:
(1)在数据集上表现良好,两个随机性的引入,使得随机森林不容易陷入过拟合。
(2)在当前的很多数据集上,相对其他算法有着很大的优势,两个随机性的引入,使得随机森林具有很好的抗噪声能力
(3)能够处理很高维度(feature 很多)的数据,并且不用做特征选择,对数据集的适应能力强,既能处理离散数据,也能处理连续型数据,数据集无需规范化。
(4)可生成一个 Proximities = (pij) 矩阵,用于度量样本之间的相似性:pij=aij/N, aij表示样本i和j出现在随机森林中同一个叶子结点的次数,N随机森林中树的棵数
(5)在创建随机森林的时候,对 generlization error 使用的是无偏估计
(6)训练速度快,可以得到变量重要性排序(两种:基于 OOB 误分率的增加量和基于分裂时的 GINI 下降量)
(7)在训练过程中,能够检测到 feature 间的相互影响
(8)容易做成并行化方法
(9)实现比较简单
缺点:
(1)需要大量的维护工作
(2)对于小量数据集和低维数据集的分类不一定可以得到很好的效果。
(3)执行速度虽然比 Boosting 等快,但是比单个的决策树慢很多。
(4)可能会出现一些差异度很小的树,淹没了一些正确的决策。
(5)当我们需要推断超出范围的独立变量或非独立变量,随机森林做的并不好,我们最好使用如 MARS 那样的算法。
(6)随机森林算法在训练和预测时都比较慢。
(7)如果需要区分的类别十分多,随机森林的表现并不会很好。
3、RF 的优化点
(1)候选特征数 K
K 越大,单棵树的效果会提升,但树之间的相关性也会增强
(2)决策树数量 M
M 越大,模型效果会有提升,但计算量会变大
4、RF 和 GBDT 的联系和区别
联系:
RF 和 GBDT 都是在决策树上进行改造或者集成完成的。
区别:
随机森林:决策树 + bagging = 随机森林
梯度提升树:决策树 + Boosting = GBDT
1. RF 原理
多个决策树同时建模,生成的结果,输出的结果是集体输出的众数决定的,随机森林可以通过收集很多树的子节点对各个类别投票,然后选择获得最多投票的类别作为判断结果。通过计算”森林“的所有子节点的值的平均值来解决回归问题。
随机森林既可以解决回归问题,也可以解决分类问题。
2. RF 优缺点
优点: 可以使用更少的重要变量,获得最好的预测性能 1、在数据集上表现良好,相对于其他算法有较大的优势(训练速度、预测准确度);2、能够处理很高维的数据,并且不用特征选择,而且在训练完后,给出特征的重要性;3、容易做成并行化方法。
缺点:在噪声较大的分类或者回归问题上回过拟合。
3. RF 的优化点
基于随机森林的智能算法特征选择和参数优化混合算法,通过二进制编码,对树的规模、子属性个数和特征选择同时搜索,以最小化袋外数据误差为目标函数。实验选择高维二分类和多分类数据,对比了无特征选择下,参数传统取值和混合遗传随机森林、混合粒子群随机森林和混合鱼群随机森林算法的结果,从F值、G-mean、AUC和OOB error等多个指标表明该算法可以提高随机森林的性能,为特征选择和参数优化提供了新思路。
4. RF 和 GBDT的联系和区别
随机森林,决策树基础上使用Bagging,Bagging可以简单的理解为:放回抽样,多数表决(分类)或简单平均(回归),同时Bagging的基学习器之间属于并列生成,不存在强依赖关系。
GBDT,决策树基础上使用Boosting,与传统的Boosting区别较大,它的每一次计算都是为了减少上一次的残差,而为了消除残差,我们可以在残差减小的梯度方向上建立模型,所以说,在GradientBoost中,每个新的模型的建立是为了使得之前的模型的残差往梯度下降的方法,与传统的Boosting中关注正确错误的样本加权有着很大的区别。
by the way:
RF的两个随机指的是
随机选取划分特征:对于决策树的每个节点,先从该节点的属性集合中随机选取包含k个属性的子集,再从这个子集中选择一个最优属性进行划分,一般推荐k=log2d
随机选取样本:有放回的随机选取样本,因此每个弱学习器的训练样本是有重叠的样本子集。

RF 和 GBDT联系和区别的更多相关文章
- RF、GBDT、XGBOOST常见面试算法整理
1. RF(随机森林)与GBDT之间的区别 相同点: 1)都是由多棵树组成的 2)最终的结果都是由多棵树一起决定 不同点: 1) 组成随机森林的树可以是分类树也可以是回归树,而GBDT只由回归树组 ...
- GBDT,Adaboosting概念区分 GBDT与xgboost区别
http://blog.csdn.net/w28971023/article/details/8240756 ============================================= ...
- RF和GBDT的区别
Random Forest 采用bagging思想,即利用bootstrap抽样,得到若干个数据集,每个数据集都训练一颗树. 构建决策树时,每次分类节点时,并不是考虑全部特征,而是从特征候选集中选取 ...
- GBDT XGBOOST的区别与联系
Xgboost是GB算法的高效实现,xgboost中的基学习器除了可以是CART(gbtree)也可以是线性分类器(gblinear). 传统GBDT以CART作为基分类器,xgboost还支持线性分 ...
- LR、SVM、RF、GBDT、XGBoost和LightGbm比较
正则化 L1范数 蓝色的是范数的解空间,红色的是损失函数的解空间.L2范数和损失函数的交点处一般在坐标轴上,会使\(\beta=0\),当然并不一定保证交于坐标轴,但是通过实验发现大部分可以得到稀疏解 ...
- AI工程师基础知识100题
100道AI基础面试题 1.协方差和相关性有什么区别? 解析: 相关性是协方差的标准化格式.协方差本身很难做比较.例如:如果我们计算工资($)和年龄(岁)的协方差,因为这两个变量有不同的度量,所以我们 ...
- 随机森林RF、XGBoost、GBDT和LightGBM的原理和区别
目录 1.基本知识点介绍 2.各个算法原理 2.1 随机森林 -- RandomForest 2.2 XGBoost算法 2.3 GBDT算法(Gradient Boosting Decision T ...
- RF, GBDT, XGB区别
GBDT与XGB区别 1. 传统GBDT以CART作为基分类器,xgboost还支持线性分类器(gblinear),这个时候xgboost相当于带L1和L2正则化项的逻辑斯蒂回归(分类问题)或者线性回 ...
- GBDT(Gradient Boost Decision Tree)
原文:http://blog.csdn.net/aspirinvagrant/article/details/48415435 GBDT,全称Gradient Boosting Decision Tr ...
随机推荐
- SSRF攻击-运用gopher协议构造POST包--emmmm(http://10.112.68.215:10004/index.php?action=login)
还是天枢的一道CTF题,启程! 分析题目,自己注册账户并登陆后,提示输入一个url,网站会自己运行查找网页信息. emmmmm,很挑衅,网站就当作服务器,我们在url框中输 ...
- ES3之closure ( 闭包 )
词法作用域中使用的域,是变量在代码中声明的位置所决定的.嵌套的函数可以访问在其外部声明的变量. 闭包是函数和声明该函数的词法环境的组合. 1 创建单个闭包 JavaScript中的函数会形成闭包. 闭 ...
- TZOJ 1321 Girls and Boys(匈牙利最大独立集)
描述 the second year of the university somebody started a study on the romantic relations between the ...
- [剑指Offer]25-合并两个排序链表
题目链接 https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337?tpId=13&tqId=11169&t ...
- f5源站获取http/https访问的真实源IP解决方案
1.背景 F5负载均衡设备,很多场景下需要采用旁挂的方式部署.为了保证访问到源站的数据流的request和response的TCP路径一致,f5采用了snat机制.但是这样导致源站上看到的来源IP都是 ...
- SQL创建删除索引
--创建唯一聚集索引create unique clustered index pk_table1 on table1 (column1) --创建唯一非聚集索引create unique noncl ...
- cgi fast-cgi php-fpm区别
php-cli 是php在系统执行的程序,直接执行php文件: cgi和fast-cgi的区别1.cgi和fast-cgi都是php解析协议,负责解析服务器分发过来的php动态文件:cgi程序就会去解 ...
- 35-BigDecimal详解
详解 import java.math.BigDecimal; import java.math.BigInteger; import java.util.Scanner; public class ...
- CentOS 6、7 安装 Golang
方法一:使用二进制文件安装 (推荐) 1.下载二进制文件: wget https://storage.googleapis.com/golang/go1.7.3.linux-amd64.tar.gz ...
- opencv 3.2 vs2015 debug assertion __acrt_first_block == header
网上复制了一个转直方图的代码 ,说来也奇怪, 用imshow 显示 图片在独立窗体内,不存在问题, 要注释掉这段代码就出现了下边的错误. 网上查了查,原来是程序中 有个std::vector<c ...