统计学习方法——提升方法(二)

提升方法(二)

AdaBoost算法的训练误差分析

  • AdaBoost的训练误差界
    AdaBoost算法最终分类器的训练误差界为:
    1 N ∑ i = 1 N I ( G ( x i ) ≠ y i ) ≤ 1 N ∑ i exp ⁡ ( − y i f ( x i ) ) = ∏ m Z m \frac{1}{N}\sum\limits_{i = 1}^N {I\left( {G\left( {{x_i}} \right) \ne {y_i}} \right)} \le \frac{1}{N}\sum\limits_i {\exp \left( { - {y_i}f\left( {{x_i}} \right)} \right) = \prod\limits_m {{Z_m}} } N1i=1NI(G(xi)̸=yi)N1iexp(yif(xi))=mZm
    其中 G ( x i ) G\left( {{x_i}} \right) G(xi) f ( x ) f\left( {{x}} \right) f(x) Z m Z_m Zm的计算方法前面已经给出。
  • 二分类问题AdaBoost的训练误差界
    ∏ m = 1 M Z m = ∏ m = 1 M [ 2 e m ( 1 − e m ) ] = ∏ m = 1 M ( 1 − 4 γ m 2 ) ≤ exp ⁡ ( − 2 ∑ m = 1 M γ m 2 ) \prod\limits_{m = 1}^M {{Z_m}} = \prod\limits_{m = 1}^M {\left[ {2\sqrt {{e_m}\left( {1 - {e_m}} \right)} } \right]} = \prod\limits_{m = 1}^M {\sqrt {\left( {1 - 4\gamma _m^2} \right)} } \le \exp \left( { - 2\sum\limits_{m = 1}^M {\gamma _m^2} } \right) m=1MZm=m=1M[2em(1em) ]=m=1M(14γm2) exp(2m=1Mγm2)
    这里 γ m = 1 2 − e m {\gamma _m} = \frac{1}{2} - {e_m} γm=21em
    • 推论
      如果存在 γ > 0 \gamma > 0 γ>0,对所有 m m m γ m ≥ γ {\gamma _m} \ge \gamma γmγ,则
      1 N ∑ i = 1 N I ( G ( x i ) ≠ y i ) ≤ exp ⁡ ( − 2 M γ 2 ) \frac{1}{N}\sum\limits_{i = 1}^N {I\left( {G\left( {{x_i}} \right) \ne {y_i}} \right)} \le \exp \left( { - 2M{\gamma ^2}} \right) N1i=1NI(G(xi)̸=yi)exp(2Mγ2)

AdaBoost算法的解释

AdaBoost的另一种解释:AdaBoost算法是模型为加法模型、损失函数为指数函数、学习算法为前向分步算法时的二分类学习方法。

前向分步算法

