【随机森林】random forests 简单介绍

  • Random Forest,顾名思义 Random 就是随机抽取; Forest 就是说这里不止一棵树,而由 一群决策树组成的一片森林 ,连起来就是用随机抽取的方法训练出一群决策树来完成分类任务。
  • RF用了两次随机抽取, 一次是对训练样本的随机抽取; 另一次是对变量 (特征) 的随机抽取。这主要是为了解决样本数量有限的问题
  • RF的核心是由弱变强思想的运用。每棵决策树由于只用了部分变量、部分样本训练而成, 可能单个的分类准确率并不是很高。 但是当一群这样的决策树组合起来分别对输入数据作出判断时, 可以带来较高的准确率。有点类似于俗语三个㚖皮匠顶个诸葛亮。
  • 随机森林有两个重要参数:树节点预选的变量个数;随机森林中树的个数

随机森林思想来源

PAC →Bootstrap →Bagging →Random Forest ←CART \text { PAC } \rightarrow \text { Bootstrap } \rightarrow \text { Bagging } \rightarrow \text { Random Forest } \leftarrow \text { CART }  PAC  Bootstrap  Bagging  Random Forest  CART 

PAC(Probably Approximately Correct)

  • 在该模型中, 若存在一个多项式级的学习算法来识别一组概念, 并且识别正确率很高, 那么这组概念是强学习算法; 而如果学习算法识别一组概念的正确率仅比随机猜测略好, 那么这组概念是弱学习算法。
  • 如果可以将弱学习算法提升成强学习算法, 那么我们就只要找到一个弱学习算法, 然后把它提升成强学习算法, 而不必去找通常情况下很难获得的强学习算法。

Bootstrap

  • 根据PAC由弱得到强的思想, 统计学著名学者Bradley Efron在 1979年提出了Bootstraps算法, 这个名字来自于成语 “pull up by your own bootstraps”, 意思是依靠自己的资源, 称为自助法。
  • 它的思想就是当样本数量不大, 分布情况未知时, 可以从原始样本中随机抽取的多个样本情况 (弱学习) 来估计原样本真实的分布情况。它是非参数统计中一种重要的估计统计量方差进而进行区间估计的统计方法。
  • 其基本步骤如下:
    – (1) 从原始数据集中, 有放回地抽样一定数量的样本
    – (2)根据抽出的样本计算给定的统计量 T\mathrm{T}T
    – (3)重复上述N次 (一般大于1000), 得到 NNN 个统计量 T\mathrm{T}T
    – (4)计算上述 N\mathrm{N}N 个统计量 T\mathrm{T}T 的样本方差, 得到统计量的方差
  • 0.632自助法
    假设给定的数据集包含 d\mathrm{d}d 个样本。该数据集有放回地抽样 d\mathrm{d}d 次, 产生 d\mathrm{d}d 个样本的训练集。原数据中的某些样本很可能在该样本集中出现多次。显然每个样本被选中的概率是 1/d1 / \mathrm{d}1/d,因此未被选中的概率就是 (1−1/d)(1-1/d)(11/d),这样一个样本在训练集中没出现的概率就是 d\mathrm{d}d 次都未被选中的概率, 即 (1−1/d)d(1-1/d) ^d(11/d)d。当 ddd 趋于无穷大时, 这一概率就将趋近于e−1=0.368e^{-1}=0.368e1=0.368,所以留在训练集中的样本大概就占原来数据集的 63.2%63.2 \%63.2%

Bagging

  • Bagging 又叫bootstrap aggregation, 是Breiman在1993 年提出的方法, 第一步就是根据Bootstrap进行抽样。
  • 基本的步骤:
    – (1)从样本集中用Bootstrap采样选出 n\mathrm{n}n 个样本
    – (2)在所有属性上, 对这 n\mathrm{n}n 个样本建立分类器 (CART or SVM or …)
    – (3)重复以上两步m次, i.e. 建立 mmm 个分类器 (CART or SVM or … )
    – (4)将数据放在这m个分类器上跑, 最后vote看到底分到哪一类
  • 这种方法可以大大降低每个分类器的不稳定性, 从而带来较高的预测准确率。从这个方法再往下发展就是随机森林了

随机森林

  • 随机森林是以决策树为基本分类器的一个集成学习模型, 它包含多个由Bagging集成学习技术训练得到的决策树。
  • Random Forests不同的是: 在Bagging的基础上, 使用一种改进的树学习算法, 在每个候选分裂的学习过程中, 选择特征值的一个随机子集。有时被称为 “feature bagging”。
    在这里插入图片描述
  • 该算法用随机的方式建立起一棵棵决策树, 然后由这些决策树组成一个森林, 其中每棵决策树之间没有关联, 当有一个新的样本输入时, 就让每棵树独立的做出判断, 按照多数原则决定该样本的分类结果。

构建随机森林

(1) 从样本集中用bagging采样选出 n\mathrm{n}n 个样本, 预建立CART
(2) 在树的每个节点上, 从所有属性中随机选择 k\mathrm{k}k 个属性, 选择出一个最佳分割属性作为节点(RI 和 RC )
(3) 重复以上两步m次, i.e. 构建m棵CART (不剪枝)
(4) 这 m\mathrm{m}m 个CART形成Random Forest

利用随机森林预测

(1) 向建立好的随机森林中输入一个新样本
(2) 随机森林中的每棵决策树都独立的做出判断
(3) 将得到票数最多的分类结果作为该样本最终的类别

影响性能的因素

  • 森林中单棵树的分类强度(Strength):每棵树的分类强度越大, 则随机森林的分类性能越好
  • 森林中树之间的相关度(Correlation):树之间的相关度越大,则随机森林的分类性能越差。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258274.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

侧边工具开发2

1.使用图片的形式会出现大量的图片&#xff0c;影响性能&#xff0c;而且不易修改&#xff0c;所有使用图标加文字的形式进行 <a href"javacript:;" class"toolbar-item"><span class"toolbar-btn"><i class"toolbar-icon&q…

斐波那契?

斐波那契&#xff1f; Time Limit: 1000ms Memory limit: 32768K 有疑问&#xff1f;点这里^_^ 题目描述 给出一个数列的递推公式&#xff0c;希望你能计算出该数列的第N个数。递推公式如下&#xff1a; F(n)F(n-1)F(n-2)-F(n-3). 其中&#xff0c;F(1)2, F(2)3, F(3)5. 很熟…

clustalw序列比对_序列比对之Clustalx与Clustalw使用指南

相关专题这几天实验需要做多序列比对&#xff0c;很久不做了&#xff0c;一时之间不知道如何使用clustal这个工具了。在网上搜集了一些资料&#xff0c;做个整理&#xff0c;总结了Clustalx和Clustalw的使用&#xff0c;省得以后久不使用又生疏了&#xff0c;又要去整理了&…

信息安全系统设计基础第三周学习总结—20135227黄晓妍

一.Vim编辑器 1.Vim的六种模式 2.Vim三种常用模式的使用方式&#xff0c;以及三者的切换。打开Vim即默认进入普通模式&#xff0c;按i进入插入模式&#xff0c;按esc从插入模式退出普通模式&#xff0c;再按&#xff1a;进入命令行模式。 普通模式下游标的移动 按键 说明 h …

关于指定日期的获取

java使用Calendar类获得指定日期 关于指定日期的获取&#xff0c;是根据指定日期和当前日期相差的天数&#xff0c;然后使用set方法设置Calendar.DAY_OF_MONTH的值。Calendar cal Calendar.getInstance();cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH) - da…

nodejs的package.json依赖dependencies中 ^ 和 ~ 的区别

nodejs的package.json定义了一个模块&#xff0c;包括其依赖关系的一个简单的JSON文件&#xff0c;该文件可以包含多个不同的指令来告诉Node包管理器如何处理模块。 dependencies则表示此模块依赖的模块和版本&#xff0c;其中常常可以看到类似 ^1.2.0 或 ~1.2.0 这样的版本范围…

脚本命令_SAP HANA数据库备份命令脚本

需求场景&#xff1a;HANA数据库版本 2.044 &#xff0c; SYSTEMDB库1个&#xff0c;Tenant库有3个 PRD、POP、HAP需要用命令行备份。备份原理说明&#xff1a;1、脚本同hana studio 一样&#xff0c;用SYSTEM用户去备份所有的数据库。2、备份脚本工作在数据库管理员用户下&…

Spring 基于Java的Bean声明

