集成学习-Boosting集成学习算法AdaBoost

 

Boosting是一族将弱学习器提升为强学习器的算法,适用于个体学习器间存在强依赖关系、必须串行生成序列化方法。最著名的代表是AdaBoost。

Boosting的工作机制:从初始的训练集中训练出一个基学习器,再根据基学习器的表现对样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多的关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直到基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。

目录

Adaboost算法

AdaBoost的两种权重

AdaBoost分类示例

AdaBoost算法原理

AdaBoost计算示例

算法优缺点


Adaboost算法

Adaboost是一种原理简单,但很实用的有监督机器学习算法,它是daptive boosting的简称,Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。

算法本身是通过改变样本数据的权重分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器最后融合起来,作为最后的决策分类器。使用Adaboost分类器可以排除一些不必要的训练数据特征,并放在关键的训练数据上面。

 

如图是Adaboost的原理示意图,左边矩形表示数据集,中间表示根据特征阈值来做分类,这样每一个弱分类器都类似于一个单节点的决策树,其实就是阈值判断而已,右边的三角形对每个弱分类器赋予一个权重,最后根据每个弱分类器的加权组合来判断总体类别。要注意一下数据集从上到下三个矩形内的直方图不一样,这表示每个样本的权重也发生了变化,样本权重的一开始初始化成相等的权重,然后根据弱分类器的错误率来调整每个弱分类器的权重。

由上所示,每个弱分类器可以要求不高的准确率,哪怕错误率是50%也可以接受,但是最后通过线性加权组合就可以得到一个很好的分类器,这点也可以通过错误率分析验证。

AdaBoost的两种权重

一种为数据权重、一种为分类器权重

数据权重:用于确定分类器权重(弱分类器寻找其分类最小的决策点,找到之后用这个最小的误差计算出弱分类器的权重)

分类器权重:说明了弱分类器在最终决策中拥有发言权的大小

数据权重

最开始每个样本的权重都相同,错误就会增加权重。

每训练一个弱分类器就会调整每个样本的权重,上一轮训练中被错误分类点的权重增加,促使下一轮着分析错误分类点,达到“你分不对我来分的”效果。

由于每个分类器都会关注上个分错的点,那么也就是说每个分类器都有侧重。

分类器权重

每个分类器都有可能分对其上一个分类器美分对的数据,同时针对上一个分类器分队的数据也可能没有分队。这就导致了分类器中都有各自最关注的点,这就说明每一个分类器都只关注训练数据中的一部分数据,全部分类器组合起来才能发挥作用,那么最终的结果是通过加权“投票“决定的,权重的大小是根据弱分类器的分类错误率计算出来的。

 

AdaBoost算法中不同的训练集是通过调整每个样本对应的权重来实现的。开始时,每个样本对应的权重是相同的,即其中 n 为样本个数,在此样本分布下训练出一弱分类器。对于分类错误的样本,加大其对应的权重;而对于分类正确的样本,降低其权重,这样分错的样本就被突显出来,从而得到一个新的样本分布。在新的样本分布下,再次对样本进行训练,得到弱分类器。依次类推,经过 T 次循环,得到 T 个弱分类器,把这 T 个弱分类器按一定的权重叠加(boost)起来,得到最终想要的强分类器。

AdaBoost算法的具体步骤如下:

1. 给定训练样本集S,其中X和Y分别对应于正例样本和负例样本; T为训练的最大循环次数;

2. 初始化样本权重为1/n ,即为训练样本的初始概率分布;

3. 第一次迭代:

(1) 训练样本的概率分布相当下,训练弱分类器;

(2) 计算弱分类器的错误率;

(3) 选取合适阈值,使得误差最小;

(4) 更新样本权重;

经T次循环后,得到T个弱分类器,各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器权重,使其在最终的分类中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,换而言子误差率低的弱分类器在最终分类器中占的权重较大,否则较小。

Adaboost算法是经过调整的Boosting算法,其能够对弱学习得到的弱分类器的错误进行适应性调整。上述算法中迭代了T次的主循环,每一次循环根据当前的权重分布对样本x定一个分布P,然后对这个分布下的样本使用弱学习算法得到一个弱分类器,对于这个算法定义的弱学习算法。实际上,每一次迭代,都要对权重进行更新。更新的规则是:减小弱分类器分类效果较好的数据的权重,增大弱分类器分类效果较差的数据的权重,最终的分类器是个弱分类器的加权平均。

AdaBoost分类示例

下面我们举一个简单的例子来看看Adaboost的实现过程:

图中,“+”和“-”分别表示两种类别,在这个过程中,我们使用水平或者垂直的直线作为分类器,来进行分类。

 

根据分类的正确率,得到一个新的样本分布D2­,一个子分类器h1

其中划圈的样本表示被分错的。在右边的途中,比较大的“+”表示对该样本做了加权。

 

根据分类的正确率,得到一个新的样本分布D3,一个子分类器h2

 

得到一个子分类器h3整合所有子分类器:

 

此可以得到整合的结果,从结果中看,及时简单的分类器,组合起来也能获得很好的分类效果,在例子中所有的。Adaboost算法的某些特性是非常好的,主要介绍adaboost的两个特性。

一是训练的错误率上界,随着迭代次数的增加,会逐渐下降;

二是Adaboost算法即使训练次数很多,也不会出现过拟合的问题。

算法特点:

  1. 每次迭代改变的是样本的分布,而不是重复采样(re weight)
  2. 样本分布的改变取决于样本是否被正确分类
  3. 总是分类正确的样本权值低
  4. 总是分类错误的样本权值高(通常是边界附近的样本)
  5. 最终的结果是弱分类器的加权组合
  6. 权值表示该弱分类器的性能

AdaBoost算法原理

AdaBoost计算示例

算法优缺点

优点

  1. adaboost是一种有很高精度的分类器
  2. 可以使用各种方法构建子分类器,adaboost算法提供的是框架
  3. 当使用简单分类器时,计算出的结果是可以理解的。而且弱分类器构造极其简单
  4. 简单,不用做特征筛选
  5. 不用担心overfitting!

对于boosting算法,存在两个问题:

1. 如何调整训练集,使得在训练集上训练的弱分类器得以进行;

2. 如何将训练得到的各个弱分类器联合起来形成强分类器。

针对以上两个问题,adaBoost算法进行了调整:

1. 使用加权后选取的训练数据代替随机选取的训练样本,这样将训练的焦点集中在比较难分的训练数据样本上;

2. 将弱分类器联合起来,使用加权的投票机制代替平均投票机制。让分类效果好的弱分类器具有较大的权重,而分类效果差的分类器具有较小的权重。

 

 

 

 

参考链接:http://www.360doc.com/content/14/1109/12/20290918_423780183.shtml
参考链接:http://blog.csdn.net/marvin521/article/details/9319459
参考链接:http://blog.csdn.net/baiduforum/article/details/6721749
参考链接:http://www.cnblogs.com/pinard/p/6133937.html
参考链接:http://www.cnblogs.com/pinard/p/6133937.html
参考链接:https://zhuanlan.zhihu.com/p/27126737
参考链接:https://zhuanlan.zhihu.com/p/27126737
参考链接:https://blog.csdn.net/qq_24753293/article/details/80180944

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值