您的位置:首页 > 其它

Boosting and AdaBoost

2017-09-26 20:00 288 查看

Boosting

Boosting 是一族可将弱学习器提升为强学习器的算法。这族算法的工作机制类似:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多的关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。

提升方法是一种常用的统计学习方法,应用十分广泛且有效。在分类问题中,它通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类的性能。提升算法基于这样一种思路:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个专家单独的判断好。实际上,就是“三个臭皮匠顶个诸葛亮”的道理。

Boosting族算法最著名的代表是AdaBoost [Freund and Schapire, 1997]

对于提升算法boosting来说,有两个问题需要求解:

一是在每一轮如何改变训练数据的权重分布;

二是如何将弱分类器组合成为一个强分类器。

AdaBoost

AdaBoost,是英文”Adaptive Boosting”(自适应增强)的缩写

对于上述两问题,AdaBoost算法的做法是:

1、提高那些被前一轮弱分类器错误分类样本的权重,而降低那些被正确分类样本的权值。

2、采用加权多数表决的方法。具体的,加大分类误差率小的弱分类器的权值,使其在表决中起较大的作用,减小分类误差大的弱分类器的权值,使其在表决中起较小的作用。

另外,同时,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数。

具体来说,整个算法就三步:

初始化训练数据的权值分布:如果有N个样本,则每一个训练样本最开始时都被赋予相同的权重:1/N。

训练弱分类器:具体训练过程中,如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它的权重就被降低;相反,如果某个样本点没有被准确地分类,那么它的权重就得到提高。然后,权重更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。

将各个训练得到的弱分类器组合成强分类器:各个弱分类器的训练过
4000
程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用。换言之,误差率低的弱分类器在最终分类器中占的权重较大,否则较小。

Adaboost的算法流程

输入:训练数据集 T=(x1,y1),(x2,y2),...(xN,yN),

其中xi∈χ,χ⊆Rn,yi∈Y,Y=−1,+1;

步骤1——首先,初始化训练数据的权值分布。每一个训练样本最开始时都被赋予相同的权重:1/N。



步骤2——进行多轮迭代,用m = 1,2, …, M表示迭代的第多少轮

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



(b) 计算Gm(x)在训练集上的分类误差率:



注:这里的I(Gm(xi)≠yi))中,不等,函数值I为1,相等则函数值为0.

(c) 计算Gm(x)的系数,αm 表示Gm(x) 在最终分类器中的重要程度(目的:得到基本分类器在最终分类器中所占的权重):



由上述式子可知,em<=1/2时,αm>=0,且αm随着em的减小而增大,意味着分类误差率越小的基本分类器在最终分类器中的作用越大。

(d) 更新训练数据集的权值分布(目的:得到样本的新的权值分布),用于下一轮迭代



使得被基本分类器Gm(x)误分类样本的权值增大,而被正确分类样本的权值减小。就这样,通过这样的方式,AdaBoost方法能“聚焦于”那些较难分的样本上。

其中,Zm是规范化因子,使得Dm+1成为一个概率分布:



步骤3——组合各个弱分类器



从而得到最终分类器,如下:



[未完待续…]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息