此博客介绍了关于集成学习的相关知识,在学习 AdaBoost A d a B o o s t 算法前,可以先了解下集成学习。
提升(Boosting)方法是一种常用的统计学习方法,应用广泛且有效。在分类问题中,它通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类的性能。
提升方法基于这样一种思想:
对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的结论,要比其中任何一个专家单独的判断好。实际上,就是“三个臭皮匠顶个诸葛亮”的道理。
对于提升方法来说,有两个问题需要回答:
AdaBoost A d a B o o s t 的做法是,提高那些被前一轮弱分类器错误分类样本的权值,而降低那些被正确分类样本的权值。这样一来,在那些没有得到正确分类的数据,由于其权值的加大而受到后一轮的弱分类器的更大关注,于是,分类问题被一系列的弱分类器“分而治之”。
至于第二个问题, AdaBoost A d a B o o s t 采取加权多数表决的方法。具体地,加大分类误差率小的弱分类器的权值,使其在表决中起较大的作用,减小分类误差率大的弱分类器的权值,使其在表决中起较小的作用。
输入:训练数据集 T={(x1,y1),(x2,y2),...(xN,yN)} T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . ( x N , y N ) } ,其中实例 xi∈X⊆Rn x i ∈ X ⊆ R n ,标记为 yi∈Y={−1,+1} y i ∈ Y = { − 1 , + 1 } ;弱学习算法;
输出:最终分类器 G(x) G ( x ) .
(1)初始化训练数据的权重分布
假设训练数据集一开始具有均匀的权值分布,即每个训练样本在基本分类器的学习中作用相同
(2)对 m=1,2,3,...,M m = 1 , 2 , 3 , . . . , M
AdaBoost A d a B o o s t 反复学习基本分类器,迭代执行以下步骤
使用当前分布 Dm D m 加权的训练数据集,学习基本分类器
(b)计算 Gm(x) G m ( x ) 在训练数据集上的分类误差率
(c)计算 Gm(x) G m ( x ) 的系数
αm α m 表示 Gm(x) G m ( x ) 在最终分类器中的重要性
当 em⩽12 e m ⩽ 1 2 时, αm⩾0 α m ⩾ 0 ,并且 αm α m 随着 em e m 的减小而增大,所以分类误差率减小的基本分类器在最终分类器中的作用越大。
上面两个式子可以写成:
wm+1,i=⎧⎩⎨⎪⎪wmiZme−αm,Gm(x)=yiwmiZmeαm, Gm(x)≠yi w m + 1 , i = { w m i Z m e − α m , G m ( x ) = y i w m i Z m e α m , G m ( x ) ≠ y i
由此可见,被正确分类的样本的权值减小了,被错误分类的样本权值增大了
(3)构建基本分类器的线性组合
f(x)=∑m+1NαmGm(x) f ( x ) = ∑ m + 1 N α m G m ( x )
得到最终分类器
G(x)=sign(f(x))=sign(∑m+1NαmGm(x)) G ( x ) = s i g n ( f ( x ) ) = s i g n ( ∑ m + 1 N α m G m ( x ) )线性组合 f(x) f ( x ) 实现 M M 个基本分类器的加权表决,系数 αm α m 表示了基本分类器 Gm(x) G m ( x ) 的重要性。
训练数据集如下表:
(1)初始化数据权值分布
(a)在权值分布为 D1 D 1 的训练数据集上,阀值 v v 取2.5时分类误差率最低,故基本分类器为:
(b) G1(x) G 1 ( x ) 在训练数据集上的误差率
(c)计算 G1(x) G 1 ( x ) 的系数:
(d)更新训练数据集的权值分布
对 m=2 m = 2 :
(b) G2(x) G 2 ( x ) 在训练数据集上的误差率(将序号为4,5,6对应的w相加):
(c)计算 G2(x) G 2 ( x ) 的系数: α2=0.6496 α 2 = 0.6496
(d)更新训练数据集的权值分布
对 m=3 m = 3 :
(a)在权值分布为 D3 D 3 的训练数据集上,阀值 v v 取8.5时分类误差率最低,故基本分类器为:
(b) G3(x) G 3 ( x ) 在训练数据集上的误差率: e3=0.1820 e 3 = 0.1820
(c)计算 G3(x) G 3 ( x ) 的系数: α3=0.7514 α 3 = 0.7514
(d)更新训练数据集的权值分布
分类器 sing[f3(x)] s i n g [ f 3 ( x ) ] 在训练数据集上有0个误分类点。
最终分类器为:
至此,我们介绍了 AdaBoost A d a B o o s t 算法,并通过具体的数据了解了 AdaBoost A d a B o o s t 算法的执行过程
在以上,我们可知道:
Dm+1=(wm+1,1,...,wm+1,i,...,wm+1,N)wm+1,i=wmiZmexp(−αmyiGm(xi)),i=1,2,...,N D m + 1 = ( w m + 1 , 1 , . . . , w m + 1 , i , . . . , w m + 1 , N ) w m + 1 , i = w m i Z m e x p ( − α m y i G m ( x i ) ) , i = 1 , 2 , . . . , N
这是样本分布的更新公式
αm=12log1−emem α m = 1 2 l o g 1 − e m e m
这是分类器权重的更新公式
在后续更新的博客中,我们会用到这些公式,通过python3来实现 AdaBoost A d a B o o s t 算法。
参考书籍: