作为集成学习的二个方法,其实bagging和boosting的实现比较容易理解,但是理论证明比较费力。下面首先介绍这两种方法。

所谓的集成学习,就是用多重或多个弱分类器结合为一个强分类器,从而达到提升分类方法效果。严格来说,集成学习并不算是一种分类器,而是一种分类器结合的方法。

1.bagging

bagging算是很基础的集成学习的方法,他的提出是为了增强分类器效果,但是在处理不平衡问题上却有很好的效果。

如上图,原始数据集通过T次随机采样,得到T个与原始数据集相同大小的子数据集,分别训练得到T个弱分类器Classifier,然后结合为一个强分类器。

以下给出随机采样的概率解释及效果分析:

采用的是概率论里面的booststrap思想,由于小样本估计的不准确性,再加上现代计算性能的提升,可以用重复的计算提升小样本的精度。

原始小样本不能正确反映数据的真实分布,用T次随机采样拟合真实分布。

下式为L次分类得到的强分类器等于L次估计的期望:

下式为真实的y与每个弱分类器之间的差异,展开后得到右边:

下式表示,最后得到弱分类器的差异会大于统计平均得到的强分类器的差异,简而言之就是通过强分类,更好地拟合了。

上面得到的结果就是,如果原始数据为真实分布的前提下,用bagging集成分类器,始终是能提升效果的,提升的效果取决于分类器的稳定性,稳定性越差,提升的效果越高。如神经网络这样的不稳定分类器。

当然,上面假设是数据接近真实分布,然后在概率[1/N,1/N,.....1/N]下重采样。

如果训练数据不是真实分布,那么bagging的效果也可能比非bagging更差。

接下来是如何把L个弱分类器集成为强分类器:

最简单的方法就是投票法(vote)。对于一个测试样本,通过L个弱分类器得到L个类别信息,这些信息投票产生最后的类别。如L=10,分类结果分别为:[3,3,3,3,5,5,6,7,1,8.]

那么这个样本就属于3.

2.boosting

类似于bagging集成学习,boosting也是通过重采样得到多个弱分类器,最后得到一个强分类器。区别是boosting是基于权值的弱分类器集成。

上面为boosting的流程图,简要概括如下:

1.e表示某个弱分类器的错误分类率,计算用来作为这个分类器的可信度权值a,以及更新样本权值D。

2.D表示原始数据的权值矩阵。刚开始每个样本的采样概率都一样,为1/m。在某个弱分类器分类时,分类错误或对,则D就会根据e相应地增加或减少,使分类器更多的关注上次错分的样本。

3.α为弱分类器的可信度,bagging中隐含的α为1,boosting中,根据每个弱分类器的表现(e较低),决定这个分类器的结果在总的结果中所占的权重,分类准的自然占较多的权重。

最后根据可信度α,以及各个弱分类器的估计h(x),得到最后的结果。

如上图为boosting的流程图,主要为两个部分,更新样本权值D和计算分类器权重α,前者使得原来分错的样本再下一个分类器中能够更可能分类正确;后者根据分类器的表现,赋予不同弱分类器不同权值,最后得到一个加权的强分类器。

boosting概率上的效果证明这里略去,只引出一个结论,不断地迭代更新能使得最终的结果无限接近最优分类,不过boosting会倾向于一直分错的样本,如果样本中有离群的错误样本,boosting就会出现效果不好的情况。

总结上面讨论了两个集成学习的方法,bagging和boosting,boosting有点像bagging的改进版本,加入了权值采样和权重强分类的概念。都是通过重采样和弱分类器融合实现的方法。

