博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AdaBoost
阅读量:6999 次
发布时间:2019-06-27

本文共 1618 字,大约阅读时间需要 5 分钟。

  • 要明确Adaboost是一种算法。
  • 介绍一下Adaboost的历史。

 

Adaboost的前身的Boosting算法

Boosting是一种提高任意给定学习算法准确度的方法。它的思想起源于Valiant提出的PAC(Probably Approximately Correct)学习模型。Valiant和Kearns提出了弱学习和强学习的概念,识别错误率小于1/2,也即准确率仅比随机猜测略高的学习算法称为弱学习算法;识别准确率很高并能在多项式时间内完成的学习算法称为强学习算法。同时,Valiant和Kearns首次提出了PAC学习模型中弱学习算法和强学习算法的等价性问题,即任意给定仅比随机猜测略好的弱学习算法,是否可以将其提升为强学习算法?如果二者等价,那么只需找到一个比随机猜测略好的弱学习算法就可以将其提升为强学习算法,而不必寻找很难获得的强学习算法。

1990年, Schapire最先构造出一种多项式级的算法,对该问题做了肯定的证明,这就是最初的Boosting算法。一年后,Freund提出了一种效率更高的Boosting算法。但是,这两种算法存在共同的实践上的缺陷,那就是都要求事先知道弱学习算法学习正确率的下限

1995年, Freund和schapire改进了Boosting算法,提出了AdaBoost(Adaptive Boosting)算法[5],该算法效率和Freund于1991年提出的Boosting算法几乎相同,但不需要任何关于弱学习器的先验知识,因而更容易应用到实际问题当中。之后,Freund和schapire进一步提出了改变Boosting投票权重的AdaBoost.M1,AdaBoost.M2等算法,在机器学习领域受到了极大的关注。 

  • Adaboost详解

Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。

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

  • 在线训练阶段流程图:

最终出来的结构应该是这样的:

 

N级分类器,每个分类器带一个自己的阈值;N个分类器的权重比例;整个强分类器的阈值

  • 离线检测阶段流程图:

如图 

 

  • 工具包

算法的流程理解了,可是要将这个算法完全自己实现,难度还是很大的。幸好已经有人做了这方面的工作。

  1. 如果要训练的是Haar特征,opencv的cvHaarTraining就足够了,什么adaboost,cascade,神马都不用管,按格式写好文件,等着结果就行了。
  2. OPENCV的cvBoost,主要有这么几个函数

bool CvBoost::train(。。。);

CvBoost::load(。。。)

float CvBoost::predict(。。。)

  • opencv的sample中有一个多类分类的问题,可以参考一下,不过读文件那块写得真烂。。。
  1. 强烈推荐!!!GML AdaBoost Matlab Toolbox

莫斯科大学的一个学生写得,很赞。里面有三种adaboost的实现,详细的说明文档,Examples。而且检测部分有c++的源码及工程。

有兴趣的朋友们看看说明文档就一目了然了,very good!!!

 

原文:http://shijuanfeng.blogbus.com/logs/100675208.html

转载于:https://www.cnblogs.com/retrieval/archive/2012/06/01/2531322.html

你可能感兴趣的文章
Oracle学习笔记6
查看>>
Centos7开通端口方法
查看>>
php数据库永久链接其实一般没必要使用,如果网站并发量大,数据库支持的连接数小就会出问题...
查看>>
oracle--架构
查看>>
动态规划的基本方法---多阶段决策过程及实例
查看>>
顺序数据---隐马尔科夫模型
查看>>
Spring boot 使用jpa时对于数据库的配置
查看>>
驰骋工作流引擎设计系列02
查看>>
Spring Security源码分析十:初识Spring Security OAuth2
查看>>
HDOJ 2087 KMP算法
查看>>
【转载】erlang 如何自定义 behaviour
查看>>
apache tomcat 集群 负债均衡 部署
查看>>
一步一步学Ruby(四):Ruby标准类型
查看>>
Node.js + WebSocket 实现的简易聊天室
查看>>
JSTL标签库之fn标签
查看>>
mtu检测
查看>>
在无法改动bs架构的基础上,添加新的功能(2) 浏览器
查看>>
Android 应用程序只运行一个实例
查看>>
代码整洁
查看>>
ffmpeg cmd
查看>>