龙空技术网

最具代表性的集成学习算法——AdaBoost算法

小齐在武汉 137

前言:

目前兄弟们对“adaboost人脸检测训练算法”大约比较关怀,姐妹们都需要分析一些“adaboost人脸检测训练算法”的相关内容。那么小编在网摘上汇集了一些对于“adaboost人脸检测训练算法””的相关资讯,希望大家能喜欢,小伙伴们一起来学习一下吧!

集成学习

集成学习是使用一系列学习器进行学习,并使用某种规则把各个学习结果进行整合从而获得比单个学习器更好的学习效果的一种机器学习方法。一般情况下,集成学习中的多个学习器都是同质的"弱学习器"。集成学习的主要思路是先通过一定的规则生成多个学习器,再采用某种集成策略进行组合,最后综合判断输出最终结果。一般而言,通常所说的集成学习中的多个学习器都是同质的"弱学习器"。基于该弱学习器,通过样本集扰动、输入特征扰动、输出表示扰动、算法参数扰动等方式生成多个学习器,进行集成后获得一个精度较好的"强学习器"。

随着集成学习研究的深入,其广义的定义逐渐被学者们所接受,它是指对多个学习器集合采用学习的方式,而不对学习器性质加以区分。根据这一定义,多学习器系统 (multi-classifier system) 、多专家混合 (mixture of experts) 以及基于委员会的学习 (committee-based learning)等多个领域都可以纳入到集成学习中。但当前仍然以同质分类器的集成学习研究居多。

AdaBoost算法

AdaBoost,是英文"Adaptive Boosting"(自适应增强)的缩写,是一种机器学习方法,由Yoav Freund和Robert Schapire提出。AdaBoost方法的自适应在于:前一个分类器分错的样本会被用来训练下一个分类器。AdaBoost方法对于噪声数据和异常数据很敏感。但在一些问题中,AdaBoost方法相对于大多数其它学习算法而言,不会很容易出现过拟合现象。AdaBoost方法中使用的分类器可能很弱(比如出现很大错误率),但只要它的分类效果比随机好一点(比如两类问题分类错误率略小于0.5),就能够改善最终得到的模型。而错误率高于随机分类器的弱分类器也是有用的,因为在最终得到的多个分类器的线性组合中,可以给它们赋予负系数,同样也能提升分类效果。

AdaBoost方法是一种迭代算法,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率。每一个训练样本都被赋予一个权重,表明它被某个分类器选入训练集的概率。如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它被选中的概率就被降低;相反,如果某个样本点没有被准确地分类,那么它的权重就得到提高。通过这样的方式,AdaBoost方法能“聚焦于”那些较难分(更富信息)的样本上。在具体实现上,最初令每个样本的权重都相等,对于第k次迭代操作,我们就根据这些权重来选取样本点,进而训练分类器Ck。然后就根据这个分类器,来提高被它分错的的样本的权重,并降低被正确分类的样本权重。然后,权重更新过的样本集被用于训练下一个分类器Ck。整个训练过程如此迭代地进行下去。

AdaBoost算法思想

Adaboost的思想是利用一些准确率比随机稍微好一点的弱分类器,构建出一个准确率比较高的强分类器。其实就是“三个臭皮匠,胜过诸葛亮”。

Adaboost通过集中关注被已有分类器错分的那些数据来获得新的分类器。boosting中每个分类器的权重不相等,之前被错分的将具有更高的权重,然后采用新的权重再次进行分类,循环此过程一直到错误率为0,或是达到了最大迭代次数。

经过一系列的迭代,Adaboost训练输出的模型为一个列表,列表中每一个元素是一个分类器以及它的分类器权重alpha值。

Adaboost训练过程

AdaBoost预测过程

在Adaboost中,分类器理论上可以使用任何支持通过权重向量进行分类的算法,但通常只需要使用一个比随机略好的算法,比如单层决策树Decision Stump。单层决策树是一个深度只有一层的决策树算法。通过遍历所有的特征值,然后根据特征值中的数据进行分类尝试,选择出最佳的单层决策树。

Adaboost的优点:

泛化准确率较高,不会出现过拟合不需要复杂的调参不用做特征筛选

Adaboost的缺点:

对样本点不均衡的场景不适用训练比较耗时

AdaBoost常见应用:

人脸识别

标签: #adaboost人脸检测训练算法