Boosting算法是将“弱学习算法“提升为“强学习算法”的过程,提升方法主要思想是:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个专家单独的判断好,“三个臭皮匠顶个诸葛亮”。一般来说,找到弱学习算法要相对容易一些,然后通过反复学习得到一系列弱分类器,组合这些弱分类器得到一个强分类器。
AdaBoost核心问题
- 在每一轮如何改变训练数据的权值或概率分布;
- AdaBoost:提高那些被前一轮弱分类器错误分类样本的权值,降低那些被正确分类样本的权值。
- 如何将弱分类器组合成一个强分类器。
- AdaBoost:加权多数表决,具体地,加大分类误差率小的弱分类器的权值,使其在表决中起较大的作用,减小分类误差率大的弱分类器的权值,使其在表决中起较小的作用。
AdaBoost算法流程
输入:训练数据集T={(x1,y1),(x2,y2),...,(xn,yn)},其中实例xi∈X⊆Rn,标记yi∈Y={−1,1},X是实例空间,Y是标记集合;若学习算法。
输出:最终分类器G(x)。
- 初始化训练数据的权值分布
D1=(w11,...,w1i,...,w1n),w1i=n1,i=1,2,...,n
假设训练数据集具有均匀的权值分布,即每个训练样本在基本分类器的学习中作用相同,这一假设保证第1步能够在原始数据上学习基分类器G1(x);
-
对m=1,...,M
a. 使用具有权值分布Dm的训练数据集学习,得到使分类误差率最小的基分类器
Gm(x):X→{−1,1}
b. 计算Gm(x)在训练数据集上的分类误差率
em=P(Gm(xi)=yi)=Gm(xi)=yi∑wmi=i=1∑NwmiI{Gm(xi)=yi}
Gm(x)在加权的训练数据集上的分类误差率是被Gm(x)误分类样本的权值之和,数由此可以看出数据权值分布Dm与基本分类器Gm(x)的分类误差率的关系。
c. 计算Gm(x)分类器的权重系数
αm=21logeem1−em
当em≤21时,αm≥0,并且αm随着em的减小而增大,所以,分类误差率越小的基本分类器在最终分类器中的作用越大。
d. 更新训练数据集的权值分布
Dm+1=(wm+1,1,...,wm+1,i,...,wm+1,n)
wm+1,i=Zmwmie−αmyiGm(xi),i=1,2,...,n
这里,Zm是规范化因子,
Zm=i=1∑nwmie−αmyiGm(xi)
它使Dm+1成为一个概率分布。
wm+1,i=⎩⎪⎨⎪⎧Zmwmie−αm,Gm(xi)=yiZmwmieαm,Gm(xi)=yi
被基本分类器Gm(x)误分类样本的权值得以扩大,而被正确分类样本的权值得以缩小,比较而言,误分类样本权值被放大e2αm=1−emem
-
构建基本分类器的线性组合
f(x)=m=1∑MαmGm(x)
得到最终分类器,
G(x)=sign(f(x))=sign(m=1∑MαmGm(x))
线性组合f(x)实现M个基本分类器的加权表决。系数αm表示了基分类器Gm(x)的重要性,这里,所有αm之和并不为1。f(x)的符号决定实例x的分类,f(x)的绝对值表示分类的确信度。
理解AdaBoost
前向分步算法
加法模型是指由一系列弱分类器线性相加而成的强分类器。一般组合形式如下:
f(x)=m=1∑Mβmb(x;γm)
其中,b(x;γm)为基函数,就是一个个的弱分类器,γm是弱分类器学习到的最优参数,αm是弱分类器在强分类器中所占比重。
在给定训练数据及损失函数L(y,f(x))的条件下,学习加法模型f(x)称为经验风险最小化即损失函数极小化问题:
βm,γmmini=1∑nL(yi,m=1∑Mβmb(x;γm))
通常这是一个复杂的优化问题。前向分步算法求解这一优化问题的思想是:从前向后,每一步只学习一个基函数及其系数,逐步逼近优化目标函数,简化优化的复杂度。具体地,每一步只需优化如下损失函数:
β,γmini=1∑nL(yi,βb(xi;γ))

前向分步算法与AdaBoost
AdaBoost算法可以认为是模型为加法模型、损失函数为指数函数、学习算法为前向分步算法时的二分类学习方法。
AdaBoost的最终分类器:
f(x)=m=1∑MαmGm(x)
显然这是一个加法模型。下面证明AdaBoost算法等价于损失函数是指数损失函数的前向分布算法,
L(y,f(x))=exp[−yf(x)]
假设经过m−1次携带向前分布算法得到fm−1(x),
fm−1(x)=fm−2(x)+αm−1Gm−1(x)=α1G1(x)+...+αm−1Gm−1(x)
在前向分布算法第m次迭代,我们的目标是寻找αm和Gm(x)使fm(x)在训练数据集上的指数损失最小,即
(αm,Gm(x))=argα,Gmini=1∑nexp[−yi(fm−1(xi)+αG(xi))]
令wˉmi=exp[−yifm−1(xi)],这里,wˉmi不依赖与α和G,因此与最小化无关,可写目标函数
(αm,Gm(x))=argα,Gmini=1∑nwˉmiexp[−yiαG(xi)](1)
但wˉmi依赖于fm−1(xi),随着每一轮迭代发生改变。
对任意α>0,当yi与G(xi)同号时,目标函数的第i个分量越大,因此,使(1)式最小的G(x)由下式得到,
Gm∗(x)=argGmini=1∑nwˉmiI{Gm(xi)=yi}
此分类器Gm∗(x)即为AdaBoost算法的基分类器Gm(x),它是使第m轮加权训练数据分类误差率最小的基分类器。
之后求α,
i=1∑nwˉmiexp[−yiαG(xi)]=∑yi=Gm(xi)wˉmie−α+∑yi=Gm(xi)wˉmieα=(eα−e−α)i=1∑nwˉmiI{Gm(xi)=yi}+e−αi=1∑nwˉmi
带入Gm∗(x),对α求导并使导数为0,
(eα+e−α)i=1∑nwˉmiI{Gm(xi)=yi}=e−αi=1∑nwˉmi
记
em=i=1∑n∑i=1nwˉmiwˉmiI{Gm(xi)=yi}=i=1∑nwmiI{Gm(xi)=yi}
wˉmi=exp[−yifm−1(xi)]=exp[−yi(fm−2(x)+αm−1Gm−1(x))]=wˉm−1,iexp[−yiαm−1Gm−1(x))]
wm,i=∑i=1nwm−1,iexp[−αm−1yiGm−1(xi)]wm−1,iexp[−αm−1yiGm−1(xi)],i=1,2,...,n
两边同除∑i=1nwˉmi,
(eα+e−α)em=e−α
则,
αm∗=21logem1−em
参考:
统计学习方法—李航