随机森林

单棵决策树的劣势

有时候单棵决策树可能难以实现较高的准确率,这主要是由以下几个方面决定的:

  • 求解一棵最优(泛化误差最小)的决策树是一个NP难(无法穷极所有可能的树结构)问题,往往得到的是局部最优解。
  • 单棵树构建的模型往往不够稳定,样本变动很容易引起树结构的变动
  • 解决过拟合问题除划分测试集和训练集外依赖于剪枝

随机森林简述

随机森林是一种以决策树为基分类器的集成算法,通过组合多棵独立的决策树后根据投票或取均值的方式得到最终预测结果的机器学习方法,往往比单棵树具有更高的准确率和更强的稳定性。随机森林相比于决策树拥有出色的性能主要取决于随机抽取样本和特征集成算法,前者让它具有更稳定的抗过拟合能力,后者让它有更高的准确率。

1、基分类器的生成

随机森林本质上是一种集成算法,由众多的基分类器组成。其中组成随机森林的基分类器是CART树,各棵决策树独立生成且完全分裂,既可以解决分类问题又可以解决回归问题。

2、随机化

随机森林为了保证较强的抗过拟合和抗噪声能力,在构建每一棵CART决策树的时候采用了行抽样和列抽样的随机化方法。

  • 行抽样

假设训练集的数据行数为N,对于每一棵CART树,我们从N个原始样本中有放回地随机抽取N个作为单棵树的训练集。假设随机森林中CART树数目为K,那么我们通过该办法生成
个独立K的训练集用于CART的训练。对于单独一个样本而言,它在N次有放回地随机抽样中都不被抽中的概率是:

当N足够大时,该式的结果约等于0.368,即在每一轮行抽样大概有36.8%的数据始终不会被采集到。

  • 列抽样

假设原始数据集的特征数为M,在通过行采样获取每棵CART树的训练集后,随机森林会随机选取m个特征(m < M)训练用于每一棵CART树的生成。当m越小时,模型的抗干扰性和抗过拟合性越强,但是模型的准确率会下降,因此在实际建模过程中,常需要用交叉验证等方式选择合适的m值。

随机森林参数

  • 随机选取的特征数m
    随机抽取的特征数m要满足小于等于总特征数M,其中m较小时模型的偏差增加但方差会减少,表现为拟合效果不佳但泛化效果增长。在建模过程中常通过OOB验证或者交叉验证确定m取值。
  • 决策树个数k
    决策树个数越多时模型的随机化效果越好,从而模型的测试误差越小。理论上在条件允许的范围内,决策树个数k的个数越多越好。当决策树个数较大的时候,测试误差的变化变得很小,这时候就可以确定较为合理的树的数量。
  • 决策树深度d
    当数据量较少或者特征数较少的时候可以不考虑这个值。但是当模型样本量和特征值都较多时,让决策树完全生长会导致随机森林模型的计算量较大从而速度越慢。
随机森林特征重要性

基于树的集成算法还有一个很好的特性,就是模型训练结束后可以输出模型所使用的特征的相对重要度,便于我们选择特征,理解哪些因素是对预测有关键影响。在随机森林中,简单来说,当某一特征在所有树中离树根的平均距离越近,这一特征在给定的分类或回归问题中就越重要。
一般有两种计算特征重要性的方法:基于基尼系数和基于oob 袋外数据。

  • 基于基尼系数

随机森林中每棵树都是CART决策树,因此树在选择向下分裂的特征时,都是基于基尼系数。假设某特征的在某一棵树上的节点m向下分裂,分裂前的基尼系数为 GI ,分裂后,左右分支的基尼系数分别为 GIL 、GIR则,VIm = GI - (GIL+GIR)。假设在这棵数上,该特征分裂了k次,则在这棵树上的重要性为:

假设随机森林中,共有n棵数用到该特征,则整个森林中整个特征的重要性为:

最后把所有求得的M个特征重要性评分进行归一化处理就得到重要性的评分:

  • 基于袋外数据
  1. 对于随机森林中的每一颗决策树,使用相应的OOB(袋外数据)数据来计算它的袋外数据误差,记为errOOB1.
  2. 随机地对袋外数据OOB所有样本的特征X加入噪声干扰,再次计算它的袋外数据误差,记为errOOB2.
  3. 假设随机森林中有N棵树,那么对于特征X的重要性=∑(errOOB2-errOOB1)/N之所以可以用这个表达式来作为相应特征的重要性的度量值是因为:若给某个特征随机加入噪声之后,袋外的准确率大幅度降低,则说明这个特征对于样本的分类结果影响很大,也就是说它的重要程度比较高。而该方法中涉及到的对数据增加噪音或者进行打乱的方法通常有两种:
    1)是使用uniform或者gaussian抽取随机值替换原特征;
    2)是通过permutation的方式将原来的所有N个样本的第 i 个特征值重新打乱分布(相当于重新洗牌)。一般来说,第二种方法使用得更多。

随机森林优点

  • 行抽样和列抽样的引入让模型具有抗过拟合和抗噪声的特性
  • 对数据的格式要求低:因为有列抽样从而能处理高维数据;能同时处理离散型和连续型;和决策树一样不需要对数据做标准化处理;可以将缺失值单独作为一类处理
  • 不同树的生成是并行的,从而训练速度优于一般算法
  • 给能出特征重要性排序
  • 由于存袋外数据,从而能在不切分训练集和测试集的情况下获得真实误差的无偏估计

随机森林缺点

