【机器学习】集成学习(二)----AdaBoost算法

AdaBoost是Boosting这类算法中的著名代表,它有多种推导方式,比较容易理解的就是基学习器的线性组合来最小化指数损失函数。

【AdaBoost算法过程】

输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } ,其中 x i X R n ,标记 y i Y = { 1 , + 1 }
输出:最终分类器 G ( x )
(1)初始化原始训练数据集的权值分布 D 1
     D 1 = ( w 11 , w 12 , . . . , w 1 N ) w 1 i = 1 N

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

①使用具有权值分布 D m 的训练数据集学习,得到基分类器 G m ( x ) : X { 1 , + 1 }

②计算 G m ( x ) 在训练数据集上的分类误差率 e m
     e m = i = 1 N P ( G m ( x i ) y i ) = G m ( x i ) y i w m i i = 1 N w m i = i = 1 N w m i I ( G m ( x i ) y i )
w m i m i e m G m ( x )

1 i = 1 N w m i = 1 e m G m ( x i ) y i w m i

③计算 G m ( x ) 的系数 α m
     α m = 1 2 l n 1 e m e m
α m G m ( x ) e m 1 2
α m 0 α m e m

④更新训练数据集的权值分布 D m + 1
     D m + 1 = ( w m + 1 , 1 , w m + 1 , 2 , . . . , w m + 1 , N )
:
     w m + 1 , i =         { w m i Z m e α m , G m ( x i ) = y i w m i Z m e α m , G m ( x i ) y i
y i G m ( x i ) 1 + 1
G m ( x i ) = y i y i G m ( x i ) = 1 ; G m ( x i ) y i y i G m ( x i ) = 1
:
     w m + 1 , i = w m i Z m e α m y i G m ( x i )
Z m 使 D m + 1
     Z m = i = 1 N w m i e α m y i G m ( x i )

(3)对第(2)步中学习到的M个基分类器进行线性组合得到最终分类器
线性组合: f ( x ) = m = 1 M α m G m ( x )
最终分类器: G ( x ) = s i g n ( f ( x ) ) = s i g n ( m = 1 M α m G m ( x ) )

算法过程如下图:
这里写图片描述

【AdaBoost算法的训练误差分析】

AdaBoost算法最基本的性质就是在学习过程中不断减少训练误差,即减少训练数据集上的分类误差率。对于AdaBoost算法来说,其最终分类器的训练误差是有上界的。而对于下界,我们不需要知道。
其训练误差界为:
1 N i = 1 N I ( G ( x i ) y i ) 1 N i = 1 N e y i f ( x i ) = m = 1 M Z m
1 N i = 1 N I ( G ( x i ) y i ) N个样本中被误分类的样本个数 N

前半部分: 1 N i = 1 N I ( G ( x i ) y i ) 1 N i = 1 N e y i f ( x i )
G ( x i ) y i y i f ( x i ) < 0 , e y i f ( x i ) 1

后半部分: 1 N i = 1 N e y i f ( x i ) = m = 1 M Z m
已知 f ( x i ) = m = 1 M α m G m ( x i ) Z m w m + 1 , i = w m i e α m y i G m ( x i )
1 N i = 1 N e y i f ( x i ) = 1 N i = 1 N e m = 1 M α m y i G m ( x i ) = 1 N i = 1 N m = 1 M e α m y i G m ( x i )
= i = 1 N w 1 i m = 1 M e α m y i G m ( x i ) 1 N w 1 i w 1 i
= i = 1 N w 1 i e α 1 y i G 1 ( x i ) m = 2 M e α m y i G m ( x i )
( i = 1 N w 1 i e α 1 y i G 1 ( x i ) Z 1 i = 1 N w 2 i )
= Z 1 i = 1 N w 2 i m = 2 M e α m y i G m ( x i ) = Z 1 i = 1 N w 2 i e α 2 y i G 2 ( x i ) m = 3 M e α m y i G m ( x i )
= Z 1 Z 2 i = 1 N w 3 i m = 3 M e α m y i G m ( x i )
= . . . = Z 1 Z 2 . . . Z M 1 i = 1 N w M i e α M y i G M ( x i ) = m = 1 M Z m

我们根据这样的结论可以在每一轮选取适当的 G m 使得 Z m 最小,从而使训练误差下降最快。 Z m 使 Z m

对于二类分类的AdaBoost的训练误差界为:
由于 Z m = i = 1 N w m i e α m y i G m ( x i ) = y i = G m ( x i ) w m i e α m + y i G m ( x i ) w m i e α m
y i = G m ( x i ) w m i = 1 e m
y i G m ( x i ) w m i = e m
e α m = e 1 2 l n 1 e m e m = e m 1 e m
e α m = e 1 2 l n 1 e m e m = 1 e m e m
所以 Z m = 2 e m ( 1 e m ) ,令 γ m = 1 2 e m ,则 Z m = 1 4 γ m 2
m = 1 M Z m = m = 1 M 2 e m ( 1 e m ) = m = 1 M 1 4 γ m 2 e 2 m = 1 M γ m 2
e 2 m = 1 M γ m 2 e x 1 x x = 0 :
e x x = 0
     e x = 1 + x + 1 2 x 2 + o ( x 2 )
     e 2 γ m 2 = 1 2 γ m 2 + 1 2 ( 2 γ m 2 ) 2 = 1 2 γ m 2 + 2 γ m 4
1 x x = 0
     1 x = 1 1 2 x 1 8 x 2 + o ( x 2 )
     1 4 γ m 2 = 1 1 2 4 γ m 2 1 8 ( 4 γ m 2 ) 2 = 1 2 γ m 2 2 γ m 4  
1 4 γ m 2 e 2 γ m 2   
γ > 0 m γ m γ 1 N i = 1 N I ( G ( x i ) y i ) e 2 M γ 2
A d a B o o s t
     
下一篇会讨论前向分步算法和提升树,其实感觉前向分步算法加基函数线性组合就是一个框架,而AdaBoost算法和提升树都是利用这个框架来实现的。它们的不同点大多在于损失函数,而对于难以优化的损失函数我们会用梯度提升(最速下降的近似方法)来求解,这也就是梯度提升树的由来。

参考文献:《统计学习方法》

猜你喜欢

转载自blog.csdn.net/u013597931/article/details/79857454