您的位置:首页 > 其它

提升方法AdaBoost

2017-08-27 16:12 351 查看


提升(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)更新训练集的权值分布

Dm+1=(wm+1,1,...,wm+1,N)wm+1,1=wmiZmexp(−amyiGm(xi)),i=1,...,N(8.4)

这里,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)可以写成:

wm+1,i={wmiZme−am,Gm(xi)=yiwmiZmeam,Gm(xi)≠yi

由此可知,被基分类器误分类样本的权值得以扩大,而被正确分类样本的权值却得以缩小。两相比较,误分类样本的权值被放大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章
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: