机器学习-提升方法(集成学习)

集成学习

    提升方法通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类的性能。

1 Adaboost算法

    输入:训练数据集 T T T
    输出:最终分类器 G ( x ) G(x) G(x)
    (1)初始化训练数据的权值分布
D 1 ( w 11 , w 12 , . . . , w 1 N ) , w 1 i = 1 N D_1(w_{11},w_{12},...,w_{1N}),w1i=\frac{1}{N} D1(w11,w12,...,w1N),w1i=N1
    (2)对 m = 1 , 2 , . . . , M m=1,2,...,M m=1,2,...,M
    (a)使用具有权值分布的 D m D_m Dm训练数据集学习,得到基本分类器
G m ( x ) : X → { − 1 , + 1 } G_m(x):X \rightarrow\left\{-1,+1\right\} Gm(x):X{1,+1}
   &ensp(b)计算在 G m ( x ) G_m(x) Gm(x)训练数据集上的分类误差率
e m = ∑ i = 1 N P ( G m ( x ) ≠ y i ) = ∑ i = 1 N w m i I ( G m ( x ) ≠ y i ) e_m=\sum_{i=1}^N P(G_m(x) \neq y_i)=\sum_{i=1}^N w_{mi}I(G_m(x) \neq y_i) em=i=1NP(Gm(x)=yi)=i=1NwmiI(Gm(x)=yi)
    ©计算 G m ( x ) G_m(x) Gm(x)的系数
α m = 1 2 l o g 1 − e m e m \alpha_m=\frac{1}{2}log\frac{1-e_m}{e_m} αm=21logem1em
    (d)更新训练数据集的权值分布
D m + 1 = ( w m + 1 , 1 , . . . , w m + 1 , N ) D_{m+1}=(w_{m+1,1},...,w_{m+1,N}) Dm+1=(wm+1,1,...,wm+1,N)
w m + 1 , i = w m i Z m e x p ( − α m y i G m ( x ) ) , Z m 为 规 范 因 子 w_{m+1,i}=\frac{w_{mi}}{Z_m}exp(-\alpha_my_iG_m(x)),Z_m为规范因子 wm+1,i=Zmwmiexp(αmyiGm(x)),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))
    (3)构建基本分类器的线性组合
f ( x ) = ∑ m = 1 M α m G m ( x ) f(x)=\sum_{m=1}^M \alpha_mG_m(x) f(x)=m=1MαmGm(x)
G ( x ) = s i g n ( f ( x ) ) = s i g n ( ∑ i = 1 M α m G m ( x ) ) G(x)=sign(f(x))=sign(\sum_{i=1}^M \alpha_mG_m(x)) G(x)=sign(f(x))=sign(i=1MαmGm(x))

1.2 Adaoost算法的训练误差分析

    Adaboost算法的误差界
1 N ∑ i = 1 N I ( G m ( x ) ≠ y i ) ≤ 1 N ∑ i e x p ( − y i f ( x i ) ) = Z m \frac1N \sum_{i=1}^N I(G_m(x) \neq y_i) \leq \frac 1N \sum_i exp(-y_if(x_i))=Z_m N1i=1NI(Gm(x)=yi)N1iexp(yif(xi))=Zm
    二类分类问题Adaboost的训练误差界
∏ m = 1 M Z m = ∏ m = 1 N [ 2 e m ( 1 − e m ) ] = ∏ m = 1 M 1 = 4 γ m 2 ≤ e x p ( − 1 ∑ m = 1 M γ m 2 ) γ m = 1 2 − e m \prod_{m=1}^M Z_m=\prod_{m=1}^N[2\sqrt{e_m(1-e_m)}] \\=\prod_{m=1}^M \sqrt{1=4\gamma_m^2} \leq exp(-1\sum_{m=1}^M\gamma_m^2) \\\gamma_m=\frac12 -e_m m=1MZm=m=1N[2em(1em) ]=m=1M1=4γm2 exp(1m=1Mγm2)γm=21em
    推论
1 N ∑ i = 1 N I ( G m ( x ) ≠ y i ) ≤ e x p ( − 2 M γ 2 ) \frac1N\sum_{i=1}^NI(G_m(x) \neq y_i) \leq exp(-2M\gamma^2) N1i=1NI(Gm(x)=yi)exp(2Mγ2)

1.3 Adaboost与前向分布算法

    Adaboost算法的另一种解释,可以认为是一个加法模型,损失函数为指数函数,学习算法为二类分类学习算法。
    前向分布算法
    输入:训练集 T T T,损失函数 L L L,基函数集 { b ( x ; γ ) } \left\{b(x;\gamma)\right\} {b(x;γ)}
    输出:加法模型 f ( x ) f(x) f(x)
    (1)初始化 f 0 ( x ) = 0 f_0(x)=0 f0(x)=0;
    (2)对m=1,2,3,…,M
    (a)极小化损失函数
( β m , γ m ) = a r g m i n β , γ ∑ i = 1 N L ( y i , f m − 1 ( x i ) + β ( x i , γ ) ) (\beta_m,\gamma_m)=argmin_{\beta,\gamma}\sum_{i=1}^NL(y_i,f_{m-1}(x_i)+\beta(x_i,\gamma)) (βm,γm)=argminβ,γi=1NL(yi,fm1(xi)+β(xi,γ))
    得到参数 β m , γ m \beta_m,\gamma_m βm,γm
    (b)更新
f m ( x ) = f m − 1 ( x ) + β m b ( x ; γ m ) f_m(x)=f_{m-1}(x)+\beta_m b(x;\gamma_m) fm(x)=fm1(x)+βmb(x;γm)
    (3)得到加法模型
f ( x ) = f M ( x ) = ∑ m = 1 M β m b ( x ; γ m ) f(x)=f_M(x)=\sum_{m=1}^M \beta_mb(x;\gamma_m) f(x)=fM(x)=m=1Mβmb(x;γm)

2 提升树

2.1 提升树算法

    提升树是以分类树或回归树为基本分类器的提升方法。提升树模型可以表示为决策树的加法模型:
f M ( x ) = ∑ m − 1 M T ( x ; Θ m ) f_M(x)=\sum_{m-1}^MT(x;\Theta_m) fM(x)=m1MT(x;Θm)
    其中, T ( x ; Θ m ) T(x;\Theta_m) T(x;Θm)为决策树, Θ m \Theta_m Θm为决策树的参数, M M 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 \Theta_m Θm:
Θ m ^ = a r g m i n Θ m ∑ i = 1 N L ( y i , f m − 1 ( x i ) + T ( x i ; Θ m ) ) \hat{\Theta_m}=argmin_{\Theta_m}\sum_{i=1}^N L(y_i,f_{m-1}(x_i)+T(x_i;\Theta_m)) Θm^=argminΘmi=1NL(yi,fm1(xi)+T(xi;Θm))
    树可以表示为
T ( x ; Θ m ) = ∑ j = 1 J c j I ( x ∈ R j ) T(x;\Theta_m)=\sum_{j=1}^J c_jI(x\in R_j) T(x;Θm)=j=1JcjI(xRj)
    当损失函数为平方误差时:
L ( y i , f m − 1 ( x i ) + T ( x i ; Θ m ) ) = [ y − f m − 1 ( x ) − T ( x ; Θ m ) ] 2 = [ r − T ( x ; Θ m ) ] 2 L(y_i,f_{m-1}(x_i)+T(x_i;\Theta_m))=[y-f_{m-1}(x)-T(x;\Theta_m)]^2 \\=[r-T(x;\Theta_m)]^2 L(yi,fm1(xi)+T(xi;Θm))=[yfm1(x)T(x;Θm)]2=[rT(x;Θm)]2
r = y − f m − 1 ( x ) r=y-f_{m-1}(x) r=yfm1(x)
     回归问题的提升树算法
    (a)计算参数: r m i = y i − f m − 1 ( x i ) r_{mi}=y_i-f_{m-1}(x_i) rmi=yifm1(xi)
    (b)拟合残差 r m i r_{mi} rmi学习一个回归树,得到 T ( x ; Θ m ) T(x;\Theta_m) T(x;Θm)
    (c)更新 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}^MT(x;\Theta_m) fM(x)=m=1MT(x;Θm)

2.2 梯度提升

    当损失函数是平凡损失函数和指数函数时,每一步优化很简单。但是对一般损失函数而言,每一步优化都不容易。梯度提升利用最速下降法的近似方法。
    梯度提升算法
    (1)初始化 f 0 ( x ) = a r g m i n c ∑ i = 1 N L ( y i , c ) f_0(x)=argmin_c \sum_{i=1}^N L(y_i,c) f0(x)=argminci=1NL(yi,c)
    (2)对 m = 1 , 2 , . . . , M m=1,2,...,M m=1,2,...,M
      (a)对 i = 1 , 2 , . . . , N i=1,2,...,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}=-[\frac{\partial L(y_i,f(x_i))}{\partial f(x_i)}]_{f(x)=f_{m-1}(x)} rmi=[f(xi)L(yi,f(xi))]f(x)=fm1(x)
      (b)对 r m i r_{mi} rmi拟合一个回归树,得到第 m m m棵树的叶结点区域 R m j R_{mj} Rmj
      (c)对 j = 1 , 2 , . . . , J j=1,2,...,J j=1,2,...,J
c m j = a r g m i n c ∑ x i ∈ R m j L ( y i , f m − 1 ( x i ) + c ) c_{mj}=argmin_{c} \sum_{x_i \in R_{mj}}L(y_i,f_{m-1}(x_i)+c) cmj=argmincxiRmjL(yi,fm1(xi)+c)
      (d)更新 f m ( x ) = f m − 1 ( x ) + ∑ j = 1 J c m j I ( x ∈ R m j ) f_m(x)=f_{m-1}(x)+\sum_{j=1}^J c_{mj}I(x \in R_{mj}) 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 ) \hat{f}(x)=f_M(x)=\sum_{m=1}^M\sum_{j=1}^J c_{mj} I(x \in R_{mj}) 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、付费专栏及课程。

余额充值