[机器学习算法]随机森林原理相关推荐

  1. 机器学习算法-随机森林初探(1)

    机器学习算法-随机森林之理论概述 表达数据集来源于 https://file.biolab.si/biolab/supp/bi-cancer/projections/. 为了展示随机森林的能力,我们用 ...

  2. 机器学习算法-随机森林之理论概述

    前面我们用 3 条推文从理论和代码角度讲述了决策树的概念和粗暴生成. 机器学习算法-随机森林之决策树R 代码从头暴力实现(3) 机器学习算法-随机森林之决策树R 代码从头暴力实现(2) 机器学习算法 ...

  3. 机器学习算法-随机森林之决策树R 代码从头暴力实现(3)

    前文 (机器学习算法 - 随机森林之决策树初探(1)) 讲述了决策树的基本概念.决策评价标准并手算了单个变量.单个分组的Gini impurity.是一个基本概念学习的过程,如果不了解,建议先读一下再 ...

  4. 机器学习算法-随机森林之决策树R 代码从头暴力实现(2)

    前文(机器学习算法 - 随机森林之决策树初探(1))讲述了决策树的基本概念.决策评价标准并手算了单个变量.单个分组的Gini impurity.是一个基本概念学习的过程,如果不了解,建议先读一下再继续 ...

  5. 机器学习:随机森林原理 OOB等

    看了好多博客介绍随机森林,感觉这几个讲的挺好的,有的有python代码,分享给大家: 1.评测了17个分类器族-192个非神经网络分类器,其中Rfs综合评价效果最好:https://dl.acm.or ...

  6. 【机器学习】机器学习算法 随机森林学习 之决策树

    随机森林是基于集体智慧的一个机器学习算法,也是目前最好的机器学习算法之一. 随机森林实际是一堆决策树的组合(正如其名,树多了就是森林了).在用于分类一个新变量时,相关的检测数据提交给构建好的每个分类树 ...

  7. 机器学习算法 随机森林学习 之决策树

    随机森林是基于集体智慧的一个机器学习算法,也是目前最好的机器学习算法之一. 随机森林实际是一堆决策树的组合(正如其名,树多了就是森林了).在用于分类一个新变量时,相关的检测数据提交给构建好的每个分类树 ...

  8. 机器学习算法 - 随机森林之决策树初探(1)

    随机森林是基于集体智慧的一个机器学习算法,也是目前最好的机器学习算法之一. 随机森林实际是一堆决策树的组合(正如其名,树多了就是森林了).在用于分类一个新变量时,相关的检测数据提交给构建好的每个分类树 ...

  9. 各维度 特征 重要程度 随机森林_机器学习算法——随机森林

    随机森林简介 随机森林是一种通用的机器学习方法,能够处理回归和分类问题.它还负责数据降维.缺失值处理.离群值处理以及数据分析的其他步骤.它是一种集成学习方法,将一组一般的模型组合成一个强大的模型 工作 ...

最新文章

  1. AVL树:解决BST可能导致的长链问题
  2. android 请求权限失败怎么办,java – Android HTTP POST请求错误 – 套接字失败EACCES(权限被拒绝)...
  3. 成功解决IndexError: index 14 is out of bounds for axis 1 with size 14
  4. 0708---oop学习--用户密码管理
  5. Go大型项目实战:项目结构、配置管理、API设计
  6. sv编程语言_SV及UVM高级话题篇之一:SystemVerilog开源公共库(上)
  7. ArcGIS10.8中如何获取线状、面状数据的折点,并计算折点坐标?
  8. Object Detection: Face Detection using Haar Cascades
  9. android sd卡挂载广播,Android--检测内置/外置SD卡存储卡,枚举所有挂载点(通过反射实现),监听SD卡广播...
  10. 卸载python的正确姿势
  11. 基于android的团购app设计与实现,基于Android的掌上团购App设计与实现
  12. mysql 5.7 严格模式_mysql 5.7中严格模式的问题
  13. 力扣-1877 数组中最大数对和的最小值
  14. 【路径规划】基于matlab A_star算法机器人避障自动寻路路径规划【含Matlab源码 496期】
  15. VsCode——创建Vue 模板
  16. 客户端服务器通信demo(续) -- 使用二进制协议 (附源码)
  17. 如何高效管理Linkedin账号
  18. 【免费分享】2022新版海螺影视主题模板M3.1版本多功能苹果CMSv10后台自适应模板详解
  19. 黑盒测试技术(Decision Tables 决策表法,又称判定表法)——软件质量保证与测试
  20. 1NF | 2NF | 3NF的区分以及什么是函数依赖、部分函数依赖、值传递依赖(最详细的讲解1NF、2NF、3NF的关系)

热门文章

  1. java code formatter_IDEA插件配置之Eclipse Code Formatter
  2. 经验分享 :以互联网行业为背景下的数据分析通识
  3. 更改Android软件图标
  4. “华为杯”研究生数学建模竞赛2020年-【华为杯】D题:无人机集群协同对抗(附优秀论文及MATLAB代码)
  5. Faiss(二)基础索引
  6. 交通均衡UE\SO的定义与优化框架推导,以及拥堵收费的原理与方法
  7. 60行Python代码搞定,王者荣耀雷达图!
  8. CSS transition动画卡顿的探究
  9. WiFi 6是什么?比现在的WiFi快多少?WIFI常见问题解答!
  10. 绝地求生全军出击服务器维护中,绝地求生全军出击是不是停服了?无限期停机维护引发猜测[视频][多图]...