Adaboost算法

AdaBoost是一种“集成方法”,通过将同一个弱分类器串行训练后,得到一个强分类器,进而实现较高精度的分辨能力。

算法流程:

假定给定一个二元分类的训练数据集
T={(x1,y1),(x2,y2),...(xN,yN)} 
其中, y{1,1}

  1. 初始化训练数据的权值分布

    D1=(w11,,w12,...,w1N),w1i=1N,i=1,2,...,N 

  2. 对m=1,2,…,M
    (a)使用具有权值分布 Dm  的训练数据集学习,得到基本分类器

    Gm(x):χ{1,1}

    (b)计算 Gm(x) 在训练集中的分类误差率
    em=P(Gm(xi)yi)=i=1Nwmi 

    (c)计算 Gm(x) 的系数
    αm=12log1emem

    这里的对数是自然对数
    (d)更新数据集的权值分布
    Dm+1=(wm+1,1,,wm+1,2,...,wm+1,N) 

    wm+1,1=wmiZmexp(αmyiGm(xi)),i=1,2,...,N

    其中, Zm 是规范化因子
    Zm=i=1Nwmiexp(αmyiGm(xi))

  3. 构建基本分类器的线性组合,也即是最终的强分类器
    f(x)=m=1MαmGm(x)

    G(x)=sign(f(x)) 

补充说明:

AdaBoost解决了两个问题:

一.如何在每一轮中改变训练的数据的权值分布
二.如何将弱分类器组合成一个强分类器,使得精度升高

对于一,是在每次的训练中,提高那些前一轮训练中被分类错误的样本的权值,降低前一轮训练中被分类正确的样本的权值,具体做法在算法里面的 2.(d)里面

对于二,解决方法是加大分类误差小的弱分类器的权值,减小分类误差大的弱分类器的权值,具体做法是在 αm 里调控,当 em<=0.5,αm>=0 并且 αm 随着 em 的减小而增大,所以误差率越小的弱分类器在最终的分类器中的作用会越来越大。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值