您的位置:首页 > 其它

Adaboost

2018-02-26 22:23 447 查看

Adaboost

Boosting(提升方法)是一族可以将弱分类器提升为强分类器的方法。这族算法的工作原理是:先从初始训练集训练出一个基分类器,再根据基分类器的表现对训练样本权值进行调整,使得被基分类器分错的样本得到更多的关注,然后根据调整权值后的样本来训练下一个基分类器,如此重复,直至基分类器的数目达到预先设定的阈值TT,最终将这TT个基分类器进行加权组合。

Boosting方法的理论基础是强可学习与弱可学习是等价的。强可学习是指存在一个多项式的学习算法能够得到一个正确率很高的分类器;弱可学习是指存在一个多项式的学习算法能够得到一个正确率仅比随机猜测略好的分类器。可以证明,强可学习与弱可学习是等价的。也就是说,对于一个数据集如果存在弱可学习算法,则可以通过一些办法将它提升为强可学习算法。

Adaboost算法是Boosting算法族最常用的算法,其有多种推导方式,比较容易理解的是基于”加性模型“,即基分类器的加权线性组合。Adaboost算法如下:


[align=center]图1 The AdaBoost Algorithm[/align]

简要描述其工作步骤:

先从初始训练集训练出TT个基分类器;

再根据基分类器的表现选择错误率最小的基分类器作为当前轮迭代的基分类器,根据错误率对训练样本权重进行调整,使得被先前的基分类器误判的训练样本在后续受到更多的关注,同时需要计算出该轮所用基分类器的权重;

然后基于调整后的样本权重来训练下一个基分类器;

如此重复,直到基分类器数量达到给定的值TT为止;

最终将这TT个基分类器进行加权组合得到最终的强分类器。

在Adaboost中分类器的错误率ϵϵ计算方法是被该分类器错分的样本权值之和。

Adaboost算法的两个核心步骤:

权值调整:Adaboost算法提高那些被前一轮基分类器错
23ff7
误分类样本的权值,降低那些被前一轮基分类器正确分类样本的权值,从而使得那些没有正确分类的样本由于权值的加大而受到后一轮基分类器的更大关注。

基分类器组合,Adaboost采用加权组合的方法:

加大分类误差较小的弱分类器的权值,使得它在表决中起较大作用;

减小分类误差较大的弱分类器的权值,使得它在表决中起较小作用。

分类器权重计算方法:

α=12ln1−ϵϵ=ln1−ϵϵ−−−−−√α=12ln⁡1−ϵϵ=ln⁡1−ϵϵ

每次权值调整幅度应为多大?Boosting的思想是总权值的一半赋予被错误分类的样本,总权值的一半赋予剩余的样本。由于初始权值均匀分布在所有样本上且和为1,这样分配给被错误分类的样本权值等于错误率ϵϵ,后续将被错误分类的样本的权重更新为被错误分类的样本权重乘以12ϵ12ϵ,将被正确分类的样本的权重更新为被正确分类样本的权重乘以12(1−ϵ)12(1−ϵ)。

下面通过实例来说明Adaboost算法的整个过程,所用样本如下:

样本序号12345678910
样本(1,5)(2,2)(3,1)(4,6)(6,8)(6,5)(7,9)(8,7)(9,8)(10,2)
标签11-1-11-111-1-1
Base learning algorithm

本示例使用垂直坐标系的直线作为分类器,有如下三个弱分类器:

