Boosting算法是一种把若干个分类器整合为一个分类器的方法,在boosting算法产生之前,还出现过两种比较重要的将多个分类器整合 为一个分类器的方法,即boostrapping方法和bagging方法。
AdaBoost 是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器,即弱分类器,然后把这些弱分类器集合起来,构造一个更强的最终分类器。
算法本身是改变数据分布实现的,它根据每次训练集之中的每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改权值的新数据送给下层分类器进行训练,然后将每次训练得到的分类器融合起来,作为最后的决策分类器。
Adaboost是提升树(boosting tree),所谓“提升树”就是把“弱学习算法”提升(boost)为“强学习算法”。
算法的具体过程:
1.初始化所有训练样例的权重为1 / N,其中N是样例数
2.for m=1,……M:
a).训练弱分类器ym(),使其最小化
权重误差函数
b)接下来计算该弱分类器的话语权α
c)更新权重:
如果一个训练样例 在前一个分类器中被误分,那么它的权重会被加重,相应地,被正确分类的样例的权重会降低,
使得下一个分类器 会更在意被误分的样例。
3.得到最后的分类器
前一个分类器改变权重w,同时组成最后的分类器
通过组合多个弱分类器(hypothese),构建一个更强大的分类器(hypothese),从而达到“三个臭皮匠赛过诸葛亮”的效果。
例如实际中,可以通过简单的“横”“竖”组成比较复杂的模型。
AdaBoost元算法中有个很重要的概念叫样本权重u。
学习算法A使用相同的样本集合D,每次训练后,D中每个样本的权重u会有所变化。由于样本权重u不同,所以每次都会生成不同g(t).
总的原则是“增大错误样本的权重,减小正确样本的权重”。