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 ...
随机推荐
- Markdown总结整理
今天朋友(SolskGare)向我普及了一个很方便的文本编辑语言Markdown,才意识到之前自己用鼠标一点一点的排版有多low,而且往往还是费力不讨好.今天我就整理一下Markdown的用法,真的是 ...
- android 常用渐变背景绘制
从上到下绘制如图所示 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android= ...
- LeetCode第20题
LeetCode20题不多说上代码 public boolean isValid(String s){ Stack<Character> stack = new Stack<Char ...
- Mac 上fopen总返回NULL
全局,相对路径都不行, 在沙盒中获取也不行 //在沙盒中获取Documents的完整路径 NSString * path = [NSSearchPathForDirectoriesInDomains( ...
- stark组件开发之URL别名的设置
from django.urls import re_path from stark.servers.start_v1 import site, StartHandler from django.ht ...
- 将文件转换成byte[]数组
代码 /// <summary> /// 将文件转换成byte[] 数组 /// </summary> /// <param name="fileUrl&quo ...
- txt写入时报错出现:正由另一进程使用,原来是多此一举的操作
//if (!File.Exists(newfilepath + "\\" + name + num + ".txt")) //{ // File.Create ...
- android时间选择器(API13以上)
public class UnloadCargoFragment extends Fragment implements OnClickListener { private View rootView ...
- Android开发之SharedPreferences的封装
对于大部分初学者来说,如果想利用SharedPreferences进行数据存储的话大部分人(包括本人)应该会这样: 存储: SharedPreferences sharedPreferences = ...
- Ionic3--数据存储
1.使用sqlite cordova plugin add cordova-sqlite-storage --save npm install --save @ionic/storage (本地存储) ...