Adaboost(Adaptive Boosting)是一种原理简单,但很实用的有监督机器学习算法。说Boosting算法之前,先说下Bagging算法,他们两个都是把一些弱分类器组合起来进行分类的方法,统称为集成方法(Ensemble Method),虽然每个弱分类器分类的结果不那么准确,但是如果把多个弱分类器组合起来却可以得到相当不错的结果。同时集成方法还可以组合不同的分类器。Bagging算法大致思路是:从整体样本集合中,抽样n<N个样本,针对抽样的集合训练分类器,然后分类器进行投票,最终的结果是分类器投票的优胜结果。代表例子就是随机森林(Random Forest)。随机森林的每个弱分类器是决策树(Decision Tree),输出的类别由多个决策树分类的类别投票决定。但是,这种方法只是将分类器进行简单的组合,实际上并没有发挥出分类器组合的威力来。直到后来Freund and schapire提出了Adaboost算法,这个简单,有效的算法。Adaboost算法不同于Bagging算法的地方是:AdaBoost算法的每个弱分类器组合起来的权重不一样,而Bagging的每个弱分类器的组合权重是相等的。Adaboost原理如下图:
左边矩形表示数据集,中间方形表示弱分类器,后面的三角形表示每个分类器对应的权重,
最后根据每个弱分类器的加权组合来判断总体类别。这是Adaboost算法的整个原理过程。在这个过程中需要注意如下:
1、
每次迭代改变的是样本的分布,或者说是样本数据的权重,而不是重复采样。
2、数据集中每个样本数据对应有一个权重,初始化的时候每条样本数据的权重是一样的,一般为(1 / 样本数量)。后面在每次弱分类器训练完数据后会更新一次样本数据的权重。如何更新会在下面说明。
3、弱分类器的权重alpha是
根据弱分类器的错误率来调整,计算如下图

弱分类器权重计算完成后可以更新样本数据的权重,其实也可以说样本数据的权重间接靠