ML—AdaBoost算法

来源:互联网 发布:聪明的一休 知乎 编辑:程序博客网 时间:2024/05/21 17:39

华电北风吹
日期:2016-05-21

AdaBoost算法通过提高被前一轮弱分类器错误分类样本的权值,降低那些被正确分类的样本的权重,然后构建一系列的分类器,通过分类器的加权投票做出最终决策。

一、AdaBoost算法
AdaBoost
——————————————————————————————————
对于输入样本(x(i),y(i)),i=1,2,...,m,设置弱分类器的个数N
step 1. 初始化训练样本权重w1,i=1m,i=1,2,...,m
step 2. 依次前向构建每个弱分类器k=1,2,...,N
   a. 根据当前每个样本的权重wk,i,i=1,2,...,m训练分类器Gk(x)使得分类器在样本权重集w上加权分类准确率最低。
   b. 计算分类器Gk(x)的分类准确率
   ek=mi=1wk,iI(Gk(x(i))y(i)))(1-1)
   c. 计算Gk(x)的系数αm
   αk=121ekek(1-2)
   d. 更新样本权重
   wk+1,i=wk,iZkexp(αky(i)Gk(x(i))),i=1,2,...,m(1-3)
   其中,Zk为归一化因子,保证所有样本加权和一直为1.
   Zk=mi=1wk,iexp(αky(i)Gk(x(i)))(1-4)
step 3. 设分类器的线性组合为
f(x)=Nk=1αkGk(x)(1-5)
最终的判别函数为
G(x)=sign(f(x))=sign(Nk=1αkGk(x))(1-6)
——————————————————————————————————
关于上面AdaBoost算法里面涉及到的参数做一点简单说明。
1、由于这是训练数据集,所以对于任何一个分类器都应该有em12
2、所有的αk,k=1,2,...,N的和不一定1.
3、对于权重更新方式(公式1-3),意义在于分类正确的就以指数形式降低权重,分类错误就指数形式增加权重。

二、AdaBoost收敛性分析
AdaBoost算法通俗易懂,但是这样加权投票方式,不同于Bagging少数服从多数,深入理解的话肯定有疑问这样的加权能够提高分类准确率吗?现在我们来解决这个问题,随着弱分类器的个数增多,分类错误率单调递减。
1、AdaBoost的误差界满足如下不等式
1mmi=1I(G(x(i)))y(i)1mmi=1exp(y(i)f(x(i)))=Nk=1Zk(2-1)
证明:
对于前半部分不等式部分的证明,exp(y(i)f(x(i)))肯定大于等于0,并且当G(x(i)))y(i)时,有exp(y(i)f(x(i)))1,所以前半部分证明完毕。
对于后半部分等式部分证明如下,
1mmi=1exp(y(i)f(x(i)))
  =1mmi=1exp(Nk=1αky(i)Gk(x))
  =1mmi=1Nk=1exp(αky(i)Gk(x))
  =mi=11mNk=1exp(αky(i)Gk(x))
  =mi=1w1,iNk=1exp(αky(i)Gk(x))
(2-2)
由公式(1-3)可得
Zkwk+1,i=wk,iexp(αky(i)Gk(x(i))),i=1,2,...,m(2-3)
将公式(2-3)递归带入公式(2-2)最后一项,便可得到公式(2-1)等式部分。至此,公式(2-1)证毕。

2、对于二分类问题的训练误差界有如下不等式
nk=1=nk=12ek(1ek)=nk=114γ2kexp(2nk=1γ2k)(2-4)
这里,γm=12em
对于每一个的权重归一化因子Zk有,
Zk=mi=1wk,iexp(αky(i))Gk(x(i))
  =y(i)Gk(x(i))wk,ieαk+y(i)=Gk(x(i))wk,ieαk
  =(1ek)eαk+ekeαk
(2-5)
根据公式(2-1)知 Zk越小,错误率减小的越快,对上式求偏导,即可得到AdaBoost中的等式(1-2),将等式(1-2)带入上式得,
Zk=nk=12ek(1ek)=nk=114γ2k(2-6)

14γ2kexp(2γ2k)(2-7)
综上的可得到公式(2-4)。
并且,对于所有的γk若有γkγ,则有
1mmi=1I(G(x(i)))y(i)exp(2Nγ2)(2-8)
公式(2-8)说明了,AdaBoost的误差以指数速率下降。

1 0
原创粉丝点击