h1={1,−1,X<2.5X≥2.5h1={1,X<2.5−1,X≥2.5 h2={1,−1,X<8.5X≥8.5h2={1,X<8.5−1,X≥8.5 h3={1,−1,Y>6.5Y≤6.5h3={1,Y>6.5−1,Y≤6.5

直观化的表示如图2所示:


[align=center]图2 样本&基分类器[/align]

本示例的总迭代次数T=3T=3

初始化:

首先给训练集的10个样本分配初始权值1m1m,其中mm为样本个数,在这里是10。每个样本的权值分布D1D1如下:

样本序号12345678910
样本(1,5)(2,2)(3,1)(4,6)(6,8)(6,5)(7,9)(8,7)(9,8)(10,2)
标签11-1-11-111-1-1
权值D1D10.10.10.10.10.10.10.10.10.10.1
第一轮迭代t=1t=1得到第一个强分类器:

在样本权值分布为D1D1的情况下,选择h1h1、h2h2、h3h3三个中错误率最小的分类器作为第一个基分类器H1H1,由图2可知三个分类器分类错误率都是0.3,且0.3<0.5,因此可取三个中的任何一个,这里选择h1h1作为H1H1,即:

H1={1,−1,X<2.5X≥2.5H1={1,X<2.5−1,X≥2.5

使用H1H1进行分类时样本点(6,8)、(7,9)、(8,7)会被分错,H1H1的错误率为:

ϵ1=0.1+0.1+0.1=0.3ϵ1=0.1+0.1+0.1=0.3

根据ϵ1ϵ1计算H1H1的权重

α1=ln1−ϵ1ϵ1−−−−−−√=ln1−0.30.3−−−−−−√=0.4236α1=ln⁡1−ϵ1ϵ1=ln⁡1−0.30.3=0.4236

此时得到的强分类器为sign(α1H1)sign(α1H1),即sign(0.4236H1)sign(0.4236H1),此时的强分类器的训练错误率为0.3。

根据H1H1的表现更新样本的权值,错误分类的样本有三个,因此这三个错误样本的权值之和是0.5,剩下的七个样本权值之和为0.5。因此三个被错误分类的样本(6,8)、(7,9)、(8,7)的权值均为12×1312×13,即1616,剩余的七个样本权值均为12×1712×17,即114114。

经过第一轮迭代之后样本的权值分布D2D2为:

样本序号12345678910
样本(1,5)(2,2)(3,1)(4,6)(6,8)(6,5)(7,9)(8,7)(9,8)(10,2)
标签11-1-11-111-1-1
权值D2D2114114114114114114114114161611411416161616114114114114
第二轮迭代t=2t=2得到第二个强分类器:

在样本权值分布为D2D2的情况下,选择h1h1、h2h2、h3h3三个中错误率最小的分类器作为第二个基分类器H2H2:

+ 选取h1h1作为第二个基分类器时(6,8)、(7,9)、(8,7)会被分错,错误率为:

ϵ=16+16+16=12ϵ=16+16+16=12

+ 选取h2h2作为第二个基分类器时(3,1)、(4,6)、(6,5)会被分错,错误率为:

ϵ=114+114+114=314ϵ=114+114+114=314

+ 选取h3h3作为第二个基分类器时(9,8)、(1,5)、(2,2)会被分错,错误率为:

ϵ=114+114+114=314ϵ=114+114+114=314

当选择h2h2或h3h3作为第二个基分类器时错误率均为314314且314314<0.5,可以选择h2h2作为第二个基分类器H2H2,即

H2={1,−1,X<8.5X≥8.5H2={1,X<8.5−1,X≥8.5

由图2可知使用H2H2进行分类时样本点(3,1)、(4,6)、(6,5)会被分错,H2H2的错误率为:

ϵ2=114+114+114=314<0.5ϵ2=114+114+114=314<0.5

根据ϵ2ϵ2计算H2H2的权重

α2=ln1−ϵ2ϵ2−−−−−−√=ln1−314314−−−−−−⎷=0.6496α2=ln⁡1−ϵ2ϵ2=ln⁡1−314314=0.6496

此时得到的强分类器为sign(α1H1+α2H2)sign(α1H1+α2H2),即sign(0.4236H1+0.6496H2)sign(0.4236H1+0.6496H2),此时的强分类器的训练错误率仍为0.3。

对于被H2H2分错的样本点(3,1)、(4,6)、(6,5)权重均更新为:12×1312×13,即1616。

对于被H2H2正确分类的样本点(1,5)、(2,2)、(9,8)、(10,2),其上一轮的权重均为114114,本轮将它们权重更新为114×12×(1−ϵ2)=114×12×(1−314)=122114×12×(1−ϵ2)=114×12×(1−314)=122。

对于被H2H2正确分类的样本点(6,8)、(7,9)、(8,7),其上一轮的权重均为1616,本轮将它们权重更新为16×12×(1−ϵ2)=16×12×(1−314)=76616×12×(1−ϵ2)=16×12×(1−314)=766。

经过第二轮迭代之后样本的权值分布D3D3为:

样本序号12345678910
样本(1,5)(2,2)(3,1)(4,6)(6,8)(6,5)(7,9)(8,7)(9,8)(10,2)
标签11-1-11-111-1-1
权值D3D3122122122122161616167667661616766766766766122122122122
第三轮迭代t=3t=3得到第三个强分类器:

在样本权值分布为D3D3的情况下,选择h1h1、h2h2、h3h3三个中错误率最小的分类器作为第三个基分类器H3H3:

+ 选取h1h1作为第三个基分类器时(6,8)、(7,9)、(8,7)会被分错,错误率为:

ϵ=766+766+766=722ϵ=766+766+766=722

+ 选取h2h2作为第三个基分类器时(3,1)、(4,6)、(6,5)会被分错,错误率为:

ϵ=16+16+16=12ϵ=16+16+16=12

+ 选取h3h3作为第三个基分类器时(9,8)、(1,5)、(2,2)会被分错,错误率为:

ϵ=122+122+122=322ϵ=122+122+122=322

当选择h3h3作为第三个基分类器时错误率均为322322最小且322322<0.5,所以选择h3h3作为第三个基分类器H3H3,即

H3={1,−1,Y>6.5Y≤6.5H3={1,Y>6.5−1,Y≤6.5

由图2可知使用H3H3进行分类时样本点(9,8)、(1,5)、(2,2)会被分错,H3H3的错误率为:

ϵ3=122+122+122=3
2b5df
22<0.5ϵ3=122+122+122=322<0.5

根据ϵ3ϵ3计算H3H3的权重

α3=ln1−ϵ3ϵ3−−−−−−√=ln1−322322−−−−−−⎷=0.9229α3=ln⁡1−ϵ3ϵ3=ln⁡1−322322=0.9229

此时得到的强分类器为sign(α1H1+α2H2+α3H3)sign(α1H1+α2H2+α3H3),即sign(0.4236H1+0.6496H2+0.9229H3)sign(0.4236H1+0.6496H2+0.9229H3),此时的强分类器的训练错误率为0。

使用H3H3进行分类时样本点(9,8)、(1,5)、(2,2)会被分错,它们的权重均更新为:12×1312×13,即1616。

对于被H3H3正确分类的样本点(3,1)、(4,6)、(6,5),其上一轮的权重均为1616,本轮将它们权重更新为16×12×(1−ϵ3)=16×12×(1−322)=1111416×12×(1−ϵ3)=16×12×(1−322)=11114。

对于被H3H3正确分类的样本点(6,8)、(7,9)、(8,7),其上一轮的权重均为766766,本轮将它们权重更新为766×12×(1−ϵ3)=766×12×(1−322)=7114766×12×(1−ϵ3)=766×12×(1−322)=7114。

对于被H3H3正确分类的样本点(10,2),其上一轮的权重为122122,本轮将它们权重更新为122×12×(1−ϵ3)=122×12×(1−322)=138122×12×(1−ϵ3)=122×12×(1−322)=138。

经过第三轮迭代之后样本的权值分布D4D4为:

样本序号12345678910
样本(1,5)(2,2)(3,1)(4,6)(6,8)(6,5)(7,9)(8,7)(9,8)(10,2)
标签11-1-11-111-1-1
权值D4D4161616161111411114111141111471147114111141111471147114711471141616138138
由于三个基分类器都用完了,完成了三次迭代之后算法终止。

因此最终得到的强分类器为:

H=sign(∑t=1TαtHt)=sign(0.4236H1+0.6496H2+0.9229H3)H=sign(∑t=1TαtHt)=sign(0.4236H1+0.6496H2+0.9229H3)

可以验证最终的强分类器HH的错误率为0,例如对于点(9,8):

H=sign(0.4236∗(−1)+0.6496∗(−1)+0.9229∗1)=sign(−0.1503)=−1H=sign(0.4236∗(−1)+0.6496∗(−1)+0.9229∗1)=sign(−0.1503)=−1

所以判定点(9,8)属于-1的类别,判断正确。

Adaboost算法优缺点

优点:可解释性强;不容易过拟合;不用做特征筛选;可以使用很多方法(决策树、SVM等)构建基分类器。

缺点:对于离群值比较敏感,在Adaboost训练过程中,Adaboost会使得离群样本的权值呈指数增长,训练将会过于偏向这类困难的样本,导致Adaboost算法易受噪声干扰。

参考文献

周志华. 机器学习 [D]. 清华大学出版社,2016.

华校专、王正林. Python大战机器学习 [D]. 电子工业出版社,2017.

Peter Flach著、段菲译. 机器学习 [D]. 人民邮电出版社,2016.

Xindong Wu, Vipin Kumar, et al. Top 10 algorithms in data mining[J]. Knowl Inf Syst, 2008, 14:1–37.


[align=center][/align]

更多资料请移步github:

https://github.com/GarryLau/MachineLearning
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息