提升算法(1)

对于分类问题而言,给定一个训练样本集,求比较粗糙的分类规则(弱分类器)要比求精确的分类规则(强分类器)容易得多,提升法就是从弱学习算法出发,反复学习,得到一系列弱分类器,然后组合弱分类器构成强分类器。大多数提升法都是改变训练数据的概率分布(训练数据的权值分布),针对不同的训练数据分布调用弱学习算法学习一系列弱分类器。

关于AdaBoost的做法是,1、提高前一轮弱分类器错误分类样本的权值,降低正确分类样本的权值,从而以权值增大来获取对弱分类器更大的关注。2、关于分类结果的问题,AdaBoost采取加权多数表决的方法,加大分类误差率小的弱分类器的权值,使其在表决中起到作用更大,减少分类误差率大的弱分类器的权值,使其在表决中起较小的作用。

 AdaBoost算法:

输入:训练数据集,其中,弱学习算法

输出:最终分类器G(x)

(1) 初始化训练数据的权值分布(设定基分类器对每条训练数据的权值)

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

1) 使用具有权值分布Dm的训练数据集学习,得到基本分类器:

2) 计算Gm(x)在训练数据集上的分类误差率

3) 计算Gm(x)的系数(计算每个基分类器的系数,用以进一步加权求和得到sign分类结果)

(这里的log为ln)

4) 更新训练数据集的权值分布(用以更新数据集的权值w)

这里,Zm是规范化因子

以上部分的为各实例xi由基分类器判别得到的所属类别,那么在基分类器正确分类的时候值为1,错误分类的时候值为-1.

 

(3) 构建基本分类器的线性组合(构造最终的分类)

得到最终分类器:

 AdaBoost算法的说明:

 AdaBoost反复学习基本分类器,在每一轮m=1,2,...,M顺序执行如下操作:

1)使用当前分布Dm加权的训练数据集,学习基本分类器Gm(x)

2)计算基本分类器Gm(x)在加权训练数据集上的分类误差率:

其中。这说明Gm(x)在加权的训练数据集上的分类误差率是被Gm(x)误分类样本的权值之和,由此可得数据权值分布Dm与基本分类器Gm(x)的分类误差率的关系。

3)计算基本分类器Gm(x)的系数am,表示Gm(x)在最终分类器的重要性,由am的计算公式可以发现,当em小于0.5的时候am大于0,反之亦然。因而分类误差率越小的基本分类器在最终分类器中起到的作用越大。

4)通过更新训练数据的权值分布来为下一轮迭代做输入,表示如下:

表示基分类器的返回判断结果。

从而被基分类器Gm(x)误分类样本的权值会得以扩大,被正确分类样本的权值会缩小。误分类样本在下一轮学习中起到更大作用,以改变训练数据权值分布,来使训练数据在基分类器的学习中起不同的作用。

在最终的分类过程中,f(x)的符号决定实例分类,通过基分类器的线性组合构建最终分类器。

 

AdaBoost最基本的性质是它能在学习过程中不断减少训练误差,即在训练数据集上的分类误差率,关于这个问题有如下定理:

AdaBoost的训练误差界:

其中I为指示函数,当满足条件时为1,否则为0;

二分类问题AdaBoost的训练误差界:

 

posted @ 2017-12-23 20:22  小丑_jk  阅读(590)  评论(0编辑  收藏  举报