学习笔记39-提升方法(boosting)

来源:互联网 发布:uploadify.php 漏洞 编辑:程序博客网 时间:2024/04/29 09:59

提升方法

提升方法在分类问题中,通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类的性能。
首先看两个概念:
1. 弱学习(weakly learnable):一个概念,如果存在一个多项式的学习算法能够学习它,学习的正确率仅比随机猜测略高,那么称这个概念是弱可学习的。
2. 强学习(strongly learnable):一个概念,如果存在一个多项式的学习算法能够学习它,并且学习的效率很高,那么称这个概念是强可学习的。
后来,在PAC(Probably approximately correct)的学习框架下,发现一个概念是强可学习的充分必要条件是这个概念是弱可学习的。也就是说,如果发现了一个弱学习算法,那么就可以把它提升(boosting)为强学习算法。其中,最经典的就是AdaBoost算法。

AdaBoost算法

对于一个分类问题,给定一个训练样本集,先求比较粗糙的分类规则,得到一个弱分类器,通过改变训练样本的权重,反复学习,得到一系列的弱分类器(基本分类器)。然后组合这些分类器,构成一个强分类器。大多数提升方法都是改变训练数据的概率分布(训练数据的权重分布),针对不同的训练数据分布调用弱学习算法,学习一系列的弱分类器。
那么对于提升方法,有两个重要的问题:
1. 在每一轮如何改变训练数据的权重或概率分布
2. 如何将弱分类器组合成一个强分类器
AdaBoost算法在第一个问题上是这样处理的:
提升那些在前一轮分类器中被错误分类的样本的权重,降低那些正确分类的样本的权重。
在第二个问题上,AdaBoost采取多数表决方式,具体还可以加大分类误差率小的分类器的权重,减少分类误差率大的分类器的权重。
具体算法如下:
输入:训练数据集T={(x1,y1),(x2,y2),(x3,y3),…(xN,yN)}
其中y的取值只有+1,-1,(二分类任务)
输出:最终分类器G(X)
(1)初始化训练数据的权重分布
初始化权重
(2)对M个弱分类器,m=1,2,…,M
a. 使用权重分布Dm的训练数据集学习,得到基本分类器G(m)
b. 计算G(m)在训练数据集上的分类误差率
分类误差率
c. 计算Gm(x)的系数(权重)
这里写图片描述
d. 更新训练数据集的权重分布
这里写图片描述
(3)构建基本分类器的线性组合
首先是线性组合:
这里写图片描述
然后是最终分类器:
这里写图片描述
下面给个例子:
这里写图片描述