Spring 基于Java的Bean声明 使用Configuration进行设置&#xff1b; Xml&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns"http://www.springframework.…

手机音频通道被占用_关于凯叔讲故事APP的音频导出下载

孩子喜欢听凯叔讲故事&#xff0c;起先是三国演义和博物学&#xff0c;在网上听了个开头后&#xff0c;毫不犹豫买了正版,心想着购买app可以下载音频&#xff0c;完了拷贝到其他播放器听。然而......然而......大失所望&#xff0c;美其名曰保护正版&#xff0c;可这么个玩意&a…

编译安装 apache 2.4.6

如果配置apr&#xff0c;需要预先安装apr 以下是安装apache 步骤: groupadd webuser useradd -g webuser webuser 下载apache2 下载链接&#xff1a;http://pan.baidu.com/s/1ntiGWvZ 配置 ./configure --prefix/server/apache2 \ --enable-mods-sharedmost \ --enable-so \ --…

CSS3中border-radius、box-shadow与gradient那点事儿

一、border-radius border-radius用于添加圆角边框&#xff0c;用处非常广泛。 1&#xff09;一个值&#xff0c;代表了四个角 .radius-one {/* Safari 3-4, iOS 1-3.2, Android 1.6- */-webkit-border-radius: 12px; /* Firefox 1-3.6 */-moz-border-radius: 12px; /* Opera 1…

编程 跳台阶_Java版剑指offer编程题第8题--跳台阶

跟learnjiawa一起每天一道算法编程题&#xff0c;既可以增强对常用API的熟悉能力&#xff0c;也能增强自己的编程能力和解决问题的能力。算法和数据结构&#xff0c;是基础中的基础&#xff0c;更是笔试的重中之重。不积硅步&#xff0c;无以至千里&#xff1b;不积小流&#x…

获取汉字的首字母(转)

转换 获取一个汉字的拼音首字母。 GB码两个字节分别减去160&#xff0c;转换成10进制码组合就可以得到区位码例如汉字“你”的GB码是0xC4/0xE3&#xff0c;分别减去0xA0&#xf…

$ionicPopup

转自&#xff1a;http://www.ionicframework.com/docs/api/service/%24ionicPopup/ Usage A few basic examples, see below for details about all of the options available. angular.module(mySuperApp, [ionic]) .controller(PopupCtrl,function($scope, $ionicPopup, $tim…

目标规划运筹学例题doc_运筹学之目标规划(胡运权版).doc

运筹学之目标规划(胡运权版).doc第七章 目标规划1 目标规划的提出线性规划问题是讨论一个给定的线性目标函数在一组线性约束条件下的最大值或最小值问题。对于一个实际问题&#xff0c;管理科学者根据管理层决策目标的要求&#xff0c;首先确定一个目标函数以衡量不同决策的优劣…

Deep Learning(深度学习) 学习笔记(四)

神经概率语言模型&#xff0c;内容分为三块&#xff1a;问题&#xff0c;模型与准则&#xff0c;实验结果。[此节内容未完待续...] 1&#xff0c;语言模型问题 语言模型问题就是给定一个语言词典包括v个单词&#xff0c;对一个字串做出二元推断&#xff0c;推断其是否符合该语言…

Java Virtual Machine

后续完善转载于:https://www.cnblogs.com/fight-tao/p/4849167.html

selenium 鼠标悬浮_处理Selenium3+python3定位鼠标悬停才显示的元素

先给大家介绍下Selenium3python3--如何定位鼠标悬停才显示的元素定位鼠标悬停才显示的元素&#xff0c;要引入新模块# coding:utf-8from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChainsdriver webdriver.Firefox()driver.get(&q…

JavaScript 运行机制

JavaScript 运行机制 阅读目录 一、为什么JavaScript是单线程&#xff1f;二、任务队列三、事件和回调函数四、Event Loop五、定时器六、Node.js的Event Loop七、关于setTimeout的测试一、为什么JavaScript是单线程&#xff1f; JavaScript语言是单线程&#xff0c;也就是说&am…

mysql 时间 本周 本月_mysql查询当天、本周、上周、本月、上月信息

今天select * from 表名 where to_days(时间字段名) to_days(now());昨天SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) – TO_DAYS( 时间字段名) < 17天SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) < date(时间字段名)近30天SELECT * FROM 表名 wher…