您的位置:首页 > 职场人生

机器学习算法面试—口述(2):Adaboost算法及常见问题

2015-08-24 17:19 435 查看
这个系列是为了应对找工作面试时面试官问的算法问题,所以只是也谢算法的简要介绍,后期会陆续补充关于此算法的常见面试的问题!

AdaBoost是一种迭代算法,针对同一训练集训练处不同的分类器(弱分类器),将前面训练的分类器以某种方式组合起来,组合成一个强分类器。算法是通过改变数据的分布来实现的。每次训练分类器是参考

1、某样本在上个分类器的分类过程中是否被正确分类

2、上个分类器的准确率

AdaBoost是Adaptive Boosting的缩写,Adaptive在于:前一个分类器分错的样本会得到增强,加强后的全体样本会用于下一次分类器的训练,每一轮加入一个新的弱分类器,知道达到某个预定的足够小的的错误率或达到预定的最大迭代次数。

具体点说,AdaBoost的步骤如下:

1、初始化训练数据的权值分布。开始时,权重都赋予一样;

2、训练弱分类器。如果某个样本正确分类,那么其在下一次的分类过程中的权值会被降低,反之则会升高

3、组合成强分类器。增大分类效果好的分类器占的权重,降低分类效果差的分类器占的权重。

(当然,上面的都是一些文字性的东西,比较抽象,比如增大权重到底是怎么做的,这就需要记忆一些公式了)

详细步骤:

1、训练集:(x1, y1), (x2, y2),......, (xn, yn);刚开始每个样本都赋予一个等值的权重1/n;

2、使用一些特征,得到一个基本分类器,计算其分类的错误率:e = 错误分类 / 样本数,根据得到的错误率可以计算这个分类器在最终的分类中占的权重:a = 1/2 * ln((1-e) / e);

3、更新数据的权值分布(刚开始时都为1 / n);



由(2)知e < 0.5,则a > 0,如果错误分类指数a次方大于1,则下次训练时样本的权重会增大,正确分类样本的权值下次会变小。

之后再组合得到的各个弱分类器



从这个式子也可以看出前面(3)中说的增大分类效果好的分类器占的权重,降低分类效果差的分类器占的权重。错误率e越小,a越大,也即在整个分类中占的权重越大。

其实AdaBoost的主要问题在于如何得到各个弱分类器,这就需要对问题有一个充分的理解,弱分类器的获得可以是一些特征的组合得到的结果,也可以是单个特征的结果!一般开始做的时候是将一些强特征或其组合来获得分类器(比如区分人种用肤色这个强特征)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: