AdaBoost 提升算法

提升方法

对一个复杂任务来说,多个专家加权判断比一个专家单独判断效果要好,在机器学习中也一样。并且在机器学习中,训练一个高精度的模型比训练多个稍微粗糙的模型要困难得多,于是boosting(提升)方法被提出了。

提升方法在训练中主要需要解决两个问题:

1)数据的权重:基于什么原则向训练数据赋予权重;

2)分类器的权重:多个不同的弱分类器如何结合成为一个强分类器

AdaBoost很好地回答了上面两个问题。

AdaBoost提升方法

AdaBoost对上面两个问题的回答是:

1)数据的权重:在本轮训练中分类错误的数据被赋予更高的权重,以便在下一轮训练中被重点关照

2)分类器的权重:根据误差率赋予弱分类器权重,然后采用加权表决的方法获得强分类器

通过例子理解AdaBoost

有以下样本集,x为特征,y为分类值,共有-1,1两类,要求用AdaBoost训练一个强分类器

第1轮训练
1)初始化训练数据的权重:

其中

2)基于,计算特征x的哪个阈值使得分类误差最低。注意,一个阈值需要计算正向和反向两种情况

注意,计算时应乘以权重。

可见,当特征x的阈值为2.5或8.5时,误差率最低,为0.3,选择其中任何一个都可以,本轮选择v=2.5构建弱分类器:

3) 在训练数据集上的误差率为:

4)通过误差率计算弱分类器的权重系数:

5) 通过弱分类器加权获得强分类器:

加上信号函数才变成我们要的分类器决策函数:

6)测试一下强分类器对样本数据的分类能力:

有3个误分点,还需要继续boost

7)因为需要继续boost,根据本轮生成的弱分类器的错误率在强分类器里的权重,重新计算各数据的权重,供下轮训练使用:

更数据权重的公式为:

m表示下一轮是第m轮训练,i表示第i个数据。研究一下上面的公式,的正负代表该点(第i点)是否分类正确,所以它是用来当前点是被分对还是分错的,然后乘上本轮若分类器权重:,就相当于在全局强分类器的角度看待当前点分类的对错。然后用自然对数底e作幂来获得当前数据权重更新的信息。至于为什么用自然对数,是基于数学家们的验证,这里不作证明。

据上公式,求第2轮的所有数据的权重:

第2轮训练
8)相当于回到2)开始循环,基于,计算特征x的哪个阈值使得分类误差最低:

可见在8.5时候误分率最低,为0.21429,则本轮选择v=8.5构建弱分类器:

9) 在训练数据集上的误差率为:

10)通过误差率计算弱分类器的权重系数:

11) 通过弱分类器加权获得强分类器:

加上信号函数才变成我们要的分类器决策函数:

12)测试一下强分类器对样本数据的分类能力:

还有3个误分点,还需要继续boost

13)因为需要继续boost,根据本轮生成的弱分类器的错误率在强分类器里的权重,重新计算各数据的权重,供下轮训练使用:

根据,求第3轮的所有数据的权重:

第3轮训练
14)相当于再次回到2)开始循环,基于,计算特征x的哪个阈值使得分类误差最低:

可见在5.5时候误分率最低,为0.1819,则本轮选择v=5.5构建弱分类器:

15) 在训练数据集上的误差率为:

16)通过误差率计算弱分类器的权重系数:

17) 通过弱分类器加权获得强分类器:

加上信号函数才变成我们要的分类器决策函数:

18)测试一下强分类器对样本数据的分类能力:

有0个误分点,boost结束!

以上。