adboost

Ø  要明确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中有一个多类分类的问题,可以参考一下,不过读文件那块写得真烂。。。

3.      强烈推荐!!!GML AdaBoost Matlab Toolbox

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

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

这就是我对adaboost的理解~~~

 

本声明 http://www.blogbus.com/shijuanfeng-logs/100675208.html
AdBoost(AdaBoost)是一种集成学习算法,它是一种迭代算法,用于训练分类。它的原理是通过串行训练一系列分类,并在每次迭代中对被错误分类的样本进行加权,以便提高下一个分类的分类能力。最终,分类的集成通过加权投票的方式来进行分类预测。AdBoost算法不依赖于具体的分类,只需提供一个基础的二分类,比如决策树或者神经网络。 Matlab提供了一个AdBoost工具包,用于实现AdBoost算法。这个工具包提供了一套完整的函数和工具,可以方便地使用AdBoost算法进行分类任务的训练和预测。它包括了AdBoost算法的各个步骤,如初始化权重、训练分类、更新样本的权重等。此外,Matlab的AdBoost工具包还提供了一些可视化函数,可以帮助用户更好地理解和分析AdBoost的训练过程和结果。 使用Matlab的AdBoost工具包,用户可以根据自己的数据和需求,通过选择不同的基础分类和调整算法的参数,来实现一个定制化的AdBoost分类。此外,工具包还支持交叉验证和自适应学习率等功能,以便用户进行模型选择和性能优化。 总而言之,Matlab的AdBoost工具包为用户提供了一个方便、高效的工具,用于实现AdBoost算法进行分类任务的训练和预测,并且可以通过定制化的配置满足不同的需求。使用这个工具包,用户可以更加专注于数据分析和模型设计,而无需过多关注算法的实现细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值