考虑加法模型:
f ( x ) = ∑ m = 1 M β m b ( x ; γ m ) f\left( x \right) = \sum\limits_{m = 1}^M {{\beta _m}b\left( {x;{\gamma _m}} \right)} f(x)=m=1Mβmb(x;γm)
其中 b ( x ; γ m ) {b\left( {x;{\gamma _m}} \right)} b(x;γm)为基函数, γ m {{\gamma _m}} γm为基函数的参数, β m {{\beta _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 ) ) \mathop {\min }\limits_{{\beta _m},{\gamma _m}} \sum\limits_{i = 1}^N {L\left( {{y_i},\sum\limits_{m = 1}^M {{\beta _m}b\left( {{x_i};{\gamma _m}} \right)} } \right)} βm,γmmini=1NL(yi,m=1Mβmb(xi;γm))

  • 前向分布算法的求解思想
    因为学习的是加法模型,如果能够从前向后每一步只学习一个基函数及其系数,逐步逼近优化目标函数式,那么就可以简化优化的复杂度。
  • 前向分步算法
    • 输入:训练数据集 T T T,损失函数 L ( y , f ( x ) ) L\left( {y,f\left( x \right)} \right) L(y,f(x)),基函数集 { b ( x ; γ ) } \{b\left( {x;{\gamma}} \right)\} {b(x;γ)}
    • 输出:加法模型 f ( x ) f\left( x \right) f(x)
    • 流程:
      • 初始化 f 0 ( x ) = 0 f_0\left( x \right)=0 f0(x)=0
      • m = 1 , 2 , ⋯   , M m=1,2,\cdots,M m=1,2,,M
        • 极小化损失函数
          ( β 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 \mathop {\min }\limits_{\beta ,\gamma } \sum\limits_{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
        • 更新
          f m ( x ) = f m − 1 ( x ) + β m b ( x ; γ m ) {f_m}\left( x \right) = {f_{m - 1}}\left( x \right) + {\beta _m}b\left( {x;{\gamma _m}} \right) fm(x)=fm1(x)+βmb(x;γm)
      • 得到加法模型
        f ( x ) = f M ( x ) = ∑ m = 1 M β m b ( x ; γ m ) f\left( x \right) = {f_M}\left( x \right) = \sum\limits_{m = 1}^M {{\beta _m}b\left( {x;{\gamma _m}} \right)} f(x)=fM(x)=m=1Mβmb(x;γm)
前向分步算法与AdaBoost

AdaBoost算法是前向分步加法算法的特例,这时,模型是由基本分类器组成的加法模型,损失函数是指数函数。

提升树

提升树模型

以决策树为基函数的提升方法称为提升树,提升树模型可以表示为决策树的加法模型:
f M ( x ) = ∑ m = 1 M T ( x ; Θ m ) {f_M}\left( x \right) = \sum\limits_{m = 1}^M {T\left( {x;{\Theta _m}} \right)} fM(x)=m=1MT(x;Θm)
其中 T ( x ; Θ m ) {T\left( {x;{\Theta _m}} \right)} T(x;Θm)表示决策树、 Θ m {{\Theta _m}} Θm为决策树的参数、 M M M为树的个数。

提升树算法
  • 输入:训练数据集 T T T
  • 输出:提升树 f M ( x ) f_M\left(x\right) fM(x)
  • 流程
    • 初始化 f 0 ( x ) = 0 f_0\left(x\right)=0 f0(x)=0
    • m = 1 , 2 , ⋯   , M m=1,2,\cdots,M m=1,2,,M
      • 计算残差:
        r m i = y i − f m − 1 ( x i ) , i = 1 , 2 , ⋯   , N {r_{mi}} = {y_i} - {f_{m - 1}}\left( {{x_i}} \right),i = 1,2, \cdots ,N rmi=yifm1(xi),i=1,2,,N
      • 拟合残差 r m i {r_{mi}} rmi学习一个回归树,得到 T ( x ; Θ m ) {T\left( {x;{\Theta _m}} \right)} T(x;Θm)
      • 更新 f m ( x ) = f m − 1 ( x ) + T ( x ; Θ m ) {f_m}\left( x \right) = {f_{m - 1}}\left( x \right) + T\left( {x;{\Theta _m}} \right) fm(x)=fm1(x)+T(x;Θm)
    • 得到回归问题提升树
      f M ( x ) = ∑ m = 1 M T ( x ; Θ m ) {f_M}\left( x \right) = \sum\limits_{m = 1}^M {T\left( {x;{\Theta _m}} \right)} fM(x)=m=1MT(x;Θm)
梯度提升算法

提升树利用加法模型与前向分步算法实现学习的优化过程,当损失函数为平方损失或指数损失时每一步优化很简单,但对一般损失函数而言,往往每一步都不容易,因此提出了梯度提升算法。

  • 输入:数据集 T T T和损失函数 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)
  • 流程
    • 初始化:
      f 0 ( x ) = arg ⁡ min ⁡ c ∑ i = 1 N L ( y i , c ) {f_0}\left( x \right) = \arg \mathop {\min }\limits_c \sum\limits_{i = 1}^N {L\left( {{y_i},c} \right)} f0(x)=argcmini=1NL(yi,c)
    • m = 1 , 2 , ⋯   , M m=1,2,\cdots,M m=1,2,,M
      • 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 ) {r_{mi}} = - {\left[ {\frac{{\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)}} rmi=[f(xi)L(yi,f(xi))]f(x)=fm1(x)
      • 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
      • 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 ) {c_{mj}} = \arg \mathop {\min }\limits_c \sum\limits_{{x_i} \in {R_{mj}}} {L\left( {{y_i},{f_{m - 1}}\left( {{x_i}} \right) + c} \right)} cmj=argcminxiRmjL(yi,fm1(xi)+c)
      • 更新 f m ( x ) = f m − 1 ( x i ) + ∑ j = 1 J c m j I ( x ∈ R m j ) {f_m}\left( x \right) = {f_{m - 1}}\left( {{x_i}} \right) + \sum\limits_{j = 1}^J {{c_{mj}}I\left( {x \in {R_{mj}}} \right)} fm(x)=fm1(xi)+j=1JcmjI(xRmj)
    • 得到回归树
      f ^ ( x ) = f M ( x ) = ∑ m = 1 M ∑ j = 1 J c m j I ( x ∈ R m j ) \hat f\left( x \right) = {f_M}\left( x \right) = \sum\limits_{m = 1}^M {\sum\limits_{j = 1}^J {{c_{mj}}I\left( {x \in {R_{mj}}} \right)} } f^(x)=fM(x)=m=1Mj=1JcmjI(xRmj)
参考文献

《统计学习方法》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值