AdaBoost 和 Real Adaboost 总结

AdaBoost
Real AdaBoost

AdaBoost


AdaBoost, Adaptive Boosting(自适应增强), 是一种集成学习算法(ensemble learning),由Yoav Freund 和 Robert Schapire 于1995年提出。其思想是通过多个简单的弱分类器集成一个具有较高准确率的强分类器。


经典AdaBoost算法过程

输入:训练数据,其中分别对应着样本特征和样本标签

输出:最终的强分类器

初始化:样本权重分布

循环:t=1,...,T

....-针对权重样本 训练弱分类器

....-计算弱分类器的错误率,是示性函数

....-计算弱分类器的权重

....-使用当前的弱分类器更新样本的分布 ,其中是归一化常数

最终的前分类器为:


AdaBoost过程示意图

AdaBoost.png

更新迭代原理

  • 从直观上理解,首先,当错误率$\epsilon$越大时,分类器的权重$\alpha$越小,这符合一般解释及分类器性能越高置信度也就越大,在最终的表决中所占比重也就越大。其次,在新样本分布的更新过程中,分类正确的样本在下次分类器学习中作用越小,而分错的样本在下次分类器学习中的作用越大,这样可以是新的分类器设计更集中在之前错分的样本分类上,使整体的分类性能提高。

  • 从理论上推导:

    AdaBoost采用的是指数误差函数,其中D是样本的分布,表示样本的标签,表示在分布D上计算期望。

i. 首先是权重的更新,希望分类器产生的总体指数误差最小,则

其中表示某个分布上的概率分布函数。于是得到

即分类器权重的更新公式

ii. 接下来将推导分布的更新:

已获得前个分类器,我们希望获得第t个分类器能纠 正之前错误分类,使指数误差函数最小。

泰勒展开:

这是因为

表示一个新的分布,则上式可以写作:

类似的

于是得到分布的更新公式。


AdaBoost的误差上界

在更新分布时有归一化常数

指数误差函数:


AdaBoost分析

虽然在AdaBoost中对弱分类器没有限制,可以是基于多维特征的决策树,SVM等,但通常每个弱分类器都是基于所有特征中某一维构建的,并且输出结果只有+1,-1两种(二分类问题),所以在训练时每一轮迭代相当于挑选最好的特征。


Real AdaBoost


Real AdaBoost 过程:

给定训练集:

训练集样本的初始分布:

循环t=1,2,...,T: (T是弱分类器的个数)

.... - 将每一维特征的取值空间划分为若干个不相交的

.... - 计算在每个子空间上上正负样本的权重

.... - 计算每一个弱分类器的输出,,其中是一个很小的正常量用于平滑。

.... - 计算归一化因子

.... - 选择Z最小的的弱分类器作为该轮迭代选出的弱分类器

.... - 更新样本分布

最终的强分类器为:, b是阈值。


Real AdaBoost 的理解

相对于AdaBoost而言,Real AdaBoost中弱分类器不再仅输出{+1,-1},而是输出[-1,1]间的实数,所以称为Real AdaBoost, 我们可以认为输出的值其实就是AdaBoost里的权重加权后的结果,即,所以Real AdaBoost也符合AdaBoost的框架

Real AdaBoost 的每个弱分类器设计是一种决策树的简单形式,而每个叶子节点判断依据是将该区间样本分类为样本数最多的那一类。简单的阈值化函数适用于线性可分情况,而对于线性不可分情形,采用这种分区间,即决策树的形式能取得较好的性能。

每次迭代都希望寻找最小分类误差的分类器,而Z值越小表示在对应样本分布下该分类器对应的正负样本个数差别越大,分类结果的置信度越高

下面我们从理论上分析迭代过程:

指数误差函数为:

每次迭代的目标是寻找一个误差最小的分类器,即最小,那么由AdaBoost框架得到

其中是在该维度上分成N个区间后,落在第j个区间分类器输出值,为了使Z最小,可以得到

此时Z取得最小值

为了使输出函数更加平滑,也为了抑制差距太大或者一方为0的情形,引入平滑因子,一般情况下令


Adaboost和Real Adaboost中弱分类器的区别示意图:

realandnon.JPG

matlab实现Real AdaBoost


References:

AdaBoost 和 Real Adaboost 总结的更多相关文章

  1. 几种Boost算法的比较(Discrete AdaBoost, Real AdaBoost, LogitBoost, Gentle Adaboost)

    关于boost算法 boost算法是基于PAC学习理论(probably approximately correct)而建立的一套集成学习算法(ensemble learning).其根本思想在于通过 ...

  2. AdaBoost

    一直想写Adaboost来着,但迟迟未能动笔.其算法思想虽然简单"听取多人意见,最后综合决策",但一般书上对其算法的流程描述实在是过于晦涩.昨日11月1日下午,邹博在我组织的机器学 ...

  3. Adaboost 算法的原理与推导

    0 引言 一直想写Adaboost来着,但迟迟未能动笔.其算法思想虽然简单“听取多人意见,最后综合决策”,但一般书上对其算法的流程描述实在是过于晦涩.昨日11月1日下午,邹博在我组织的机器学习班第8次 ...

  4. 基于MATLAB的adaboost级联形式的人脸检测实现

    很早之前就做过一些关于人脸检测和目标检测的课题,一直都没有好好总结出来,趁着这个机会,写个总结,希望所写的内容能给研究同类问题的博友一些见解和启发!!博客里面涉及的公式太繁琐了,直接截图了. 转载请注 ...

  5. Adaboost 卡口车辆检测训练

    之前做了SVM的车脸检测,主要是针对车脸,接下来尝试利用Adaboost和Haar进行车脸的检测.我利用的主要是opencv中的cascade,其已经把Adaboost相关的算法做成了exe,直接调用 ...

  6. 如何用OpenCV自带的adaboost程序训练并检测目标

    参考博文: 1.http://blog.csdn.net/wuxiaoyao12/article/details/39227189 2.http://www.cnblogs.com/easymind2 ...

  7. adaboost算法

    三 Adaboost 算法 AdaBoost 是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器,即弱分类器,然后把这些弱分类器集合起来,构造一个更强的最终分类器.(很多博客里说的三个臭皮匠 ...

  8. Sklearn库例子1:Sklearn库中AdaBoost和Decision Tree运行结果的比较

    DisCrete Versus Real AdaBoost 关于Discrete 和Real AdaBoost 可以参考博客:http://www.cnblogs.com/jcchen1987/p/4 ...

  9. AdaBoost 算法原理及推导

    AdaBoost(Adaptive Boosting):自适应提升方法. 1.AdaBoost算法介绍 AdaBoost是Boosting方法中最优代表性的提升算法.该方法通过在每轮降低分对样例的权重 ...

随机推荐

  1. SQL Server多表多列更新

    student表: lag表: 要求将student表stu_id列为1的stu_nick列和stu_phont列的数据更新为lag表的lag_nick列和lag_phone列. SQL语句: upd ...

  2. java 资源监控

    http://blog.csdn.net/huangzhaoyang2009/article/details/11860757 http://blog.csdn.net/cuker919/articl ...

  3. php常用判断的函数

    empty($var)        //用来检查变量是否为空(没有值或零值) isset($var)           //这个//测试一个变量看它是否已被定义. gettype($var)   ...

  4. ROW_NUMBER()函数的使用

    SQL Server数据库ROW_NUMBER()函数的使用是本文我们要介绍的内容,接下来我们就通过几个实例来一一介绍ROW_NUMBER()函数的使用. 实例如下: .使用row_number()函 ...

  5. nc 显示服务器开放的端口

    # nc -z -w xxxx.com - Connection to xxxx.com port [tcp/ftp] succeeded! Connection to xxxx.com port [ ...

  6. AR , VR, GVR ...

    虚拟现实与增强现实(眼镜或头盔)的现状与未来-简介http://blog.csdn.net/yanzhanyi/article/details/41982033 Google VR  |  Googl ...

  7. windows 10 上office2016 word崩溃的解决方案

    方案1:--个人试验可行,把如下路径改成自己系统路径 C:Documents and Settings/Administrator/application/data/microsoft/templat ...

  8. 【翻译十八】java-并发之锁对象

    Lock Objects Synchronized code relies on a simple kind of reentrant lock. This kind of lock is easy ...

  9. sdut 1592转置矩阵【稀疏矩阵的压缩存储】【快速转置算法】

    转置矩阵 Time Limit: 1000ms   Memory limit: 32768K  有疑问?点这里^_^ 题目链接:http://acm.sdut.edu.cn/sdutoj/proble ...

  10. SQL高级查询之一

    一,子查询 SELECT e.emp_id, e.fname, e.lname FROM (SELECT emp_id, fname, lname, start_date, title FROM em ...