提升(boosting)方法是一种可以将弱学习器提升为强学习器的算法。在分类问题中,它通过改变训练样本的权重,使得先前学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器,并将这些分类器进行过线性组合,提高分类的性能。
提升方法AdaBoost算法
- 在每一轮如何改变训练数据的权值或概率分布
AdaBoost 提高那些被前一轮弱分类器错误分类的样本的权值,而降低那些被正确分类样本的权值。 - 如何将弱分类器组合成一个强分类器
AdaBoost采取加权多数表决的方法。加大分类误差率小的弱分类器的权值,减小分类误差率大的弱分类器的权值。
AdaBoost算法
算法AdaBoost
输入:训练数据集T,
y∈(−1,1)
;弱学习算法
输出:最终分类器
G(x)
1. 初始化训练数据的权值分布
D1=(w11,...,w1N),w1i=1N,i=1,...,N
2. 对m=1,2,…,M
(a)使用具有权值分布
Dm
的训练数据学习,得到基本分类器
Gm(x):x→(−1,1)
(b)计算
Gm(x)
在训练集上的分类误差率
em=∑i=1NP(Gm(xi)≠yi)=∑i=1NwmiI(Gm(xi)≠yi)
(c)计算
Gm(x)
的系数
am=12log1−emem(8.2)
这里的对数是自然对数
(d)更新训练集的权值分布
这里, Zm 是规范化因子
Zm=∑i=1Nwmiexp(−amyiGm(xi))(8.5)
它使 Dm+1 成为一个概率分布
3. 构建基分类器的线性组合
f(x)=∑m=1NamGm(x)
得到最终分类器
G(x)=sign(f(x))=sign(∑m=1NamGm(x))
算法说明
Gm(x)
在加权的训练数据集上的分类误差率是被
Gm(x)
误分类样本的权值之和,由此可以看出数据权值分布
Dm
与基本分类器
Gm(x)
的分类误差率的关系。
由式(8.2)知,当
em≤12
时,
am≥0
,并且
am
随着
em
的减小而增大,所以分类误差率越小的基本分类器在最终分类器中的作用越大。
式(8.4)可以写成:
由此可知,被基分类器误分类样本的权值得以扩大,而被正确分类样本的权值却得以缩小。两相比较,误分类样本的权值被放大 e2am=1−emem 倍。误分类样本在下一轮学习中起更大的作用。
不改变训练数据,不断改变训练数据权值的分布,使得训练数据在基本分类器的学习中起不同的作用,这是AdaBoost的一个特点。
最后线性组合 f(x) 实现了M个基分类器的加权表决。系数 am 之和并不为1。 f(x) 的符号决定实例x的类, f(x) 的绝对值表示分类的确信度。
利用基本分类器的线性组合构建最终分类器是AdaBoost的另一特点。
AdaBoost算法的训练误差分析
定理8.1后半部分推导过程中第2个等号后出现的
w1i
是因为在第一轮训练时,各个样本的权重均为
1N
。
上述定理说明,可以在每一轮选取适当的
Gm
使得
Zm
最小,从而使得训练误差下降最快。对二类分类问题,有如下结果。
最后一个不等式使用了
1−x≤e−x
Zm=(1−4γ2m)12≤(e−4γ2m)12=e−2γ2m
所以
∏Mm=1Zm≤e−2∑Mm=1γ2m
AdaBoost算法的解释
AdaBoost算法是模型为加法模型,损失函数为指数函数,学习算法为前向分布算法时的二类分类学习算法。
前向分步算法
考虑加法模型(additive model)
f(x)=∑m=1Mβmb(x;γm)
在给定训练数据和损失函数
L(y,f(x))
的条件下,学习加法模型
f(x)
成为经验风险最小化及损失函数最小化问题:
minβm,γm∑i=1NL(yi,∑m=1Mβmb(xi;γm))
前向分步算法(forward stagewise algorithm)求解这一优化问题的想法是:因为学习是加法模型,如果能够从前向后,每一步只学习一个 基函数及其系数,逐步逼近优化目标函数式(8.14)那么就可以简化优化的复杂度。具体地,每步只需优化如下损失函数:
minβ,γ∑i=1NL(yi,βb(xi;γ))
前向分步算法与AdaBoost
参考资料
《统计学习方法》第8章