1.名词解释
Boost(推进),adaboost(adapt boost)自适应推进算法:Adaboost算法是机器学习中一种比较重要的特征分类算法,已被广泛应用人脸表情识别、图像检索等应用中。就目前而言,对Adaboost算法的研究以及应用大多集中于分类问题,在一些回归问题上也有所应用。Adaboost主要解决的问题有: 两类问题、多类单标签问题、多类多标签问题、回归问题。
2.算法发展简介
2.1 强学习算法和弱学习算法
在机器学习领域,Boosting算法是一种通用的学习算法,这一算法可以提升任意给定的学习算法的性能。其思想源于1984年Valiant提出的”可能近似正确”-PAC(Probably Approximately Correct)学习模型,在PAC模型中定义了两个概念-强学习算法和弱学习算法。其概念是: 如果一个学习算法通过学习一组样本,识别率很高,则称其为强学习算法;如果识别率仅比随机猜测略高,其猜测准确率大于50,则称其为弱学习算法。
2.2 boost模型发展
1989年Kearns and Valiant研究了PAC学习模型中弱学习算法和强学习算法两者间的等价问题;
即任意给定仅仅比随机猜测稍好(准确率大于0.5)的弱学习算法,是否可以被提升为强学习算法?若两者等价,则我们只需寻找一个比随机猜测稍好的若学习算法,然后将其提升为强学习算法,从而不必费很大力气去直接寻找强学习算法。
就此问题,Schapire于1990年首次给出了肯定的答案。他主持这样一个观点:
任一弱学习算法可以通过加强提升到一个任意正确率的强学习算法,并通过构造一种多项式级的算法来实现这一加强过程,这就是最初的Boosting算法的原型。
Boosting是一种将弱分类器通过某种方式结合起来得到一个分类性能大大提高的强分类器的分类方法。该方法可以把一些粗略的经验规则转变为高度准确的预测法则。强分类器对数据进行分类,是通过弱分类器的多数投票机制进行的。该算法是一个简单的弱分类算法提升过程,这个过程通过不断的训练,以提高对数据的分类能力。
Freund于1991年提出了另外一种效率更高的Boosting算法。但此算法需要要提前知道弱学习算法正确率的下限,因而应用范围十分有限。
2.3 adaboost出现
1995年,Freund and Schapire改进了Boosting算法,取名为Adaboost算法,该算法不需要提前知道所有关于弱学习算法的先验知识,同时运算效率与Freund在1991年提出的Boosting算法几乎相同。Adaboost即Adaptive Boosting,它能
1):自适应的调整弱学习算法的错误率,经过若干次迭代后错误率能达到预期的效果。
2):它不需要精确知道样本空间分布,在每次弱学习后调整样本空间分布,更新所有训练样本的权重,把样本空间中被正确分类的样本权重降低,被错误分类的样本权重将会提高,这样下次弱学习时就更能更关注这些被错误分类的样本。该算法可以很容易地应用到实际问题中,因此,已成为目前最流行的Boosting算法。
AdaBoost算法的核心思想是针对同一个训练集训练出不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个性能更加强大的分类器(强分类器)。
2.4 AdaBoost迭代过程
请参照:http://blog.csdn.net/v_july_v/article/details/40718799
2.5 算法优缺点
- 优点
1) Adaboost是一种有很高精度的分类器
2) 可以使用各种方法构建子分类器,Adaboost算法提供的是框架
3) 当使用简单分类器时,计算出的结果是可以理解的。而且弱分类器构造极其简单
4) 简单,不用做特征筛选
5) 不用担心overfitting(过度拟合)
- 缺点
1)容易受到噪声干扰,这也是大部分算法的缺点
2)训练时间过长
3)执行效果依赖于弱分类器的选择