Adaboost算法原理与实践

boosting算法

Adaboost算法是boosting(提升方法)的代表性方法。在分类问题中,boosting通过反复修改训练数据的权重分布,构建一系列的基本分类器 ,并将这些分类器线性组合构成强分类器。

Adaboost算法

对于不同的提升方法要考虑两个问题:
1. 如何在每一轮训练中改变训练数据的权重;
2. 如何组合弱分类器。
Adaboost在第一个问题中是通过提高前一轮弱分类器错误分类样本的 权重,降低正确样本的权重来解决问题的。这么做的话,在下一轮训练中,前一轮被错误分类的样本就能得到特殊关注。而第二个问题,弱分类器的组合则是根据分类错误率来决定的,这很好理解,分类错误率低的弱分类器应该具有更大的权重,最后将弱分类器加上权重线性组合即可。
现在描述Adaboost算法的具体过程。假设给定一个二类分类的训练数据集 T=(x1,y1),(x2,y2),(xN,yN) ,其中 xiRn, yi{1,1} ,则Adaboost的步骤如下:
1. 初始化权重分布(训练数据的权重):
D1=(w11,w12,,w1N),w1i=1N,i=1,2,,N
2. 对 m=1,2,,M (总共训练M个基本分类器,第m个分类器的最终权重为 αm )
2.1 使用之前得到的训练集权重 Dm 对数据集进行训练,得到基本分类器,注意这里的负样本分类结果是-1,主要是之后更新权重公式时更加方便表达:

Gm(x):X{1,+1}

2.2 计算 Gm(x) 在训练数据集上的分类误差率,需要注意的是,这里的误差率需要 考虑权重影响:
em=P(Gm(xi)yi)=i=1NwmiI(Gm(xi)yi)

2.3 计算 Gm(x) 的权重 αm ,从 αm 的计算公式我们可以看出,当 em 大于0.5时, αm 小于0,也就是说该分类器对最终分类是起相反作用:
αm=12ln1emem

2.4 得到新一轮的权重分布 Dm+1 :
Dm+1=(wm+1,1,,wm+1,N)

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

其中 Zm 是规范化因子,使得 Dm+1 成为一个概率分布,即 Ni=1wm+1,i=1 ,所以有:
Zm=i=1Nwmiexp(αmyiGm(xi))

这个权重更新公式看似复杂,实际上联系到之前所说的强化对分类错误的样本的权重,我们可以把公式改写为:
wm+1,i=wm,iZmexp(αm), i=1,2,,NifGm(xi)=yi

wm+1,i=wm,iZmexp(αm), i=1,2,,NifGm(xi)yi

也就是说分类错误权重更新为分类正确的 exp(2αm) 倍,将 αm 带入有分类错误权重为分类正确的 1emem
3. 最终就能构建基本分类器的线性组合:
f(x)=m=1MαmGm(x)

Adaboost 算法实践

代码出自《机器学习实战》,具体请见github

猜你喜欢

转载自blog.csdn.net/wutao1530663/article/details/60964747
今日推荐