第8章 AdaBoost算法

Bagging和Boosting的区别

1)样本选择上:

Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的.

Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化.而权值是根据上一轮的分类结果进行调整.

2)样例权重:

Bagging:使用均匀取样,每个样例的权重相等

Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大.

3)预测函数:

Bagging:所有预测函数的权重相等.

Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重.

4)并行计算:

Bagging:各个预测函数可以并行生成

Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果

AdaBoost算法

算法1(AdaBoost)
输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } ,其中 x i χ R n y i y = { 1 , + 1 } ;弱学习算法;
输出:最终分类器 G ( x )
(1)初始化训练数据的权值分布

D 1 = ( w 11 , . . . , w 1 i , . . . , w 1 N ) w 1 i = 1 N , I = 1 , 2 , . . . , N

(2)对 m = 1 , 2 , . . . , M
(a)使用具有权值分布 D m 的训练数据集学习,得到基本分类器
G m ( x ) : χ { 1 , + 1 }

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

(c)计算 G m ( x ) 的系数
(2) α m = 1 2 log 1 e m e m
这里的对数是自然对数。
(d)更新训练数据集的权值分布
(3) D m + 1 = ( w m + 1 , 1 , . . . , w m + 1 , i , w m + 1 , N )
(4) w m + 1 , i = w m , i Z m exp ( α m y i G m ( x i ) )
这里, Z m 是规划化因子
(5) Z m = i = 1 N w m , 1 exp ( α m y i G m ( x i ) )
它使 D m + 1 成为一个概率分布。
(3)构建基本分类器的线性组合
(6) f ( x ) = m = 1 M α m G m ( x )
得到最终分类器
(7) G ( x ) = s i g n ( f ( x ) ) = s i g n ( m = 1 M α m G m ( x ) )

定理8.1 (AdaBoost的训练误差界) AdaBoost算法最终分类器的训练误差界为
(9) 1 N i = 1 N I ( G ( x i ) y i ) 1 N i exp ( y i f ( x i ) ) = m Z m
这里, G ( x ) , f ( x ) Z m 分别由式(7),(6),(5)给出。

前向分布算法

算法2(前向分布算法)
输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } ;损失函数 L ( y , f ( x ) ) ;基函数集 b ( x ; γ )
输出:加法模型 f ( x )
(1)初始化 f 0 ( x ) = 0
(2)对 m = 1 , 2 , . . . , M
(a)极小化损失函数

(10) ( β m , γ m ) = a r g min β , γ i = 1 N L ( y i , f m 1 ( x i ) + β b ( x i ; γ ) )
得到参数 β m , γ m
(b)更新
(11) f m ( x ) = f m 1 ( x ) + β m b ( x ; γ m )

(3)得到加法模型
(12) f ( x ) = f M ( x ) = m = 1 M β m b ( x ; γ m )

这样,前向分步算法将同时求解从 m = 1 M 所有参数 β m , γ m 的优化问题简化为逐次求解各个 β m , γ m 的优化问题.

提升树

提升树是以分类树或回归树为基本分类器的提升方法。

提升树模型

提升方法实际采用加法模型(即基函数的线性组合)与前向分步算法。以决策树为基函数的提升方法称为提升树(boosting tree)。对分类问题决策树是二叉分类树,对回归问题决策树是二叉回归树。提升树模型可以表示为决策树的加法模型:

(13) f M ( x ) = m = 1 M T ( x ; Θ m )
其中, T ( x ; Θ m ) 表示决策树; Θ m 为决策树的参数; M 为树的个数。
算法3 (回归问题的提升树算法)
输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } ,其中 x i χ R n y i y R
输出:提升树 f M ( x )
(1)初始化 f 0 ( x ) = 0
(2)对 m = 1 , 2 , . . . , M
(a)计算残差
r m i = y i f m 1 ( x i ) , i = 1 , 2 , . . . , N

(b)拟合残差
r m i
学习一个回归树,得到 T ( x , Θ m )
(c)更新 f m ( x ) = f m 1 ( x ) + T ( x ; Θ m )
(3)得到回归问题提升树
f M ( x ) = m = 1 M T ( x ; Θ m )

梯度提升

提升树利用加法模型与前向分步算法实现学习的优化过程。当损失函数是平方损失和指数损失函数时,每一步优化是很简单的,但对于一般损失函数而言,可以利用梯度提升算法(gradient boosting)。这是利用最速下降法的近似方法,其关键是利用损失函数的负梯度在当前模型的值

[ L ( y , f ( x i ) ) f ( x i ) ] f ( x ) = f m 1 ( x )
作为回归问题提升树算法中的残差的近似值,拟合一个回归树。
算法4(梯度提升算法)
输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } ,其中 x i χ R n y i y R ;损失函数L(y,f(x));
输出:回归树 f ^ ( x ) .
(1) 初始化
f 0 ( x ) = a r g min c i = 1 N L ( y i , c )

(2)对 m = 1 , 2 , . . . , M
(a)对 i = 1 , 2 , . . . , N ,计算
r m i = [ L ( y , f ( x i ) ) f ( x i ) ] f ( x ) = f m 1 ( x )

(b)对 r m i 拟合一个回归树,得到第 m 颗树的叶结点区域 R m j , j = 1 , 2 , . . . , J
(c)对 j = 1 , 2 , . . . , J ,计算
c m j = a r g min c x i R m j L ( y i , f m 1 ( x i ) + c )

(d)更新 f m ( x ) = f m 1 ( x ) + j = 1 J c m j I ( X R m j )
(3)得到回归树
f ^ ( x ) = f M ( x ) = m = 1 M j = 1 J c m j I ( X R m j )

算法第1步初始化,估计使损失函数极小化的常数值,它是只有一个根结点的树。第2(a)步计算损失函数的负梯度在当前模型的值,将它作为残差的估计。对于平方损失函数,它就是通常所说的残差;对于一般损失函数,它就是残差的近似值。第2(b)估计回归树叶结点区域,以拟合残差的近似值。第2(c)步更新回归树。第3步得到输出的最终模型 f ^ ( x )

猜你喜欢

转载自blog.csdn.net/winds_lyh/article/details/80668166
今日推荐