【统计学习方法】第8章 提升方法

提升(boosting)方法是一种常用的统计学习方法,应用广泛且有效。在分类问题中,它通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类的性能。

1、提升方法AdaBoost算法

AdaBoost算法

  • 输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } T = \left\{ \left( x_{1}, y_{1} \right), \left( x_{2}, y_{2} \right), \cdots, \left( x_{N}, y_{N} \right) \right\} T={(x1,y1),(x2,y2),,(xN,yN)},其中 x i ∈ X ⊆ R n , y i ∈ Y = { + 1 , − 1 } , i = 1 , 2 , ⋯   , N x_{i} \in \mathcal{X} \subseteq R^{n}, y_{i} \in \mathcal{Y} = \left\{ +1, -1 \right\}, i = 1, 2, \cdots, N xiXRn,yiY={+1,1},i=1,2,,N;弱学习算法
  • 输出:分类器 G ( x ) G\left(x\right) G(x)
  1. 初始化训练数据的权值分布 D 1 = ( w 11 , w 12 , ⋯   , w 1 N ) , w 1 i = 1 N , i = 1 , 2 , ⋯   , N \begin{aligned} & D_{1}=\left(w_{11},w_{12},\cdots,w_{1N}\right), \quad w_{1i} = \dfrac{1}{N}, \quad i=1,2,\cdots,N\end{aligned} D1=(w11,w12,,w1N),w1i=N1,i=1,2,,N

  2. m = 1 , 2 , ⋯   , M m=1,2,\cdots,M m=1,2,,M
    2.1使用具有权值分布 D m D_{m} Dm的训练数据集学习,得到基本分类器 G m ( x ) : X → { − 1 , + 1 } \begin{aligned} \\ & G_{m}\left(x\right): \mathcal{X} \to \left\{ -1, +1\right\} \end{aligned} Gm(x):X{1,+1}
    2.2 计算 G m ( x ) G_{m}\left(x\right) Gm(x)在训练数据集上的分类误差率
    e m = P ( G m ( x i ) ≠ y i ) = ∑ i = 1 N w m i I ( G m ( x i ) ≠ y i ) \begin{aligned} \\& e_{m} = P\left(G_{m}\left(x_{i}\right) \neq y_{i}\right) \\ & = \sum_{i=1}^{N} w_{mi} I \left(G_{m}\left(x_{i}\right) \neq y_{i} \right) \end{aligned} em=P(Gm(xi)=yi)=i=1NwmiI(Gm(xi)=yi)
    2.3 计算 G m ( x ) G_{m} \left(x\right) Gm(x)的系数 α m = 1 2 log ⁡ 1 − e m e m \begin{aligned} \\ & \alpha_{m} = \dfrac{1}{2} \log \dfrac{1-e_{m}}{e_{m}} \end{aligned} αm=21logem1em2.4 更新训练数据集的权值分布 D m + 1 = ( w m + 1 , 1 , ⋯   , w m + 1 , i , ⋯   , w m + 1 , N ) w m + 1 , i = w m i Z m exp ⁡ ( − α m y i G m ( x i ) ) , = {   w m i Z m exp ⁡ ( − α m ) , G m ( x i ) = y i w m i Z m exp ⁡ ( α m ) , G m ( x i ) ≠ y i i = 1 , 2 , ⋯   , N \begin{aligned} \\ & D_{m+1}=\left(w_{m+1,1},\cdots,w_{m+1,i},\cdots,w_{m+1,N}\right) \\ & w_{m+1,i} = \dfrac{w_{mi}}{Z_{m}} \exp \left(- \alpha_{m} y_{i} G_{m}\left(x_{i}\right)\right), \\ & \quad \quad = \left\{ \begin{aligned} \ & \dfrac{w_{mi}}{Z_{m}} \exp \left(- \alpha_{m} \right), G_{m}\left(x_{i}\right) = y_{i} \\ & \dfrac{w_{mi}}{Z_{m}} \exp \left( \alpha_{m} \right), G_{m}\left(x_{i}\right) \neq y_{i} \end{aligned} \right. \quad i=1,2,\cdots,N \end{aligned} Dm+1=(wm+1,1,,wm+1,i,,wm+1,N)wm+1,i=Zmwmiexp(αmyiGm(xi)),= Zmwmiexp(αm),Gm(xi)=yiZmwmiexp(αm),Gm(xi)=yii=1,2,,N其中, Z m Z_{m} Zm是规范化因子 Z m = ∑ i = 1 N w m i exp ⁡ ( − α m y i , G m ( x i ) ) \begin{aligned} \\ & Z_{m}= \sum_{i=1}^{N} w_{mi} \exp \left(- \alpha_{m} y_{i}, G_{m}\left(x_{i}\right)\right)\end{aligned} Zmi=1Nwmiexp(αmyi,Gm(xi))

  3. 构建基本分类器的线性组合 f ( x ) = ∑ m = 1 M α m G m ( x ) \begin{aligned} \\ & f \left( x \right) = \sum_{m=1}^{M} \alpha_{m} G_{m} \left( x \right) \end{aligned} f(x)=m=1MαmGm(x)
    得到最终分类器 G ( x ) = s i g n ( f ( x ) ) = s i g n ( ∑ m = 1 M α m G m ( x ) ) \begin{aligned} \\ & G\left(x\right) = sign\left(f\left(x\right)\right)=sign\left(\sum_{m=1}^{M} \alpha_{m} G_{m} \left( x \right)\right) \end{aligned} G(x)=sign(f(x))=sign(m=1MαmGm(x))

前向分布算法

加法模型 f ( x ) = ∑ m = 1 M β m b ( x ; γ m ) \begin{aligned} \\ & f \left( x \right) = \sum_{m=1}^{M} \beta_{m} b\left(x;\gamma_{m}\right) \end{aligned} f(x)=m=1Mβmb(x;γm)其中, b ( x ; γ m ) b\left(x;\gamma_{m}\right) b(x;γm)为基函数, β m \beta_{m} βm为基函数系数, γ m \gamma_{m} γm为基函数参数。

在给定训练数据及损失函数 L ( y , f ( x ) ) L\left(y,f\left(x\right)\right) L(y,f(x))的条件下,学习加法模型 f ( x ) f\left(x\right) f(x)成为经验风险极小化问题 min ⁡ β m , γ m ∑ i = 1 N L ( y i , ∑ m = 1 M β m b ( x i ; γ m ) ) \begin{aligned} \\ & \min_{\beta_{m},\gamma_{m}} \sum_{i=1}^{N} L \left( y_{i}, \sum_{m=1}^{M} \beta_{m} b\left(x_{i};\gamma_{m}\right) \right) \end{aligned} βm,γmmini=1NL(yi,m=1Mβmb(xi;γm))

学习加法模型,从前向后每一步只学习一个基函数及其系数,即每步只优化 min ⁡ β , γ ∑ i = 1 N L ( y i , β b ( x i ; γ ) ) \begin{aligned} \\ & \min_{\beta,\gamma} \sum_{i=1}^{N} L \left( y_{i}, \beta b\left(x_{i};\gamma\right) \right) \end{aligned} β,γmini=1NL(yi,βb(xi;γ))

前向分布算法

  • 输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } T = \left\{ \left( x_{1}, y_{1} \right), \left( x_{2}, y_{2} \right), \cdots, \left( x_{N}, y_{N} \right) \right\} T={(x1,y1),(x2,y2),,(xN,yN)},损失函数 L ( y , f ( x ) ) L\left(y,f\left(x\right)\right) L(y,f(x));基函数集 { b ( x ; γ ) } \left\{b\left(x;\gamma\right)\right\} {b(x;γ)}
  • 输出:加法模型 f ( x ) f\left(x\right) f(x)
  1. 初始化 f 0 ( x ) = 0 f_{0}\left(x\right)=0 f0(x)=0
  2. m = 1 , 2 , ⋯   , M m=1,2,\cdots,M m=1,2,,M
    2.1 极小化损失函数 ( β m , γ m ) = arg ⁡ min ⁡ β , γ ∑ i = 1 N L ( y i , f m − 1 ( x i ) + β b ( x i ; γ ) ) \begin{aligned} \\ & \left(\beta_{m},\gamma_{m}\right) = \arg \min_{\beta,\gamma} \sum_{i=1}^{N} L \left( y_{i},f_{m-1} \left(x_{i}\right) + \beta b\left(x_{i};\gamma \right)\right) \end{aligned} (βm,γm)=argβ,γmini=1NL(yi,fm1(xi)+βb(xi;γ))得到参数 β m , γ m \beta_{m},\gamma_{m} βm,γm
    2.2 更新
    f m ( x ) = f m − 1 ( x ) + β m b ( x ; γ m ) \begin{aligned} \\& f_{m} \left(x\right) = f_{m-1} \left(x\right) + \beta_{m} b\left(x;\gamma_{m}\right) \end{aligned} fm(x)=fm1(x)+βmb(x;γm)
  3. 得到加法模型 f ( x ) = f M ( x ) = ∑ m = 1 M β m b ( x ; γ m ) \begin{aligned} \\ & f \left( x \right) = f_{M} \left( x \right) = \sum_{m=1}^{M} \beta_{m} b \left( x; \gamma_{m} \right) \end{aligned} f(x)=fM(x)=m=1Mβmb(x;γm)

提升树算法

训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } \begin{aligned} & T = \left\{ \left( x_{1}, y_{1} \right), \left( x_{2}, y_{2} \right), \cdots, \left( x_{N}, y_{N} \right) \right\} \end{aligned} T={(x1,y1),(x2,y2),,(xN,yN)}

其中, x i ∈ X ⊆ R n , y i ∈ Y ⊆ R , i = 1 , 2 , ⋯   , N x_{i} \in \mathcal{X} \subseteq R^{n}, y_{i} \in \mathcal{Y} \subseteq R, i = 1, 2, \cdots, N xiXRn,yiYR,i=1,2,,N

将输入空间 X \mathcal{X} X划分为 J J J个互不相交的区域 R 1 , R 2 , ⋯   , R J R_{1},R_{2},\cdots,R_{J} R1,R2,,RJ,且在每个区域上确定输出的常量 c j c_{j} cj,则回归树 T ( x ; Θ ) = ∑ j = 1 J c j I ( x ∈ R j ) \begin{aligned} \\& T \left(x; \varTheta\right) = \sum_{j=1}^{J} c_{j} I \left(x \in R_{j}\right) \end{aligned} T(x;Θ)=j=1JcjI(xRj)其中,参数 Θ = { ( R 1 , c 1 ) , ( R 2 , c 2 ) , ⋯   , ( R J , c J ) } \varTheta = \left\{ \left(R_{1}, c_{1}\right),\left(R_{2}, c_{2}\right),\cdots,\left(R_{J}, c_{J}\right) \right\} Θ={(R1,c1),(R2,c2),,(RJ,cJ)}表示树的区域划分和各区域上的常数。 J J J是回归树的负责度即叶结点个数。

回归提升树使用前向分布算法 f 0 = 0 f m ( x ) = f m − 1 ( x ) + T ( x ; Θ m ) f M = ∑ m = 1 M T ( x ; Θ m ) \begin{aligned} \\& f_{0}=0 \\ & f_{m}\left(x\right) = f_{m-1}\left(x\right) + T \left(x; \varTheta_{m}\right) \\ & f_{M} = \sum_{m=1}^{M} T \left(x; \varTheta_{m}\right) \end{aligned} f0=0fm(x)=fm1(x)+T(x;Θm)fM=m=1MT(x;Θm)

在前向分布算法的第 m m m步给定当前模型 f m − 1 ( x ) f_{m-1}\left(x\right) fm1(x),模型参数 Θ ^ m = arg ⁡ min ⁡ Θ m ∑ i = 1 N L ( y i , f m − 1 ( x i ) + T ( x i ; Θ m ) ) \begin{aligned} \\& \hat \varTheta_{m} = \arg \min_{\varTheta_{m}} \sum_{i=1}^{N} L \left( y_{i}, f_{m-1}\left(x_{i}\right) + T \left( x_{i}; \varTheta_{m} \right) \right) \end{aligned} Θ^m=argΘmmini=1NL(yi,fm1(xi)+T(xi;Θm))得到第 m m m棵树的参数 Θ ^ m \hat \varTheta_{m} Θ^m

当采用平方误差损失函数 L ( y , f m − 1 ( x ) + T ( x ; Θ m ) ) = [ y − f m − 1 ( x ) − T ( x ; Θ m ) ] 2 = [ r − T ( x ; Θ m ) ] 2 \begin{aligned} & L \left( y, f_{m-1}\left(x\right)+T\left(x;\varTheta_{m}\right)\right) \\ & = \left[y-f_{m-1}\left(x\right)-T\left(x;\varTheta_{m}\right)\right]^{2} \\ & = \left[r-T\left(x;\varTheta_{m}\right)\right]^{2}\end{aligned} L(y,fm1(x)+T(x;Θm))=[yfm1(x)T(x;Θm)]2=[rT(x;Θm)]2其中, r = y − f m − 1 ( x ) r=y-f_{m-1}\left(x\right) r=yfm1(x)是当前模型拟合数据的残差。

回归提升树算法

  • 输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } , x i ∈ X ⊆ R n , y i ∈ Y ⊆ R , i = 1 , 2 , ⋯   , N T = \left\{ \left( x_{1}, y_{1} \right), \left( x_{2}, y_{2} \right), \cdots, \left( x_{N}, y_{N} \right) \right\},x_{i} \in \mathcal{X} \subseteq R^{n}, y_{i} \in \mathcal{Y} \subseteq R, i = 1, 2, \cdots, N T={(x1,y1),(x2,y2),,(xN,yN)},xiXRn,yiYR,i=1,2,,N
  • 输出:回归提升树 f M ( x ) f_{M}\left(x\right) fM(x)
  1. 初始化 f 0 ( x ) = 0 f_{0}\left(x\right)=0 f0(x)=0
  2. m = 1 , 2 , ⋯   , M m=1,2,\cdots,M m=1,2,,M
    2.1 计算残差 r m i = y i − f m − 1 ( x i ) , i = 1 , 2 , ⋯   , N \begin{aligned} \\ & r_{mi}=y_{i}-f_{m-1}\left(x_{i}\right),\quad i=1,2,\cdots,N \end{aligned} rmi=yifm1(xi),i=1,2,,N
    2.2 拟合残差 r m i r_{mi} rmi学习一个回归树,得到 T ( x ; Θ m ) T\left(x;\varTheta_{m}\right) T(x;Θm)
    2.3 更新 f m = f m − 1 ( x ) + T ( x ; Θ m ) f_{m}=f_{m-1}\left(x\right)+T\left(x;\varTheta_{m}\right) fm=fm1(x)+T(x;Θm)
  3. 得到回归提升树 f M ( x ) = ∑ m = 1 M T ( x ; Θ m ) \begin{aligned} \\ & f_{M} \left( x \right) = \sum_{m=1}^{M} T \left(x;\varTheta_{m}\right) \end{aligned} fM(x)=m=1MT(x;Θm)

梯度提升算法

  • 输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } , x i ∈ X ⊆ R n , y i ∈ Y ⊆ R , i = 1 , 2 , ⋯   , N T = \left\{ \left( x_{1}, y_{1} \right), \left( x_{2}, y_{2} \right), \cdots, \left( x_{N}, y_{N} \right) \right\},x_{i} \in \mathcal{X} \subseteq R^{n}, y_{i} \in \mathcal{Y} \subseteq R, i = 1, 2, \cdots, N T={(x1,y1),(x2,y2),,(xN,yN)},xiXRn,yiYR,i=1,2,,N,损失函数 L ( y , f ( x ) ) L\left(y,f\left(x\right)\right) L(y,f(x))
  • 输出:回归树 f ^ ( x ) \hat f\left(x\right) f^(x)
  1. 初始化 f 0 ( x ) = arg ⁡ min ⁡ c ∑ i = 1 N L ( y i , c ) \begin{aligned} & f_{0}\left(x\right) = \arg \min_{c} \sum_{i=1}^{N} L \left(y_{i},c\right) \end{aligned} f0(x)=argcmini=1NL(yi,c)
  2. m = 1 , 2 , ⋯   , M m=1,2,\cdots,M m=1,2,,M
    2.1 对 i = 1 , 2 , ⋯   , N i=1,2,\cdots,N i=1,2,,N计算 r m i = − [ ∂ L ( y i , f ( x i ) ) ∂ f ( x i ) ] f ( x ) = f m − 1 ( x ) \begin{aligned} \\ & r_{mi}=- \left[ \dfrac {\partial L \left(y_{i},f\left(x_{i}\right) \right)}{\partial f \left(x_{i} \right)}\right]_{f\left(x\right)=f_{m-1}\left(x\right)} \end{aligned} rmi=[f(xi)L(yi,f(xi))]f(x)=fm1(x)
    2.2 对 r m i r_{mi} rmi拟合回归树,得到第 m m m棵树的叶结点区域 R m j , j = 1 , 2 , ⋯   , J R_{mj},j=1,2,\cdots,J Rmj,j=1,2,,J
    2.3 对 j = 1 , 2 , ⋯   , J j=1,2,\cdots,J j=1,2,,J计算 c m j = arg ⁡ min ⁡ c ∑ x i ∈ R m j L ( y i , f m − 1 ( x i ) + c ) \begin{aligned} \\ & c_{mj}=\arg \min_{c} \sum_{x_{i} \in R_{mj}} L \left( y_{i},f_{m-1} \left(x_{i}\right)+c \right) \end{aligned} cmj=argcminxiRmjL(yi,fm1(xi)+c)2.4 更新 f m ( x ) = f m − 1 ( x ) + ∑ j = 1 J c m j I ( x ∈ R m j ) f_{m}\left(x\right)= f_{m-1}\left(x\right) + \sum_{j=1}^{J} c_{mj} I \left(x \in R_{mj} \right) fm(x)=fm1(x)+j=1JcmjI(xRmj)
  3. 得到回归树 f ^ ( x ) = f M ( x ) = ∑ m = 1 M ∑ j = 1 J c m j I ( x ∈ R m j ) \begin{aligned} \\ & \hat f \left( x \right) = f_{M} \left( x \right) = \sum_{m=1}^{M} \sum_{j=1}^{J} c_{mj} I \left( x \in R_{mj} \right) \end{aligned} f^(x)=fM(x)=m=1Mj=1JcmjI(xRmj)

2、概要总结

1.提升方法是将弱学习算法提升为强学习算法的统计学习方法。在分类学习中,提升方法通过反复修改训练数据的权值分布,构建一系列基本分类器(弱分类器),并将这些基本分类器线性组合,构成一个强分类器。代表性的提升方法是AdaBoost算法。

AdaBoost模型是弱分类器的线性组合:

f ( x ) = ∑ m = 1 M α m G m ( x ) f(x)=\sum_{m=1}^{M} \alpha_{m} G_{m}(x) f(x)=m=1MαmGm(x)

2.AdaBoost算法的特点是通过迭代每次学习一个基本分类器。每次迭代中,提高那些被前一轮分类器错误分类数据的权值,而降低那些被正确分类的数据的权值。最后,AdaBoost将基本分类器的线性组合作为强分类器,其中给分类误差率小的基本分类器以大的权值,给分类误差率大的基本分类器以小的权值。

3.AdaBoost的训练误差分析表明,AdaBoost的每次迭代可以减少它在训练数据集上的分类误差率,这说明了它作为提升方法的有效性。

4.AdaBoost算法的一个解释是该算法实际是前向分步算法的一个实现。在这个方法里,模型是加法模型,损失函数是指数损失,算法是前向分步算法。 每一步中极小化损失函数

( β m , γ m ) = arg ⁡ min ⁡ β , γ ∑ i = 1 N L ( y i , f m − 1 ( x i ) + β b ( x i ; γ ) ) \left(\beta_{m}, \gamma_{m}\right)=\arg \min _{\beta, \gamma} \sum_{i=1}^{N} L\left(y_{i}, f_{m-1}\left(x_{i}\right)+\beta b\left(x_{i} ; \gamma\right)\right) (βm,γm)=argβ,γmini=1NL(yi,fm1(xi)+βb(xi;γ))

得到参数 β m , γ m \beta_{m}, \gamma_{m} βm,γm

5.提升树是以分类树或回归树为基本分类器的提升方法。提升树被认为是统计学习中最有效的方法之一。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值