统计学习方法-提升方法-读书笔记

1、前言

提升(boosting)是一种常用的统计学习方法,是集成学习的一种。它通过改变训练样本的权重(概率分布),学习多个弱分类器(基本分类器),并将这些分类器线性组合来构成一个强分类器提高分类性能。

2、提升方法AdaBoost算法

强可学习:在概率近似正确(PCA)学习的框架中,一个概念,如果存在一个多项式的学习算法能够学习他,并且正确率很高,那么就称这个概念是强可学习的。
弱可学习:一个概念,如果存在一个多项式的学习算法能够学习它,学习的正确率仅比随机猜测略好,那么就成这个概念是弱可学习的。
一个概念是强可学习的充分必要条件是这个概念是弱可学习的。
提升方法就是从弱学习算法出发,反复学习,得到一系列弱分类器,然后组合这些弱分类器,构成一个强分类器。

2.1AdaBoost算法

AdaBoost提高那些被前一轮弱分类器错误分类样本的权值,降低那些被正确分类样本的权值,然后采用甲醛多数表决的方法组合弱分类器。
(1)初始化训练数据的权值分布,均匀分布D1
(2)使用具有权值分布Dm的训练数据集学习,得到基本分类器Gm(x)
(3)计算Gm在训练数据集上的分类误差率和系数
e m = ∑ i = 1 N P ( G m ( x i ) ! = y i ) = ∑ i = 1 N w m i I ( G m ( x i ) ! = y i ) e_m=\sum_{i=1}^N{P(G_m(x_i)!=y_i)}=\sum_{i=1}^Nw_{mi}I(G_m(x_i)!= y_i) em=i=1NP(Gm(xi)!=yi)=i=1NwmiI(Gm(xi)!=yi)
α m = 1 2 log ⁡ 1 − e m e m {\alpha}_m=\frac{1}{2}\log{\frac{1-e_m}{e_m}} αm=21logem1em
(4)更新训练数据集的权值
Dm+1=(wm+1,)
w m + 1 , i = w m i Z m e x p ( − α m y i G m ( x i ) ) w_{m+1,i}=\frac{w_{mi}}{Z_m}exp(-{\alpha}_my_iG_m(x_i)) wm+1,i=Zmwmiexp(αmyiGm(xi))
由此可知,被基本分类器误分类样本的权值得以扩大,被正确分类样本的权值得以缩小。
其中 Z m Z_m Zm是规范化因子
Z m = ∑ i = 1 N w m i e x p ( − α m y i G m ( x i ) ) Z_m=\sum_{i=1}^N{w_{mi}exp(-{\alpha}_my_iG_m(x_i))} Zm=i=1Nwmiexp(αmyiGm(xi))
它使Dm+1成为一个概率分布。
重复上述操作M次后得到M个弱分类器,构建线性组合得到最终分类器
G ( x ) = s i g n ( f ( x ) ) = s i g n ( ∑ m = 1 M α m G m ( x ) ) G(x)=sign(f(x))=sign(\sum_{m=1}^M{{\alpha}_mG_m(x)}) G(x)=sign(f(x))=sign(m=1MαmGm(x))

2.2 前向分步算法

AdaBoost算法也可以理解为模型为加法模型,损失函数为指数函数,学习算法为前向分步算法的二类分类算法。
考虑加法模型 f ( x ) = ∑ m = 1 M β m b ( x ; γ m ) f(x)=\sum_{m=1}^M{{\beta}_mb(x;{\gamma}_m)} f(x)=m=1Mβmb(x;γm),其中 b ( x ; γ m ) b(x;{\gamma}_m) b(x;γm)为基函数, β \beta β为基函数的系数,在给定损失函数L(y,f(x))的条件下,学习加法模型就是求解损失函数极小化的问题
m i n : ∑ i = 1 N L ( y i , ∑ m = 1 M β m b ( x ; γ m ) ) min:\sum_{i=1}^N{L(y_i,\sum_{m=1}^M{{\beta}_mb(x;{\gamma}_m)})} min:i=1NL(yi,m=1Mβmb(x;γm))
前向分步算法求解的想法是,从前往后,每一步只学习一个基函数及其系数,优化得到参数 β γ \beta \gamma βγ,更新f(x),逐步逼近优化目标,最终得到加法模型。

3、提升树

提升树模型是加法模型,算法为前向分步算法,基函数为决策树。分类问题决策树是二叉分类数,回归问题决策树是二叉回归树。
第m步的模型是 f m ( x ) = f m − 1 ( x ) + T ( x ; θ m ) f_m(x)=f_{m-1}(x)+T(x;{\theta}_m) fm(x)=fm1(x)+T(x;θm),通过经验风险最小化确定下一棵决策树的参数
θ ^ m = a r g m i n ∑ i = 1 N L ( y i , f m − 1 ( x i ) + T ( x i ; θ m ) ) \hat{\theta}_m=arg min\sum_{i=1}^N{L(y_i,f_{m-1}(x_i)+T(x_i;{\theta}_m))} θ^m=argmini=1NL(yi,fm1(xi)+T(xi;θm))
不同问题的提升树学习算法主要区别在于使用的损失函数不同,包括用平方误差损失函数的回归问题,用指数损失函数的分类问题。

3.1二分类问题

只需将AdaBoost算法中的基本分类器限制为二类分类数即可。

3.2回归问题

如果将输入空间划分为J个互不相交的区域,并且在每个区域上确定输出的常量Cj,树可以表示为 T ( x ; θ ) = ∑ j = 1 J c j I T(x;\theta)=\sum_{j=1}^J{c_jI} T(x;θ)=j=1JcjI
回归问题提升树使用以下前向分步算法
f 0 ( x ) = 0 f_0(x)=0 f0(x)=0
f m ( x ) = f m − 1 ( x ) + T ( x ; θ m ) f_m(x)=f_{m-1}(x)+T(x;{\theta}_m) fm(x)=fm1(x)+T(x;θm)
f M ( x ) = ∑ m = 1 M T ( x ; θ m ) f_M(x)=\sum_{m=1}^M{T(x;{\theta}_m)} fM(x)=m=1MT(x;θm)
在前向分布算法的第m步,给定当前模型fm-1(x),需求解
θ ^ m = a r g m i n ∑ i = 1 N L ( y i , f m − 1 ( x i ) + T ( x i ; θ m ) ) \hat{\theta}_m=arg min\sum_{i=1}^N{L(y_i,f_{m-1}(x_i)+T(x_i;{\theta}_m))} θ^m=argmini=1NL(yi,fm1(xi)+T(xi;θm)),即第m棵树的参数
当采用平方误差损失函数时
L ( y , f ( x ) ) = ( y − f ( x ) ) 2 = [ r − T ( x ; θ m ) ] 2 L(y,f(x))=(y-f(x))^2=[r-T(x;{\theta}_m)]^2 L(y,f(x))=(yf(x))2=[rT(x;θm)]2
r = y − f m − 1 ( x ) r=y-f_{m-1}(x) r=yfm1(x)
其中r是当前模型拟合数据的残差,每一步都只需要拟合残差学习一个回归树即可

3.3梯度提升(GBDT)

对于平方损失和指数损失函数来说,每一步优化很简单,但是对于一般损失函数而言,每一步优化并不那么容易,梯度提升算法利用最速下降法的近似方法,关键是利用损失函数的负梯度在当前模型的值 r m i = − [ ∂ L ( y , f ( x i ) ∂ f ( x i ) ] f ( x ) = f m − 1 ( x ) r_{mi}=-[\frac{\partial L(y,f(x_i)}{\partial f(x_i)}]_{f(x)=f_{m-1}(x)} rmi=[f(xi)L(y,f(xi)]f(x)=fm1(x)作为回归问题提升树算法中的残差的近似值,拟合一个回归树。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值