统计学习方法——第8章 提升方法(AdaBoost+)

提升方法:

       对于一个复杂的问题,将多个专家的判断进行适当的综合所得出的结果,要不其中任何一个专家单独判断要好。

基本概念:

      强可学习和弱可学习:

     在概率近似正确(Probably Approximately Correct,PAC)学习的框架中,一个概念(一个类别)如果存在一个多项式算法能够学习它,并且正确率很高,那么就称这个概念是强可学习的;一个概念(一个类别)如果存在一个多项式算法能够学习它,学习的正确率仅仅比随机猜测略好,那么就称这个概念是弱可学习的,理论证明(Schapire)证明强可学习和弱可学习是等价的。即在PAC学习框架中,一个概念是强可学习的充要条件是这个概念是弱可学习的。

      提升方法就是从弱学习方法出发,反复学习,得到一系列弱分类器(基本分类器),然后组合弱分类器构成一个强分类器。对提升方法而言,有两个问题需要解决:1、在每一轮如何改变训练数据的权值或概率分布;2、如何将弱分类器组合成强分类器。

AdaBoost的做法:

       1、提升前一轮弱分类器错误分类样本的权重,降低正确分类样本的权重,从而使后一轮弱分类器更加关注误分类样本;

       2、加权多数表决方法,加大分类误差率小的弱分类器的权重,使其在表决中去决定作用;

       算法描述:

       输入训练数据集:T=\{(x_1,y_1), (x_2,y_2), ...,(x_N,y_N)\},输出最终分类器函数G(x)

       (1)初始化数据权重:D_1 = \{w_{11}, .., w_{1i},...,w_{1N} \} \ \ \ w_{1i}=\dfrac{1}{N}

       (2)对于m=1,2,...,M

                 2.1:使用具有权值分布D_m的训练数据集学习,得到基本分类器:G_m(x)\rightarrow \math{X} \in \{-1, +1\}

                 2.2:计算分类误差:e_m=P(G_m(x_i)\neq y_i) = \sum_i^N\alpha_{mi}I(G_m(x_i)\neq y_i)

                 2.3:计算G_m(x)的系数:\alpha_m=\dfrac{1}{2}\log(\dfrac{1-e_m}{e_m})【分类误差越大,\alpha_mG_m分类器的权重越大】

                 2.4:更新数据集权重:D_{m+1}=(w_{m+1,1}, w_{m+1,2},...,w_{m+1,N}),其中,w_{m+1,i} = \dfrac{w_{mi}\exp(-\alpha_my_iG_m(x_i))}{\sum_i^Nw_{mi}\exp(-\alpha_my_iG_m(x_i))}

       (3)组合弱分类器:f(x) = \sum_{m}^M\alpha_mG_m(x),最终的分类器函数:G(x) = sign(f(x)) = sign(\sum_m^M\alpha_mG_m(x))

AdaBoost误差分析:

      AdaBoost误差上界:\dfrac{1}{N}\sum_i^NI(G_m(x_i)\neq y_i)) \leq \dfrac{1}{N}\sum_i^N\exp(-y_if(x_i))=\prod_{m}^{M}Z_m \ \ \ Z_m = \sum_i^Nw_{mi}\exp(-\alpha_my_iG_m(x_i))

      AdaBoost二分类误差上界:\prod_{m}^{M}Z_m=\prod_{m}^{M}[2\sqrt{e_m(1-e_m)}]=\prod_{m}^{M}[\sqrt1-4\gamma_m^2]\leq\exp{-2\sum_m^M\gamma_m^2}

    

      推论:如果存在\gamma > 0,对所有m\gamma_m = \dfrac{1}{2}-e_m \geq \gamma,则:\dfrac{1}{N}\sum_i^NI(G(c_i)\neq y_i) \leq \exp(-2M\gamma^2)

前向分布算法:

      考虑加法模型:f(x) = \sum_m^M\beta_mb(x, \gamma_m),其中b(x,\gamma_m)为基函数,\gamma_m为基函数参数,\beta_m为基函数系数,显然AdaBoost分类器:f(x) = \sum_{m}^M\alpha_mG_m(x)是一个加法模型,在给定训练数据和损失函数L(y,f(x))的条件下,学习加法模型f(x)成为经验风险极小化即损失函数极小化问题:f(x) =\min_{\beta_m, \gamma_m} \sum_i^NL(y_i,\sum_m^M\beta_mb(x_i, \gamma_m))

       通常上式是一个复杂的优化问题。前向分布算法的优化策略是:因为学习是一个加法模型,如果能够从先往后每一步只学习一个基函数及其系数,逐步逼近优化目标函数,那么就可以简化优化过程。

具体地,每一步只优化f_m(x) =\min_{\beta_m, \gamma_m} \sum_i^NL(y_i,\beta_mb(x_i, \gamma_m))

下一次更新:f_{m+1}(x) =f_m(x)+\beta_mb(x,\gamma_m)

最终的加法模型:f(x) = f_M(x) = \sum_m^M\beta_mb(x,\gamma_m)

GBDT的做法:

     梯度提升树(Gradient Boost Decision Tree, GBDT),提升方法依然采用的是加法模型与前向分布算法。以决策树为基函数的提升方法称为提升树。GBDT与Adboost最主要的区别在于两者如何识别模型的问题。Adaboost用错分数据点来识别问题,通过调整错分数据点的权重来改进模型。GBDT通过负梯度来识别问题,通过计算负梯度来改进模型。

     给定当前模型f_{m-1}(x),优化参数:\theta_m = \min_{\theta_m}\sum_i^NL(y_i, f_{m+1}(x_i)+T(x_i, \theta_m)),设损失函数L(y,f(x))为平方和误差,则:

L(y,f(x)) = \sum_i^N(y_i-f(x_i))^2=\sum_i^N(yi-f_{m-1}(x_i)-T(x_i,\theta_m))^2,记r=y-f_{m-1}(x),因此,对于回归问题,只需要简单拟合残差即可。

Xgboost的做法:

     Xgboost 的全称是eXtreme Gradient Boosting,由华盛顿大学的陈天奇博士提出,在Kaggle的希格斯子信号识别竞赛中使用,因其出众的效率与较高的预测准确度而引起了广泛的关注。GBDT算法只利用了一阶的导数信息,Xgboost对损失函数做了二阶的泰勒展开,即f(x+\bigtriangleup x)\simeq f(x)+f^{'}(x)\bigtriangleup x+ \frac{1}{2}f^{''}(x)\bigtriangleup x^{2},并在目标函数之外加入了正则项对整体求最优解,用以权衡目标函数的下降和模型的复杂程度,避免过拟合。

    Xgboost目标损失函数: Obj^{(t)}=\sum_{i=1}^{n}l(y_{i},\hat{y}_{i}^{(t)})+\sum_{i=1}^{t}\Omega(f_{i})=\sum_{i=1}^{n}l(y_{i},\hat{y}_{i}^{(t-1)}+f_{t}(x_{i}))+\Omega(f_{t})+C

 

其中,t表示第t轮,f(t)表示第t轮所生成的树模型,\Omega(f(x_i))表示正则项,C = constant=\sum_{i=1}^{t-1}\Omega(f_{i})

参考博客:Boosting学习笔记(Adboost、GBDT、Xgboost)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值