集成学习---bagging and boosting的更多相关文章

  1. 机器学习基础—集成学习Bagging 和 Boosting

    集成学习 就是不断的通过数据子集形成新的规则,然后将这些规则合并.bagging和boosting都属于集成学习.集成学习的核心思想是通过训练形成多个分类器,然后将这些分类器进行组合. 所以归结为(1 ...

  2. [机器学习]集成学习--bagging、boosting、stacking

    集成学习简介 集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务. 如何产生"好而不同"的个体学习器,是集成学习研究的核心. 集成学习的思路是通过 ...

  3. 机器学习——集成学习(Bagging、Boosting、Stacking)

    1 前言 集成学习的思想是将若干个学习器(分类器&回归器)组合之后产生一个新学习器.弱分类器(weak learner)指那些分类准确率只稍微好于随机猜测的分类器(errorrate < ...

  4. 集成学习算法汇总----Boosting和Bagging(推荐AAA)

     sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

  5. 集成学习算法总结----Boosting和Bagging

    1.集成学习概述 1.1 集成学习概述 集成学习在机器学习算法中具有较高的准去率,不足之处就是模型的训练过程可能比较复杂,效率不是很高.目前接触较多的集成学习主要有2种:基于Boosting的和基于B ...

  6. 集成学习算法总结----Boosting和Bagging(转)

    1.集成学习概述 1.1 集成学习概述 集成学习在机器学习算法中具有较高的准去率,不足之处就是模型的训练过程可能比较复杂,效率不是很高.目前接触较多的集成学习主要有2种:基于Boosting的和基于B ...

  7. [Mechine Learning & Algorithm] 集成学习方法——Bagging和 Boosting

    使用机器学习方法解决问题时,有较多模型可供选择. 一般的思路是先根据数据的特点,快速尝试某种模型,选定某种模型后, 再进行模型参数的选择(当然时间允许的话,可以对模型和参数进行双向选择) 因为不同的模 ...

  8. 【Supervised Learning】 集成学习Ensemble Learning & Boosting 算法(python实现)

    零. Introduction 1.learn over a subset of data choose the subset uniformally randomly (均匀随机地选择子集) app ...

  9. 机器学习:集成学习(Ada Boosting 和 Gradient Boosting)

    一.集成学习的思路 共 3 种思路: Bagging:独立的集成多个模型,每个模型有一定的差异,最终综合有差异的模型的结果,获得学习的最终的结果: Boosting(增强集成学习):集成多个模型,每个 ...

随机推荐

  1. TComponent,TControl,TWinControl,TGraphic的DefineProperties赏析与说明(不懂)

    先观赏一下最后的实现效果: object Form1: TForm1 Left = Top = Width = Height = Caption = 'Form1' Color = clBtnFace ...

  2. MongoDB -- 更新

    $pull: db.collection.update( <query>, { $pull: { <arrayField>: <query2> } } ) $pul ...

  3. 使用gulp创建ajax模拟请求

    概述 之前一直使用gulp构建前端项目,这个基于node流并崇尚“编程而非配置”的工具让我深深的爱上了他.强大的gulp能做到的不仅仅是压缩和合并js.css,它能做到的还有更多.今天我给大家带来使用 ...

  4. iOS应用开发详解

    <iOS应用开发详解> 基本信息 作者: 郭宏志    出版社:电子工业出版社 ISBN:9787121207075 上架时间:2013-6-28 出版日期:2013 年7月 开本:16开 ...

  5. hdu2647 逆拓扑,链式前向星。

    pid=2647">原文地址 题目分析 题意 老板发工资,可是要保证发的工资数满足每一个人的期望,比方A期望工资大于B,仅仅需比B多1元钱就可以.老板发的最低工资为888元.输出老板最 ...

  6. [ACM] hdu 4405 Aeroplane chess (概率DP)

    Aeroplane chess Problem Description Hzz loves aeroplane chess very much. The chess map contains N+1 ...

  7. [C++]引用浅析

    Date:2013-12-22 Summary: 引用数据类型的一些概念记录(沟通中提到引用必须结合语境才能知道说的是引用变量还是“引用”这一行为,再次提到引用指的一般是引用变量) Contents: ...

  8. robots.txt禁止搜索引擎收录

    禁止搜索引擎收录的方法         一.什么是robots.txt文件? 搜索引擎通过一种程序robot(又称spider),自动访问互联网上的网页并获取网页信息. 您可以在您的网站中创建一个纯文 ...

  9. pinyin4j的使用

    pinyin4j的使用   pinyin4j是一个功能强悍的汉语拼音工具包,主要是从汉语获取各种格式和需求的拼音,功能强悍,下面看看如何使用pinyin4j.     import net.sourc ...

  10. fusionchart实现ZoomLine 源码 破解版 能够导出

    近期画油量曲线须要用到ZoomLine官网看了好几天.如今整理出来供大家參考使用 zoomline.html源码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD ...