随机森林:是bagging装袋法的代表。弱学习器只可以是决策树

  • 简介:

    • 随机森林是一种有监督学习算法,是以决策树为基学习器的集成学习算法。随机森林非常简单,易于实现,计算开销也很小,在分类和回归上表现出非常惊人的性能,因此,随机森林被誉为“代表集成学习技术水平的方法”。
  • 随机森林的随机性体现在两个芳年

    • 1.数据集的随机选择

      • 从原始数据集中采取《有放回的抽样bagging》,构造子数据集,子数据集的数据量是和原始数据集相同的。不同子数据集的元素可以重复,同一个子数据集中的元素也可以重复。
    • 2.待选特征的随机选取
      • 随机森林中的子树的每一个分裂过程并未用到所有的待选特征,而是从所有的待选特征中随机选取一定的特征,之后再随机选取的特征中选取最优的特征。
  • 随机森林的重要作用:

    • 可以用于分类问题,也可以用于回归问题
    • 可以解决模型过拟合的问题,对于随机森林来说,如果随机森林中的树足够多,那么分类器就不会出现过拟合
    • 可以检测出特征的重要性,从而选取好的特征
  • 随机森林的构建过程

    • 1.从原始训练集中随机有放回采样取出m个样本,生成m个训练集
    • 2.对m个训练集,我们分别训练m个决策树模型
    • 3.对于单个决策树模型,假设训练样本特征的个数为n,那么每次分裂时根据信息增益/信息增益比/基尼指数 选择最好的特征进行分裂
    • 4.将生成的多颗决策树组成随机森林。对于分类问题,按照多棵树分类器投票决定最终分类结果;对于回归问题,由多颗树预测值的均值决定最终预测结果
  • 优点

    • 1.由于采用了集成算法,本身精度比大多数单个算法要好,所以准确性高
    • 2.由于两个随机性的引入,使得随机森林不容易陷入过拟合(样本随机,特征随机)
    • 3.在工业上,由于两个随机性的引入,使得随机森林具有一定的抗噪声能力,对比其他算法具有一定优势
    • 4.它能够处理很高维度(feature很多)的数据,并且不用做特征选择,对数据集的适应能力强:既能处理离散型数据,也能处理连续型数据
    • 5.在训练过程中,能够检测到feature间的互相影响,且可以得出feature的重要性,具有一定参考意义
  • 缺点

    • 1.当随机森林中的决策树个数很多时,训练时需要的空间和时间会比较大
  • 在sklearn.ensemble库中,我们可以找到Random Forest分类和回归的实现:

    • RandomForestClassifier
    • RandomForestRegression
      控制弱评估器的参数

n_estimators

  • 这是森林中树木的数量,即基评估器的数量。这个参数对随机森林模型的精确性影响是单调的,n_estimators越大,模型的效果往往越好。但是相应的,任何模型都有决策边界,n_estimators达到一定的程度之后,随机森林的 精确性往往不在上升或开始波动,并且,n_estimators越大,需要的计算量和内存也越大,训练的时间也会越来越 长。对于这个参数,我们是渴望在训练难度和模型效果之间取得平衡。
  • n_estimators的默认值在现有版本的sklearn中是10,但是在即将更新的0.22版本中,这个默认值会被修正为 100。这个修正显示出了使用者的调参倾向:要更大的n_estimators。

建立森林

  • 树模型的优点是简单易懂,可视化之后的树人人都能够看懂,可惜随机森林是无法被可视化的。所以为了更加直观地让大家体会随机森林的效果,我们来进行一个随机森林和单个决策树效益的对比。我们依然使用红酒数据集。


random_state

  • 随机森林中的random_state控制的是生成森林的模式,类似决策树中的random_state,用来固定森林中树的随机性。当random_state固定时,随机森林中生成是一组固定的树。

bootstrap & oob_score

  • bootstrap:

    • 装袋法是通过有放回的随机抽样技术来形成不同的训练数据,bootstrap就是用来控制抽样技术的参数。我们进行样本的随机采样,每次采样一个样本,并在抽取下一个样本之前将该样本 放回原始训练集,也就是说下次采样时这个样本依然可能被采集到。bootstrap参数默认True,代表采用这种有放回的随机抽样技术。通常,这个参数不会被我们设置为False。
  • oob_score:
    • 然而有放回抽样也会有自己的问题。由于是有放回,一些样本可能会被采集多次,而其他一些样本却可能被忽略,一次都未被采集到。那么这些被忽略或者一次都没被采集到的样本叫做oob袋外数据。
    • 也就是说,在使用随机森林时,我们可以不划分测试集和训练集,只需要用袋外数据来测试我们的模型即可。
    • 如果希望用袋外数据来测试,则需要在实例化时就将oob_score这个参数调整为True,训练完毕之后,我们可以用随机森林的另一个重要属性:oob_score_来查看我们的在袋外数据上测试的结果:

回归随机森林RandomForestRegressor

  • 所有的参数,属性与接口,全部和随机森林分类器一致。仅有的不同就是回归树与分类树的不同,不纯度的指标, 参数Criterion不一致。
  • Criterion参数:
    • 回归树衡量分枝质量的指标,支持的标准有三种:

      • 输入"mse"使用均方误差mean squared error(MSE),父节点和叶子节点之间的均方误差的差额将被用来作为特征选择的标准,这种方法通过使用叶子节点的均值来最小化L2损失
      • 输入“friedman_mse”使用费尔德曼均方误差,这种指标使用弗里德曼针对潜在分枝中的问题改进后的均方误差
      • 输入"mae"使用绝对平均误差MAE(mean absolute error),这种指标使用叶节点的中值来最小化L1损失

机器学习D14——随机森林相关推荐

  1. 【火炉炼AI】机器学习007-用随机森林构建共享单车需求预测模型

    [火炉炼AI]机器学习007-用随机森林构建共享单车需求预测模型 (本文所使用的Python库和版本号: Python 3.5, Numpy 1.14, scikit-learn 0.19, matp ...

  2. 随机森林原理_机器学习(29):随机森林调参实战(信用卡欺诈预测)

    点击"机器学习研习社","置顶"公众号 重磅干货,第一时间送达 回复[大礼包]送你机器学习资料与笔记 回顾 推荐收藏>机器学习文章集合:1-20 机器学习 ...

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

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

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

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

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

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

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

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

  7. python随机森林变量重要性_python机器学习之随机森林(七)

    机器学习之随机森林,供大家参考,具体内容如下 1.Bootstraping(自助法) 名字来自成语"pull up by your own bootstraps",意思是依靠你自己 ...

  8. 机器学习之随机森林RandomForestRegressor

    机器学习之随机森林RandomForestRegressor # -*- coding: utf-8 -*- """ Created on Tue Dec 4 18:29 ...

  9. 【火炉炼AI】机器学习012-用随机森林构建汽车评估模型及模型的优化提升方法

    [火炉炼AI]机器学习012-用随机森林构建汽车评估模型及模型的优化提升方法 [本文所使用的Python库和版本号]: Python 3.5, Numpy 1.14, scikit-learn 0.1 ...

最新文章

  1. 全职宝妈跨专业备考信息系统项目管理师【52,52,51】
  2. Android内核和Linux内核的区别
  3. win7rc 序列号- 10/21之前
  4. [Cracking the Coding Interview] 4.1 Route Between Nodes 节点间的路径
  5. mysql 5.6 linux 64_Linux64位服务器编译安装MySQL5.6(CentOS6.4)
  6. 【转】[Python Tip]如何在Windows下方便地进入命令行运行程序
  7. VMware Fusion FOR MAC使用教程
  8. jasper报表格式化bigdecimal(decimal128)数据千分位
  9. php形状特征提取方法,LowB沙箱-PHP动态特征提取
  10. mysql主主报错_MySQL 主主报错: Fatal error: The slave I/O thread stops because master and slave have...
  11. 一则软件需求有关的漫画
  12. NetworkInterface网速监测
  13. 前端基础知识概述 -- 移动端开发的屏幕、图像、字体与布局的兼容适配
  14. vs2013 - 高亮设置 括号匹配 (方括号) 大括号匹配 Visual Studio 2013
  15. 历经24小时,依靠全球定位,帮女朋友找回丢失的华为手机!
  16. 【ARM Coresight 介绍 3 - ARM Cortex-M DWT】
  17. 前端多级组织(部门)结构展示
  18. 广东开放大学信息安全与计算机科学那个好,贺桂英-广东开放大学信息与工程学院...
  19. html交叉轴排列,10-flex 项目交叉轴单独对齐
  20. 知名工具网站-开发、设计

热门文章

  1. C++实验八——类的继承(2)
  2. Linux性能检查命令总结
  3. 如果想变强,有我在2
  4. 手把手教你用GoEasy实现Websocket IM聊天
  5. u盘iso安装服务器系统怎么安装win7系统安装,u盘装系统怎么直接安装win7系统iso文件...
  6. 计算机太卡了怎么解决,电脑太卡怎么办最有效
  7. 物理机安装linux系统
  8. oracle数据库等待事件
  9. 三维空间刚体运动——(1)齐次坐标与旋转矩阵
  10. jquery禁止复制、禁用右键、文本选择功能、复制按键