一:Bagging与随机森林

与Boosting族算法不同的是,Bagging和随机森林的个体学习器之间不存在强的依赖关系,可同时生成并行化的方法。

Bagging算法

bagging的算法过程如下:

1:从原始样本集中使用Bootstraping自助采样的方法随机抽取n个训练样本,共进行k轮抽取,得到k个训练集。(k个训练集之间相互独立,元素可以有重复)
2:对于k个训练集,我们训练k个模型(这k个模型可以根据具体问题而定,比如决策树,knn等)
3:对于分类问题:由k个模型的预测结果投票表决产生分类结果;对于回归问题:由k个模型预测结果的均值作为最后预测结果。(所有模型的重要性相同

从算法的流程可以看出,Bagging生成的每个基学习器的训练样本都会不同,由此基学习器之间具有一定的差异,但是这种差异不会特别大,因为采集的样本是在原样本上有放回的重复采样,采样子集之间有交叠。k轮随机采样,每轮经过n次随机的有放回的抽样,得到k个含有n个样本的采样集。从而可以在k个采样集上训练出k个基学习器,然后再将这些基学习 器进行结合。在对预测输出进行结合时,对分类任务使用简单的投票法,对回归任务采用简单平均法。

Bagging算法有以下优点:

(1)假定一个基学习器的计算复杂度为O(m),Bagging的复杂度为T(O(m)+O(s)),由于采样过程和投票平均过程 的复杂度O(s)很小,T是一个不大的常数,训练一个Bagging与直接使用基学习算法训练一个学习器的复杂度同阶。

(2)与标准的Adaboost算法只能用于二分类任务 不同,Bagging能不经修改的用于 多分类、回归任务。

(3)由于采样过程中每个基学习器会没有使用约有36.8%的样本,所以可以用来作为验证集,对基学习器的样本进行泛化性能包外估计。若基学习器为决策树,包外样本可用于对决策树进行剪枝,若基学习器为神经网络,可用来辅助 早期停止,以减少过拟合的风险。

(4)从偏差方差分解来看,Bagging主要是关注降低方差(在取样过程添加了随机性),在不剪枝的决策树、神经网络等易受样本扰动的学习器比较有效。决策树是一种贪心的算法,样本中噪音过多时,容易过拟合。而神经网络的拟合能力非常强,所以也是一种对样本中的噪音非常敏感的算法,容易过拟合。

随机森林算法

随机森林RF是是Bagging算法的变体。RF的基学习器为决策树,其在构建决策树基学习器的过程,是在Bagging的基础上,进一步引入了 随机属性 选择。具体来说,一般决策 树 是 在当前结点中所有的属性集合中选择最优属性来划分,而 RF对每个基决策树的结点,从结点中随机选择一个包含k个属性的子集,然后再从这些子集中选择一个最优的属性划分。这个K在sklearn里叫做max_feature,是重要的参数。k控制了随机性的引入程度,即会对最终的算法的泛化能力产生影响。

随机森林的优点:

随机森林与Bagging相比,在其样本扰动的基础上,增加了属性扰动,泛化性能通过个体学习器之间的差异 度的增加而进一步提升。

随机森林算法可以对特征的重要性进行选择,如通过包外估计法和基于不纯度减少的方法(哪个特征对不纯度减少的贡献越大,那么哪个特征就越重要

包外估计法原理:

假设针对某个特征X,我们利用套袋法建立了一颗决策树T,然后用T对袋外数据TOOB进行分类检测,得到其正确分类的个数XT,然后对袋外数据的特征X进行“随机扰乱”,对特征X的取值赋予随机取的新数值,这时再用T对袋外数据TOOB'进行分类检测,得到正确分类数XT',这时对于T来说,特征X的重要性D=|XT' - XT|,我们对随机森林中共N颗决策树做相同操作,可以得到N个特征X的重要性,取其均值作为X的重要性度量,即D(X) = (D1+D2+......+DN)/N,其中Di = |XT'i - XTi|(i=1,2,3,....,N)。

总结

随机森林是一种优秀的算法。由于随机森林和Bagging的方法在每个基学习器的训练过程相对独立,存在一种加法的性质 ,所以这决定了这算法可以进行并行计算,从而加快运行速度。由于其加入了数据样本扰动和输入属性扰动,所以会具有更好的泛化性能。

机器学习总结(二)bagging与随机森林的更多相关文章

  1. 机器学习回顾篇(12):集成学习之Bagging与随机森林

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  2. 机器学习 —— 决策树及其集成算法(Bagging、随机森林、Boosting)

    本文为senlie原创,转载请保留此地址:http://www.cnblogs.com/senlie/ 决策树--------------------------------------------- ...

  3. Bagging之随机森林

    随机森林(Random Forest)是一种Bagging(Bootstrap Aggregating)集成算法,在样本随机(样本扰动)的基础上,进一步运用特征随机(属性扰动)的机制,得到比一般的Ba ...

  4. SIGAI机器学习第十九集 随机森林

    讲授集成学习的概念,Bootstrap抽样,Bagging算法,随机森林的原理,训练算法,包外误差,计算变量的重要性,实际应用 大纲: 集成学习简介 Boostrap抽样 Bagging算法 随机森林 ...

  5. R语言︱机器学习模型评估方案(以随机森林算法为例)

    笔者寄语:本文中大多内容来自<数据挖掘之道>,本文为读书笔记.在刚刚接触机器学习的时候,觉得在监督学习之后,做一个混淆矩阵就已经足够,但是完整的机器学习解决方案并不会如此草率.需要完整的评 ...

  6. Bagging与随机森林算法原理小结

    在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系.另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合. ...

  7. Bagging与随机森林(RF)算法原理总结

    Bagging与随机森林算法原理总结 在集成学习原理小结中,我们学习到了两个流派,一个是Boosting,它的特点是各个弱学习器之间存在依赖和关系,另一个是Bagging,它的特点是各个弱学习器之间没 ...

  8. 机器学习相关知识整理系列之二:Bagging及随机森林

    1. Bagging的策略 从样本集中重采样(有放回)选出\(n\)个样本,定义子样本集为\(D\): 基于子样本集\(D\),所有属性上建立分类器,(ID3,C4.5,CART,SVM等): 重复以 ...

  9. 机器学习之Bagging与随机森林笔记

    集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能.这对“弱学习器”尤为明显,因此集成学习的很多理论研究都是针对弱学习器进行的,而基学习器有时也被直接称为弱学习器.虽然从理论上来 ...

随机推荐

  1. 基础作业 本周没上课,但是请大家不要忘记学习。 本周请大家完成上周挑战作业的第一部分:给定一个整数数组(包含正负数),找到一个具有最大和的子数组,返回其最大的子数组的和。 例如:[1, -2, 3, 10, -4, 7, 2, -5]的最大子数组为[3, 10, -4, 7, 2] 输入: 请建立以自己英文名字命名的txt文件,并输入数组元素数值,元素值之间用逗号分隔。 输出 在不删除原有文件内容

    1丶 实验代码 #include<stdio.h> int main(void) { int tt,nn,i,j,c[11][11]; int flag=1; scanf("%d ...

  2. shell脚本if语句的多种条件参数

    if语句有多种写法 [root@shell-yankerp sh]# [ -f file ] && echo "yes" || echo "no" ...

  3. Autofac之类型关联

    前面的学习一直使用的是直接注册类型并不是Autofac已经依赖注入的主要使用方式,最佳的依赖注入与Autofac的使用方式,都是要结合面向接口(抽象)编程的概念的.推崇的是依赖于抽象而不是具体 pub ...

  4. session and cookie

    cookie cookie是由W3C组织提出,最早由Netscape社区发展的一种机制.目前Cookie已经成为标准,所有的主流浏览器如IE.Netscape.Firefox.Opera等都支持Coo ...

  5. Machine Learning, Homework 9, Neural Nets

    Machine Learning, Homework 9, Neural NetsApril 15, 2019ContentsBoston Housing with a Single Layer an ...

  6. LeetCode 217 Contains Duplicate 解题报告

    题目要求 Given an array of integers, find if the array contains any duplicates. Your function should ret ...

  7. ASCII Unicode UTF-8 之间的关系

    转载请标明:https://i.cnblogs.com/EditPosts.aspx?opt=1 1. ASCII ASCII 只有127个字符,表示英文字母的大小写.数字和一些符号,但由于其他语言用 ...

  8. uCOS-II

    /****************************************************/ **关于移植,ucos官网上给的有template,主要思想是实现任务切换的两个函数(任务 ...

  9. reactive stream: 响应式编程

    既然 Reactive Stream 和 Java 8 引入的 Stream 都叫做流,它们之间有什么关系呢?有一点关系,Java 8 的 Stream 主要关注在流的过滤,映射,合并,而  Reac ...

  10. JDK1.8 LongAdder 空间换时间: 比AtomicLong还高效的无锁实现

    我们知道,AtomicLong的实现方式是内部有个value 变量,当多线程并发自增,自减时,均通过CAS 指令从机器指令级别操作保证并发的原子性. // setup to use Unsafe.co ...