Boosting算法的核心思想是,构造一堆diverse的弱分类器(准确率不为0.5),然后将这些构造好的弱分类器进行融合,达到一个强分类器的效果。Adaboost算法是Boosting ensemble里面的一种,之所以称为Adaptive boosting,是因为在每个弱分类器中,分错的样本会用来训练下一个弱分类器,这些弱分类器可能很弱,但只要比分类效果比随机好一点(比如准确率0.51,随机的效果为0.5),就能够提升模型效果。
Esemble learning一般的步骤包括两步,第一步是生成diverse的模型,第二步是将第一步生成的模型组合起来。Esemble learning入门这篇文章中提到,第一步生成diverse模型有很多方法,比如bagging方法是通过boostraping来生成弱模型,先来看下bagging算法中是怎么生成很多弱模型的。
Bagging
用不同的训练数据可以得到不同的模型,Bagging生成base algorithm用的就是这个原理。它通过boostraping方法,得到不同的训练数据集,然后用这些不同的数据集训练base algorithm。Boostraping的具体过程是,每次从全数据集中随机选取一个点,选下一个点仍旧是在全数据集中选取,因此boostraping方法得到的数据集中,会存在重复的点。
在训练过程中,训练的目标往往是最小化E_in,而用boostraping后的数据来train模型,实际上相当于在每个error上加了个权重,如果一个样本被重复抽到n次,那个这个样本上的误差会放大n倍,如果一个样本没有被抽到,则这个样本上的误差为0。
从上面可以看出,bagging算法中的弱模型生成方法实质上是通过调整每个样本的不同的权重实现的。
Adaboost弱模型生成
在bagging中,每个样本的权重是随机生成的,adaboost对其做了改进,可以让最后训练得到的base algorithm更丰富,差异化更大。
假设已经生成了第t个base algorithm,如果在g_t的基础上调整weight得到和g_t差异比较大的g_(t+1),可以通过调整weight,使得g_t在weight调整后的模型上表现很差(二分类准确率接近随机,即50%),那么在t+1的学习过程中就不会学到和g_t一样的模型了。目标如下式子: