随机森林属于集成学习(ensemble learning)中的bagging算法,在集成算法中主要分为bagging算法与boosting算法,

Bagging算法(套袋发)

  • bagging的算法过程如下:

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

      Boosting(提升法)

  • boosting的算法过程如下:
    1. 对于训练集中的每个样本建立权值wi,表示对每个样本的权重, 其关键在与对于被错误分类的样本权重会在下一轮的分类中获得更大的权重(错误分类的样本的权重增加)。
    2. 同时加大分类 误差概率小的弱分类器的权值,使其在表决中起到更大的作用,减小分类误差率较大弱分类器的权值,使其在表决中起到较小的作用。每一次迭代都得到一个弱分类器,需要使用某种策略将其组合,最为最终模型,(adaboost给每个迭代之后的弱分类器一个权值,将其线性组合作为最终的分类器,误差小的分类器权值越大。)

      Bagging和Boosting 的主要区别

  • 样本选择上: Bagging采取Bootstraping的是随机有放回的取样,Boosting的每一轮训练的样本是固定的,改变的是买个样的权重。
  • 样本权重上:Bagging采取的是均匀取样,且每个样本的权重相同,Boosting根据错误率调整样本权重,错误率越大的样本权重会变大
  • 预测函数上:Bagging所以的预测函数权值相同,Boosting中误差越小的预测函数其权值越大。
  • 并行计算: Bagging 的各个预测函数可以并行生成;Boosting的各个预测函数必须按照顺序迭代生成.

    将决策树与以上框架组合成新的算法

  • Bagging + 决策树 = 随机森林
  • AdaBoost + 决策树 = 提升树
  • gradient + 决策树 = GDBT

决策树

常用的决策树有ID3, C4.5 ,CART三种. 三种算法模型构架相似,只是采用了不同的指标

首先介绍ID3算法

  • 基于奥卡姆剃刀原理,即用尽量较少的东西做更多的东西,ID3算法即interactive Dichotomiser3,迭代二叉树3代,
  • 核心思想:以信息增益来度量属性的选择,选择分裂后信息增益最大的属性进行分类。
  • 信息增益:属性选择中一个重要的指标,它定义为一个属性能够为分类带来的多少信息,带来的信息越多,该属性也就越重要,而信息量则可以用熵表示。
  • 熵的定义:信息量的期望值,表示随机变量不确定性的度量,设X是一个取有限个值的离散随机变量,其概率分布为P(X=xi)=pi,则随机变量X的熵定义为
    其中,对数以2为底或者以e为底,分布其单位是比特(bit)或者纳特(nat)
  • 熵越大,随机变量的不确定性就越大,当随机变量只取两个值,即X的分布式,其熵为,分布为伯努利分布时,熵与概率的关系如图:,p=0.5时,H(p)=1,熵取值最大,随机变量的不确定性越大,当p=0或者1时,H(p)=0随机变量完全没有不确定性.

    条件熵

  • 设有随机变量(X,Y),其联合概率分布为,条件熵H(Y|X)表示在已知随机变量X的条件下,随机变量随Y的不确定性。随机变量X给定的条件下,随机变量Y的条件熵(conditional entropy)(H(Y|X)),定义为X的给定条件下Y的条件概率分布的熵对X的数学期望。
  • 这里p=P(X=xi),i=1,2,3...n,如果是在决策树里面的话,就是类标概率与该类标下在该变量下分裂下的熵的乘积之和。
  • 当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵与条件熵分别称为经验熵与经验条件熵
  • 此时,信息增益(information gain)表示得知特征X的信息而使得类Y的信息的不确定性减少的程度,

    信息增益

  • 特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D),与特征A给定条件下D的经验条件熵H(D|A)之差 g(D,A)=H(D)-H(D|A)
  • 决策树学习应用信息增益准则可以用于特征选择,给定的训练集D和特征A,经验熵H(D)标书对数据集D进行分类的不确定性,而经验条件熵H(D|A)表示在特征A给定的情况下,对数据集D进行分类的不确定性。信息增益就是表示特征A使得对数据集D的分类的不确定性的减少程度。对于数据集D而言,信息增益依赖于特征,不同特征往往具有不同的信息增益,信息增益大的特征具有更强的分类能力。
  • 未完待续

Bagging和Boosting的概念与区别的更多相关文章

  1. bagging 和boosting的概念和区别

    1.先弄清楚模型融合中的投票的概念 分为软投票和硬投票,硬投票就是几个模型预测的哪一类最多,最终模型就预测那一类,在投票相同的情况下,投票结果会按照分类器的排序选择排在第一个的分类器结果.但硬投票有个 ...

  2. Bagging和Boosting 概念及区别

    Bagging和Boosting都是将已有的分类或回归算法通过一定方式组合起来,形成一个性能更加强大的分类器,更准确的说这是一种分类算法的组装方法.即将弱分类器组装成强分类器的方法. 首先介绍Boot ...

  3. Bagging和Boosting 概念及区别(转)

    Bagging和Boosting都是将已有的分类或回归算法通过一定方式组合起来,形成一个性能更加强大的分类器,更准确的说这是一种分类算法的组装方法.即将弱分类器组装成强分类器的方法. 首先介绍Boot ...

  4. Bagging和Boosting的区别(面试准备)

    Baggging 和Boosting都是模型融合的方法,可以将弱分类器融合之后形成一个强分类器,而且融合之后的效果会比最好的弱分类器更好. Bagging: 先介绍Bagging方法: Bagging ...

  5. Bagging和Boosting的区别

    转:http://www.cnblogs.com/liuwu265/p/4690486.html Bagging和Boosting都是将已有的分类或回归算法通过一定方式组合起来,形成一个性能更加强大的 ...

  6. 随机森林(Random Forest),决策树,bagging, boosting(Adaptive Boosting,GBDT)

    http://www.cnblogs.com/maybe2030/p/4585705.html 阅读目录 1 什么是随机森林? 2 随机森林的特点 3 随机森林的相关基础知识 4 随机森林的生成 5 ...

  7. Bagging和Boosting的介绍及对比

    "团结就是力量"这句老话很好地表达了机器学习领域中强大「集成方法」的基本思想.总的来说,许多机器学习竞赛(包括 Kaggle)中最优秀的解决方案所采用的集成方法都建立在一个这样的假 ...

  8. 集成学习---bagging and boosting

    作为集成学习的二个方法,其实bagging和boosting的实现比较容易理解,但是理论证明比较费力.下面首先介绍这两种方法. 所谓的集成学习,就是用多重或多个弱分类器结合为一个强分类器,从而达到提升 ...

  9. 以Random Forests和AdaBoost为例介绍下bagging和boosting方法

    我们学过决策树.朴素贝叶斯.SVM.K近邻等分类器算法,他们各有优缺点:自然的,我们可以将这些分类器组合起来成为一个性能更好的分类器,这种组合结果被称为 集成方法 (ensemble method)或 ...

随机推荐

  1. Two FIFOs of length 253 with 8-bits

    FIFO 先入先出队列(First Input First Output,FIFO) 可以实现数据缓存. 一.FIFO的一些重要参数: 1.length:未知,待查 //补充:学长说:“FIFO一般只 ...

  2. 小企业是否能用得上"ITIL"?

    在小型IT部门中,明显存在着迫切的IT管理需求.但目前主流ITSM解决方案的价格.实施周期.复杂程度.对人力资源的占用等使他们难以承受.     浦发机械公司的计算机部经理老张带着十几个员工,经过数年 ...

  3. symfony 命令

    1.创建Bundle php bin/console generate:bundle --namespace=Home/IndexBundle --format=yml  创建bundle会更新app ...

  4. selenium 单浏览器模式

    如果需要无限制的任意实例化,而不是把实例化后的对象传给另一个函数.方法处理.就需要控制单浏览器,不然每次实例化弹出来一个新浏览器,很占内存 #coding=utf8 from selenium.web ...

  5. ASP.NET用DataSet导出到Excel

    //读取临时文件    GYYW.DA.Common.Base_SqlDataBase daBZDM = new GYYW.DA.Common.Base_SqlDataBase();    DataS ...

  6. iOS6 中 Smart App Banners介绍和使用(转自COCOACHINA.COM)

    转自:http://www.cocoachina.com/applenews/devnews/2012/0924/4842.html iOS 6新增Smart App Banners,也就是“智能Ap ...

  7. 个人Android开发习惯[转载]

    以下内容转载自牛人博客,很多牛叉内容,请点击:http://www.stay4it.com/?p=281 Android三年,现在写代码,真心没什么很大的兴趣,每天都是优化代码,优化框架,技术支持.非 ...

  8. 3. Oracle数据库逻辑备份与恢复

    一. Oracle逻辑备份介绍 Oracle逻辑备份的核心就是复制数据:Oracle提供的逻辑备份与恢复的命令有exp/imp,expdp/impdp.当然像表级复制(create table tab ...

  9. iOS开发-VFL初窥

    VFL是苹果为了简化Autolayout的编码而推出的抽象语言,在上一篇博客中我们发现如果使用NSLayoutConstraint来添加约束是非常繁琐的. 一个简单的Frame需要添加四个NSLayo ...

  10. javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed

    1.使用HttpClient4.3 调用https出现如下错误: javax.net.ssl.SSLHandshakeException: sun.security.validator.Validat ...