AdaBoost算法

来源:互联网 发布:ubuntu efi系统分区 编辑:程序博客网 时间:2024/06/06 16:25

在学习AdaBoost算法之前,要明确两个概念:强学习和弱学习。所谓强学习,就是指一个分类器经过学习后能够直接根据特征进行分类,并且正确率很高,比如SVM;而弱学习则是经过学习后其分类的正确率只比随机猜测略好一点点。

显然,从直观的感觉上我们更倾向于寻找强学习的分类器,但实际上,很多场合这种分类器往往很难构造出来,而弱分类器则容易得多。这时,我们将若干个训练好的弱分类器‘联合’起来,使其近似于一个强分类器,这样就会形成‘三个臭皮匠顶个诸葛亮’的效果。这就是AdaBoost算法的核心思想。

那么这里就有两个问题需要考虑,一个是如何通过数据学习;另一个则是如何将这些弱分类器组合起来。

对于第一个问题,AdaBoost 采取的策略是,在每一轮学习中,加大错分样本的权值,使其‘影响力’更大,降低正确分类样本的权值,使其‘影响力’减小。
对于第二个问题,AdaBoost采取的策略是,加大分类误差率小的弱分类器的权值,减小分类误差率大的弱分类器的权值,最后‘投票表决’分类结果。由于加大了分类误差率小的弱分类器的权值,这就相当于增加了其在‘投票’环节的‘话语权’;相应地,另一个则为减少‘话语权’。

AdaBoost算法:
假定二分类训练集:

T={(xi,yi)|i=1,2,....,N}

这里 yi{1,1}xiRN,i=1,2,…,N。
输入:训练数据集T;输出:最终分类器G(x)。
(1)初始化训练数据的权值分布:
D1={ω11,ω12,...,ω1N},ω1i=1/N,i=1,2,...,N

(2)对m=1,2,....,M

  • 使用具有权值分布D_m的训练数据集学习,得到基本分类器
    Gm(x):X{1,1}
  • 计算Gm(x)在训练集上的分类错误率:
    em=P(Gm(xi)yi)=ΣNi=1ωmiI(Gm(xi)yi)
  • 计算G_m(x)的系数
    αm=12ln1emem
  • 更新训练集的权值分布
    Dm+1=(ωm+1,1,ωm+1,2,...,ωm+1,N)

    ωm+1,i=ωmiZmexp{αmyiGm(xi)},i=1,2,...,N

    其中,Zm是规范化因子
    Zm=ΣNi=1ωmiexp{αmyiGm(xi)}

    它使得Dm+1构成一个概率分布,即ΣNi=1ωm+1,i=1
    (3)构建进本分类器的线性组合
    f(x)=ΣMm=1αmGm(x)

    得到最终分类器
    G(x)=sign(f(x))

    其中,sign()为符号函数。
1 0
原创粉丝点击