Boosting简单介绍

分类中通常使用将多个弱分类器组合成强分类器进行分类的方法,统称为集成分类方法(Ensemble Method)。比較简单的如在Boosting之前出现Bagging的方法,首先从从总体样本集合中抽样採取不同的训练集训练弱分类器,然后使用多个弱分类器进行voting,终于的结果是分类器投票的优胜结果。这样的简单的voting策略通常难以有非常好的效果。直到后来的Boosting方法问世,组合弱分类器的威力才被发挥出来。Boosting意为加强、提升,也就是说将弱分类器提升为强分类器。而我们常听到的AdaBoost是Boosting发展到后来最为代表性的一类。所谓AdaBoost,即Adaptive Boosting,是指弱分类器依据学习的结果反馈Adaptively调整如果的错误率,所以也不须要不论什么的先验知识就能够自主训练。Breiman在他的论文里赞扬AdaBoost是最好的off-the-shelf方法。

两类Discrete AdaBoos算法流程

AdaBoosting方法大致有:Discrete Adaboost, Real AdaBoost, LogitBoost, 和Gentle AdaBoost。全部的方法训练的框架的都是类似的。以Discrete Adaboost为例,其训练流程例如以下:

首先初始化每一个样本同样的权重(步骤2);之后使用加权的样本训练每一个弱分类器 (步骤3.1);分类后得到加权的训练错误率和比例因子 (步骤3.2);将被错误分类的样本的权重加大,并将改动后的权重再次归一化(步骤3.3);循环训练过程,终于使用比例因子 组合组合弱分类器构成终于的强分类器。
以下看一个更形象的图,多个弱分类器的组合过程和结果大致为:

训练的循环过程,加重被错误分类的样本的权重是一种有效的加速训练的方法。因为训练中正确率高的弱分类器权重较大,新一轮的训练中正确分类的样本会越来越多,权重较小的训练样本对在新一轮的训练中起作用较小,也就是,每一轮新的训练都着重训练被错误分类的样本。

实际训练中弱分类器是一样的,但弱分类器实际使用的训练数据不同,通常使用特征向量的每一维分别构成一个弱分类器。而后来大名鼎鼎的Haar+Adaboost人脸检測方法是使用每种Haar特征构成一个弱分类器,基于Block的Haar特征比简单的基于pixel的特征有带有很多其它的信息,通常能得到更好的检測效果,而积分图Integral的方法使其在计算速度上也有非常大优势。有兴趣可參考《基于Adaboost和Haar-like特征人脸识别》。

Real AdaBoost和Gentle AdaBoost

Discrete Adaboost是最简单的两类Boosting分类结果,而兴许的Real AdaBoost(也称为AdaBoost.MH)能够看做Discrete Adaboost的泛化形式,弱分类器能够输出多个分类结果,并输出这几个分类结果的可能性,能够看成每一个弱分类器都更不“武断”。而Gentle AdaBoost则是改动了迭代训练过程中错误样本权重调整的方法,较少地强调难以分类的样本,从而避免了原本AdaBoost对”非典型”的正样本权值调整非常高而导致了分类器的效率下降的情况。,而产生的变种算法。AdaBoost的Matlabe工具箱GML_AdaBoost_Matlab_Toolbox实现了Real AdaBoost, Gentle AdaBoost和Modest AdaBoost,且有个概况明了的介绍(工具箱的使用内部用手冊,也能够參考下一篇《CART和GML AdaBoost Matlab Toolbox》):
至于LogitAdaBoost我事实上不太了解,详细可參考《OpenCV关于AdaBoost的一些说明》。

(转载请注明作者和出处:http://blog.csdn.net/xiaowei_cqu 未经同意请勿用于商业用途)

最新文章

  1. JavaScript闭包之“词法作用域”
  2. 7、provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错
  3. 两种状态显示处理. enum , Linq AsEnumerable
  4. mysql 总结一
  5. oracle视图
  6. 使用Gulp和Browserify创建多个绑定文件
  7. 如何判断平台工具集去做条件编译(VC++目录、预处理器定义、$(PlatformToolsetVersion))
  8. SGU 134.Centroid( 树形dp )
  9. 利用wireshark任意获取qq好友IP实施精准定位
  10. 安卓9.0系统机器(亲测有效)激活Xposed框架的步骤
  11. 切换controller 后面的最好不要用id参数,不然会根据路由规则改变
  12. mysql & sqlserver语法差异
  13. Oracle EBS OM 发放订单
  14. CSS水平导航栏
  15. 解决微服务网关Ocelot使用AddStoreOcelotConfigurationInConsul后请求404问题
  16. go 学习 ---数据类型
  17. Python3.5 学习五
  18. c++静态变量
  19. arcgis Listview
  20. Cookie && Session之验证实例

热门文章

  1. Maven Jrebel 多模块热部署方案
  2. thinkphp 常用的查询
  3. cocos2d-x游戏开发系列教程-超级玛丽04-AppDelegate
  4. 【UVA】658 - It's not a Bug, it's a Feature!(隐式图 + 位运算)
  5. git 使用过程(四、回退版本)
  6. 2080夹角有多大II
  7. javascript 学习随笔1
  8. Oracle 游标疑问
  9. 高质量程序设计指南C/C++语言——C++/C程序设计入门(3)
  10. JQuery插件使用小结