上一篇博客在理解Adaboost时涉及到了一篇经典的论文:Friedman等人的《Additive logistic regression: a statistical view of boosting》,原本不打算精读,但是由于这篇文章的重要性,以及对于之后的GBDT的发展有很大的帮助,因此还是认认真真的精读一下。

这篇文章是Friedman等人在2000年于统计学领域的四大金刚——The Annals of Statistics上发表的。作者在这篇文章中主要是以统计的视角来解读Adaboost,认为Adaboost实质上是基于加性模型(additive model)以类似牛顿迭代法来优化指数损失函数。

文章结构:

  1. 介绍:文章介绍,以及bagging和boosting的关系,给出了之前的Discrete AdaBoost并推广得到了Real AdaBoost;
  2. boosting的简要历史:简要介绍boosting的发展历史;
  3. 加性模型:回顾加性模型及其扩展,给出了几个求解方法,如backfitting、贪婪的前向分步以及局部评分等;
  4. Adaboost:一个加性的逻辑回归模型:将AdaBoost算法(Discrete的和Real)解释为拟合加性逻辑回归模型的分步估计过程,他们优化了一个指数准则,并讨论为什么选择这个准则,主要是因为该准则的二阶导数等于二项对数似然准则的二阶导数。然后提出了更标准的基于概率的LogitBoost和Gentle Adaboost;
  5. 多分类程序:将LogitBoost扩展到多分类情况;
  6. 模拟研究:采用了比较复杂的决策边界,对四种方法两种基学习器进行模拟,LogitBoost总体上占主导地位,且说明了当决策边界可以用在原本的预测特征中就是加性的函数来很好的近似时,树桩作为基学习器的效果比使用更大的树好。更一般地,这四种方法的相对性能取决于决策边界的性质、基分类器的复杂性和增强迭代的次数;
  7. 真实数据实验:与模拟研究一致,对于树桩,LogitBoost、Real AdaBoost和Gentle AdaBoost具有相当的性能,明显优于Discrete AdaBoost。除了Discrete AdaBoost之外,实际的数据样本可能无法说明各种boosting方法之间的性能差异。因为可能真实数据样本的基本决策边界都相对简单,因此所有合理的方法都表现出相似的性能;
  8. 加性逻辑树:在函数的方差分析分解中扩展决策边界函数,并提出截断的最佳优先树与boosting的组合的“加性逻辑树”(ALT);
  9. 权重削减:在不牺牲精度的前提下,可以简单地从训练样本中删除大量的低权重观测值,而不会对最终的诱导分类器产生太大影响,由此显著地减少增强模型的计算量;
  10. boosting的进一步推广:提出可以用梯度步来代替牛顿步,以及使用任何平滑损失函数这两种方法来推广boosting算法;
  11. 结束语:总结,并给出Adaboos不会过拟合的一些可能的解释。

1. 介绍

Boosting算法在计算学习理论文献[Schapire (1990), Freund (1995), Freund and Schapire(1997)]中提出,并得到了广泛的关注。最常用的版本是Discrete AdaBoost,这和Freund和Schapire中的AdaBoost.M1用于二分类的情况本质上是一样的。Breiman在1996年的文章中指出,用决策树作为基学习器的Adaboost是世界上现有最好的分类器——“best off-the-shelf classifier in the world”。有趣的是,在许多例子中,测试误差似乎不断地减少,然后随着更多分类器的添加而趋于平稳,而不是最终增加。出于某种原因,AdaBoost似乎能够抵抗过拟合。

上图显示了Discrete AdaBoost在综合分类任务上的性能,使用CART作为基分类器进行调整。这种适应以“最佳优先”(best-first)的方式生长固定大小的树(参见第8节)。bagging纯粹是一种减少方差的技术,由于树木往往有很高的方差,bagging往往产生良好的结果。

早期版本的AdaBoost使用重采样方案来实现算法1的第2步,通过对训练数据进行加权采样。这表明了与bagging之间的联系,而boosting成功的一个主要原因与方差减少有关。下列情况下boosting表现的相当好:

  1. 算法第2步采用加权树生长算法,而不是加权重采样,每个训练观测值的权值为wiw_iwi​,这样就去掉了bagging中必不可少的随机化部分。
  2. “树桩”(Stumps)被当做弱学习器。树桩是单分裂的树,只有两个终端节点。这些数据通常方差较小,但偏差较大。(论文中给出了图说明用树桩套袋效果非常差)

这些结果表明,boosting能够同时减少偏差和方差,因此从根本上不同于bagging。

作者在这篇文章中提出一个Adaboost的通用版本,称之为Real AdaBoost,在这个算法中弱学习器返回一个分类的概率估计pm(x)=P^w(y=1∣x)∈[0,1]p_m(x)=\hat{P}_w(y=1|x)\in[0,1]pm​(x)=P^w​(y=1∣x)∈[0,1]?。Schapire和Singer的广义AdaBoost的一种形式与Real AdaBoost是一致的,特别是在弱学习器是决策树的特殊情况下。在图1的模拟示例中,Real AdaBoost的性能最好,特别是在树桩上,尽管我们看到100棵节点树的Discrete AdaBoost在经过200次迭代后会超过Real AdaBoost。

本文从统计的角度对AdaBoost过程进行了分析。论文的主要成果是重新推导了Adaboost,将它作为用前向分步规则来拟合一个加性模型∑mfm(x)\sum_mf_m(x)∑m​fm​(x)的算法。这个简单的事实在很大程度上解释了为什么它往往比单一的基学习器表现得更好。通过拟合不同的且可能简单的函数的加性模型,它扩展了可近似的函数类。

在这个基础上,Discrete和Real AdaBoost看起来不必要地复杂。拟合加性模型的一个更简单的方法是用前向分步规则来最小化平方误差损失E(y−∑mfm(x))2E(y-\sum_mf_m(x))^2E(y−∑m​fm​(x))2。在第mmm步固定f1(x),…,fm−1(x)f_1(x),\dots,f_{m-1}(x)f1​(x),…,fm−1​(x)并且最小化均方误差来得到fm(x)=E(y−∑1m−1fj(x)∣x)f_m(x)=E(y-\sum_1^{m-1}f_j(x)|x)fm​(x)=E(y−∑1m−1​fj​(x)∣x),这就是“残差拟合”(fitting of residuals),经常在线性回归和加性模型中使用。

然而对于分类问题来说,均方损失函数并不是一个好的选择,因此残差拟合在这种情况下效果不好。作者证明了Adaboost在分类问题中用一个更好的损失函数来拟合了一个加性模型。特别地,证明了Adaboost拟合了一个加性逻辑回归模型,用一个类似但是不完全相同的准则——伯努利的对数似然。由此继续推导出一个新的boosting程序LogitBoost,它直接优化了伯努利对数似然。

最初的boosting技术[Schapire (1990), Freund(1995)]通过产生类似分类器的“多数投票”,被证明有效地改进或“提高”了单个分类器的性能。这些算法后来发展成更具适应性和实用性的版本,比如AdaBoost,它的成功仍然可以通过“加权多数投票”或“加权委员会”来增加单个分类器的数量来解释。我们相信,这种观点,加上AdaBoost继承的“boost”这个吸引人的名字,可能导致了一些关于这种方法如何以及为什么有效的谜团。

2. boosting的简要历史

Schapire(1990)在PAC学习框架中开发了第一个简单的boosting程序。Schapire证明了,一个较弱学习器总是可以通过训练两个额外的分类器对输入数据流进行过滤来提高其性能。弱学习器是一种生成一个具有性能保证(具有高概率)明显优于投币操作的二分类算法。用初始的NNN个训练样本点学习了第一个分类器h1h_1h1​后:

  1. 在一个新的NNN个样本点上学到h2h_2h2​,这些样本点中的一半都是在h1h_1h1​中被错误分类的;
  2. h3h_3h3​是在h1h_1h1​和h2h_2h2​不一致的NNN个样本点上学习的;
  3. 提升后的分类器为hB=MajorityVote(h1,h2,h3)h_B=Majority\ Vote(h_1,h_2,h_3)hB​=Majority Vote(h1​,h2​,h3​)

Schapire的“Strength of Weak Learnability”定理证明了hBh_BhB​的性能优于h1h_1h1​。

Freund(1995)提出了一种“多数增强”的变体,它同时结合了许多弱学习器,提升了Schapire的简单的boosting算法的性能。支持这两种算法的理论要求弱学习器生成一个具有固定错误率的分类器,这导致了更适应和更现实的AdaBoost [Freund和Schapire (1996b)]和它的后代,在那里这个假设就没有了。

Freund和Schapire (1996b)以及Schapire和Singer(1998)以泛化误差上界的形式提供了一些理论来支持他们的算法。这个理论在计算学习领域得到了发展,最初是基于PAC学习的概念。其他试图解释boosting的理论来自博弈论(Freund and Schapire, 1996a)、Breiman(1997)和VC理论(Schapire, Freund, Bartlett and Lee, 1998)。与AdaBoost算法相关的界和理论是有趣的,但往往太松,没有实际意义。在实践中,boosting所取得的效果比界限所表示的要令人印象深刻得多。

3. 加性模型

作者认为,将目前的boosting过程视为拟合加性模型的分步算法,有助于理解它们的性能。加性模型在统计学上有着悠久的历史,所以我们首先给出一些例子。

3.1 加性回归模型

响应变量yyy是定量的,xxx和yyy有联合分布,我们感兴趣的是对均值E(y∣x)=F(x)E(y|x)=F(x)E(y∣x)=F(x)?建模。加性模型具有这样的形式F(x)=∑j=1pfj(xj)(1)F(x)=\sum_{j=1}^pf_j(x_j)\tag{1}F(x)=j=1∑p​fj​(xj​)(1)对于ppp个输入变量xjx_jxj​中的每个都存在一个单独的函数fj(xj)f_j(x_j)fj​(xj​)。更一般地说,每个fjf_jfj​都是输入变量的一个小的预先指定的子集的函数。backfitting算法[Friedman and Stuetzle (1981), Buja, Hastie and Tibshirani(1989)]是一种方便的用于拟合加法模型的模块化“Gauss-Seidel”算法。backfitting更新是fj(xj)←E[y−∑k≠jfk(xk)∣xj]forj=1,2,…,p,1,…(2)f_j(x_j)\leftarrow E\bigg[y-\sum_{k\neq j}f_k(x_k)\big|x_j\bigg]\ for\ j=1,2,\dots,p,1,\dots\tag{2}fj​(xj​)←E[y−k​=j∑​fk​(xk​)∣∣​xj​] for j=1,2,…,p,1,…(2)

任何估计xjx_jxj​的函数的方法或算法都可以用来估计上式中的条件期望,特别是包括非参数平滑算法,如局部回归或平滑样条。在右边,fkf_kfk​函数的所有最新版本都用于形成部分残差。backfitting循环重复直到收敛。在一般条件下,backfitting可以收敛到最小值E(y−F(x))2E(y-F(x))^2E(y−F(x))2 [Buja, Hastie和Tibshirani (1989)]。

3.2 扩展加性模型

更一般地,我们可以考虑这样的加性模型,其中{fm(x)}1M\{f_m(x)\}_1^M{fm​(x)}1M​是所有输入特征xxx的可能的函数。通常来说fm(x)f_m(x)fm​(x)是一些参数γ\gammaγ和一个乘子βm\beta_mβm​组成的简单函数的形式fm(x)=βmb(x;γm)(3)f_m(x)=\beta_mb(x;\gamma_m)\tag{3}fm​(x)=βm​b(x;γm​)(3)则加性模型就变为FM(x)=∑m=1Mβmb(x;γm)(4)F_M(x)=\sum_{m=1}^M\beta_mb(x;\gamma_m)\tag{4}FM​(x)=m=1∑M​βm​b(x;γm​)(4)

例如在只有一个隐层的神经网络中b(x;γ)=σ(γtx)b(x;\gamma)=\sigma(\gamma^tx)b(x;γ)=σ(γtx),其中σ(⋅)\sigma(\cdot)σ(⋅)是一个S型的函数,γ\gammaγ参数化输入特征的线性组合。在应用中,这些{b(x;γm)}1M\{b(x;\gamma_m)\}_1^M{b(x;γm​)}1M​通常被称为“基函数”,因为它们张成一个函数子空间。

如果均方最小运用到拟合准则中,我们可以通过一个推广的backfitting算法来更新求解最优的参数集{βm,γm}←arg⁡min⁡β,γE[y−∑k≠mβkb(x;γk)−βb(x;γ)]2(5)\{\beta_m,\gamma_m\}\leftarrow\arg\min_{\beta,\gamma}E\bigg[y-\sum_{k\neq m}\beta_kb(x;\gamma_k)-\beta b(x;\gamma)\bigg]^2\tag{5}{βm​,γm​}←argβ,γmin​E[y−k​=m∑​βk​b(x;γk​)−βb(x;γ)]2(5)对m=1,2,…,Mm=1,2,\dots,Mm=1,2,…,M循环直到收敛。另外,我们可以用一个贪婪的前向分步方法{βm,γm}←arg⁡min⁡β,γE[y−Fm−1(x)−βb(x;γ)]2(6)\{\beta_m,\gamma_m\}\leftarrow\arg\min_{\beta,\gamma}E\bigg[y-F_{m-1}(x)-\beta b(x;\gamma)\bigg]^2\tag{6}{βm​,γm​}←argβ,γmin​E[y−Fm−1​(x)−βb(x;γ)]2(6)对m=1,2,…,Mm=1,2,\dots,Mm=1,2,…,M,其中{βm,γm}1m−1\{\beta_m,\gamma_m\}_1^{m-1}{βm​,γm​}1m−1​是之前迭代中对应的解里已经固定下来的。这是Mallat和张(1993)在“matching pursuit”时所使用的方法,其中b(x;γ)b(x;\gamma)b(x;γ)是从一个过完备的小波基字典中挑选出来的。用boosting的语言,f(x)=βb(x;γ)f(x)=\beta b(x;\gamma)f(x)=βb(x;γ)可以称为弱学习器,FM(x)F_M(x)FM​(x)为“委员会”。如果决策树用作弱学习器,参数γ\gammaγ可以表示分裂变量、分割点、在每个终端节点的常数和终端节点的每棵树的数量。

注意不管是backfitting还是贪婪分步算法,他们都只要求对数据拟合一个单一的弱学习器fm(x)=βmb(x;γm)f_m(x)=\beta_mb(x;\gamma_m)fm​(x)=βm​b(x;γm​)。这些基本的算法只是简单地重复应用于原始数据的迭代之后的版本ym←y−∑k≠mfk(x)y_m\leftarrow y-\sum_{k\neq m}f_k(x)ym​←y−k​=m∑​fk​(x)在前向分步算法中,第mmm次迭代中的输出ymy_mym​只依赖于值ym−1y_{m-1}ym−1​和之前迭代中的解fm−1(x)f_{m-1}(x)fm−1​(x)ym=ym−1−fm−1(x)(7)y_m=y_{m-1}-f_{m-1}(x)\tag{7}ym​=ym−1​−fm−1​(x)(7)每一mmm步,之前的输出值ym−1y_{m−1}ym−1​按照上式更新得到,这样之前的模型fm−1(x)f_{m-1}(x)fm−1​(x)对新的输出?ymy_{m}ym​没有解释能力,因此可以认为这是一个提升弱学习器f(x)=βb(x;γ)f(x)=\beta b(x;\gamma)f(x)=βb(x;γ)组成一个强大的委员会FM(x)F_M(x)FM​(x)的过程。

3.3 分类问题

对于分类问题,我们由贝叶斯理论知道,我们需要的是后验概率或者条件概率P(y=j∣x)P(y=j|x)P(y=j∣x)。可以将上述的回归机制转化为在分类领域的问题,通过简单的E(1[y=j]∣x)=P(y=j∣x)E(1_{[y=j]}|x)=P(y=j|x)E(1[y=j]​∣x)=P(y=j∣x)。虽然这样的效果一般都相当不错,但是几个问题对有约束的回归方法在[Hastie, Tibshirani Buja(1994)]中已经提到。这个估计不局限于?[0,1][0,1][0,1],并且在当有两个以上的类的时候会出现一些隐藏的问题。一个著名的例外是当决策树被用作回归方法时,事实上这是Breiman, Friedman, Olshen和Stone(1984)使用的方法。

逻辑回归是一个统计上常用的用来克服这些困难的方法。对于二分类问题,加性逻辑模型形式如下logP(y=1∣x)P(y=−1∣x)=∑m=1Mfm(x)(8)log{P(y=1|x)\over P(y=-1|x)}=\sum_{m=1}^Mf_m(x)\tag{8}logP(y=−1∣x)P(y=1∣x)​=m=1∑M​fm​(x)(8)左边的单调Logit变换保证了任何F(x)=∑m=1M(x)∈RF(x)=\sum_{m=1}^M(x)\in RF(x)=∑m=1M​(x)∈R,这个概率估计在[0,1][0,1][0,1]区间,变换之后得到p(x)=P(y=1∣x)=eF(x)1+eF(x)(9)p(x)=P(y=1|x)={e^{F(x)}\over 1+e^{F(x)}}\tag{9}p(x)=P(y=1∣x)=1+eF(x)eF(x)​(9)

这里我们已经给了F(x)F(x)F(x)一个一般的加性模型。特别地,在统计学中,线性逻辑回归[McCullagh and Nelder(1989)]和加性逻辑回归[Hastie and Tibshirani(1990)]很受欢迎。这些模型通常通过最大化二项对数似然来拟合,并具有极大似然估计的所有相关渐近最优性特征。

在Hastie和Tibshirani(1990)中,backfitting(2)的一个广义版本称为“局部评分”(“Local Scoring” ),可以使用最大似然来拟合加性逻辑模型。开始先猜测f1(x1)…fp(xp)f_1(x_1)\dots f_p(x_p)f1​(x1​)…fp​(xp​),F(x)=∑fk(xk)F(x)=\sum f_k(x_k)F(x)=∑fk​(xk​)且p(x)p(x)p(x)如(9)定义,由此得到:z=F(x)+1[y=1]−p(x)p(x)(1−p(x))z=F(x)+{1_{[y=1]}-p(x)\over p(x)(1-p(x))}z=F(x)+p(x)(1−p(x))1[y=1]​−p(x)​我们结合观察到的权重p(x)(1−p(x))p(x)(1-p(x))p(x)(1−p(x))对zzz应用backfitting来得到新的fk(xk)f_k(x_k)fk​(xk​),这个过程重复直到收敛。这个过程的前向分步版本(6)与本文后面描述的LogitBoost算法非常相似。

4. Adaboost:一个加性的逻辑回归模型

在本节中,作者展示了AdaBoost算法(Discrete的和Real)可以解释为拟合加性逻辑回归模型的分步估计过程。他们优化了一个指数准则,该准则的二阶导数等于二项对数似然准则的二阶导数。然后,作者提出了一个更标准的基于概率的boosting程序。

4.1指数准则

考虑估计F(x)F(x)F(x)的最小化准则J(F)=E(e−yF(x))(11)J(F)=E(e^{-yF(x)})\tag{11}J(F)=E(e−yF(x))(11)这里这里EEE代表期望,根据上下文的不同,这可能是总体期望(关于概率分布),也可能是样本平均值。EwE_wEw​表示加权期望。引理1说明函数F(x)F(x)F(x)最小化J(F)J(F)J(F)是P(y=1∣x)P(y=1|x)P(y=1∣x)的对称逻辑变换。

引理1 E(e−yF(x))E(e^{-yF(x)})E(e−yF(x))在F(x)=12logP(y=1∣x)P(y=−1∣x)(12)F(x)={1\over2}log{P(y=1|x)\over P(y=-1|x)}\tag{12}F(x)=21​logP(y=−1∣x)P(y=1∣x)​(12)处达到最小。因此,P(y=1∣x)=eF(x)e−F(x)+eF(x),P(y=−1∣x)=e−F(x)e−F(x)+eF(x)P(y=1|x)={e^{F(x)}\over e^{-F(x)}+e^{F(x)}},\ \ P(y=-1|x)={e^{-F(x)}\over e^{-F(x)}+e^{F(x)}}P(y=1∣x)=e−F(x)+eF(x)eF(x)​,  P(y=−1∣x)=e−F(x)+eF(x)e−F(x)​证明:因为在yyy和xxx的联合分布上求期望,可以充分得到在xxx上的条件期望最小值,所以对E(e−yF(x)∣x)=P(y=1∣x)e−F(x)+P(y=−1∣x)eF(x)E(e^{-yF(x)}|x)=P(y=1|x)e^{-F(x)}+P(y=-1|x)e^{F(x)}E(e−yF(x)∣x)=P(y=1∣x)e−F(x)+P(y=−1∣x)eF(x) 令∂E(e−yF(x)∣x)∂F(x)=−P(y=1∣x)e−F(x)+P(y=−1∣x)eF(x){\partial E(e^{-yF(x)}|x)\over \partial F(x)}=-P(y=1|x)e^{-F(x)}+P(y=-1|x)e^{F(x)}∂F(x)∂E(e−yF(x)∣x)​=−P(y=1∣x)e−F(x)+P(y=−1∣x)eF(x)为0即可得到结论。

这一指数准则出现在Schapire和Singer(1998)中,作为分类错误的误差上界。Breiman(1997)在他对AdaBoost和预测游戏的结果中也使用了这个标准。一般来说逻辑回归模型不像式(12)中有一个121\over 221​的因子,但是通过上下同乘eF(x)e^{F(x)}eF(x)可以得到通常意义下的逻辑回归模型p(x)=e2F(x)1+e2F(x)p(x)={e^{2F(x)}\over1+e^{2F(x)}}p(x)=1+e2F(x)e2F(x)​因此说这两个模型是等价的。

推论1 如果EEE由xxx上的平均值代替,其中F(x)F(x)F(x)?是常数(如决策树的终端节点),同样的结果也适用于y=1y=1y=1和y=−1y=-1y=−1的样本比例。

结论1和结论2表明,无论是Discrete AdaBoost还是Real AdaBoost,以及Freund和Schapire (1996b)的广义AdaBoost,都可以作为迭代算法来优化(基于总体分布的)指数准则。

  1. 给定一个不完美的F(x)F(x)F(x),根据该准则的总体分布,提出了一个更新F(x)+f(x)F(x)+f(x)F(x)+f(x);
  2. 涉及到总体条件期望的这些更新,对于有限的数据集,由于某些受限制的估计,不能很好地近似,例如决策树的终端节点的平均值。

Hastie和Tibshirani(1990)在拟合广义加性模型时使用了类似的局部评分算法的推导。在实践中通常需要许多项,因为在每个阶段,对条件期望的近似相当粗略。由于引理1的存在,所得到的算法可以解释为拟合加性逻辑回归模型的分步估计过程。这些派生都差别很大,需要分别的对待。

结论1 Discrete AdaBoost算法(总体版本)通过牛顿式的更新,建立了一个加性逻辑回归模型来最小化E(e−yF(x))E(e^{-yF(x)})E(e−yF(x))。
证明如下
令J(F)=E[e−yF(x)]J(F)=E[e^{-yF(x)}]J(F)=E[e−yF(x)],假设我们已经有了一个当前的分类器F(x)F(x)F(x),想要得到一个改进的分类器F(x)+cf(x)F(x)+cf(x)F(x)+cf(x),也就是在当前分类器中继续添加一个弱学习器,希望新的弱学习器在上一步更新后的样本分布中能最小化损失函数J(F+cf)J(F+cf)J(F+cf),也就是使前向分步算法(stage-wise)得到的ccc和fff使F+cfF+cfF+cf在训练集上的指数损失最小。现在的任务就是证明使得损失函数J(F+cf)J(F+cf)J(F+cf)达到最小的c^\hat cc^和f^\hat ff^​,就是Adaboost算法所得到的ccc和fff,证明可以分为两步:
首先,求f^\hat ff^​。对于固定的ccc和xxx,我们在f(x)=0f(x)=0f(x)=0处将J(F+cf)J(F+cf)J(F+cf)泰勒展开到二阶:J(F+cf)=E[e−yF(x)e−cyf(x)]≈E[e−yF(x)(1−cyf(x)+c2y2f2(x)2)]=E[e−yF(x)(1−cyf(x)+c22)](因为y,f(x)∈{+1,−1})\begin{aligned} J(F+cf)&=E[e^{-yF(x)}e^{-cyf(x)}]\\ &\approx E[e^{-yF(x)}(1-cyf(x)+{c^2y^2f^2(x)\over2})]\\ &= E[e^{-yF(x)}(1-cyf(x)+{c^2\over2})]\ \ (\text{因为}y,f(x)\in\{+1,-1\}) \end{aligned}J(F+cf)​=E[e−yF(x)e−cyf(x)]≈E[e−yF(x)(1−cyf(x)+2c2y2f2(x)​)]=E[e−yF(x)(1−cyf(x)+2c2​)]  (因为y,f(x)∈{+1,−1})​关于f(x)∈{+1,−1}f(x)\in\{+1,-1\}f(x)∈{+1,−1}逐点最小化,得到:f(x)=arg⁡min⁡fEw[1−cyf(x)+c2/2∣x](16)f(x)=\arg\min_f E_w[1-cyf(x)+{c^2/2}|x] \tag{16}f(x)=argfmin​Ew​[1−cyf(x)+c2/2∣x](16)这里的Ew(⋅∣x)E_w(\cdot|x)Ew​(⋅∣x)表示加权条件期望,其中w=w(x,y)=exp(−yF(x))w=w(x,y)=exp(-yF(x))w=w(x,y)=exp(−yF(x)),且Ew[g(x,y)∣x]≐E[w(x,y)g(x,y)∣x]E[w(x,y)∣x]E_w[g(x,y)|x]\doteq{E[w(x,y)g(x,y)|x]\over E[w(x,y)|x]}Ew​[g(x,y)∣x]≐E[w(x,y)∣x]E[w(x,y)g(x,y)∣x]​对c>0c>0c>0,最小化(16)式等价于最大化Ew[yf(x)]E_w[yf(x)]Ew​[yf(x)]它的解为f^(x)={1if Ew(y∣x)=Pw(y=1∣x)−Pw(y=−1∣x)>0,−1otherwise(18)\hat f(x)= \begin{cases} 1 & \text{if } E_w(y|x)=P_w(y=1|x)-P_w(y=-1|x)>0,\\ -1 & \text{otherwise} \end{cases}\tag{18} f^​(x)={1−1​if Ew​(y∣x)=Pw​(y=1∣x)−Pw​(y=−1∣x)>0,otherwise​(18)注意(再次使用f(x)2=y2=1f(x)^2=y^2=1f(x)2=y2=1)有−Ew[yf(x)]=Ew[y−f(x)]2/2−1-E_w[yf(x)]=E_w[y-f(x)]^2/2-1−Ew​[yf(x)]=Ew​[y−f(x)]2/2−1从而最小化二阶近似准则就变成了f(x)∈{−1,1}f(x)\in\{-1,1\}f(x)∈{−1,1}的一个加权最小二乘,这构成了类似牛顿法的步骤。
其次,求c^\hat cc^。给定f^∈{+1,−1}\hat{f}\in\{+1,-1\}f^​∈{+1,−1},我们就可以直接最小化J(F+cf^)=E[e−yF(x)e−cyf(x)]J(F+c\hat{f})=E[e^{-yF(x)}e^{-cyf(x)}]J(F+cf^​)=E[e−yF(x)e−cyf(x)]来求得系数ccc,因为e−yF(x)e^{-yF(x)}e−yF(x)部分与ccc和f^\hat{f}f^​都无关,因此最小化时可以不用考虑,相当于常数,因此:c^=arg⁡min⁡cEw[e−cyf^(x)]\begin{aligned} \hat{c}&=\arg\min_c E_w[e^{-cy\hat{f}(x)}] \end{aligned}c^​=argcmin​Ew​[e−cyf^​(x)]​利用引理1的方法可以得到Ew(e−cyf^(x)∣x)=Pw(y=f^∣x)e−c+Pw(y≠f^∣x)ecE_w(e^{-cy\hat{f}(x)}|x)=P_w(y=\hat{f}|x)e^{-c}+P_w(y\neq\hat{f}|x)e^{c}Ew​(e−cyf^​(x)∣x)=Pw​(y=f^​∣x)e−c+Pw​(y​=f^​∣x)ec 令∂Ew(e−cyf^(x)∣x)∂c=−Pw(y=f^∣x)e−c+Pw(y≠f^∣x)ec{\partial E_w(e^{-cy\hat{f}(x)}|x)\over \partial c}=-P_w(y=\hat{f}|x)e^{-c}+P_w(y\neq\hat{f}|x)e^{c}∂c∂Ew​(e−cyf^​(x)∣x)​=−Pw​(y=f^​∣x)e−c+Pw​(y​=f^​∣x)ec等于0,即可得c^=12logPw(y=f^∣x)Pw(y≠f^∣x)=12log1−ee\hat{c}={1\over2}log{P_w(y=\hat{f}|x)\over P_w(y\neq\hat{f}|x)}={1\over2}log{1-e\over e}c^=21​logPw​(y​=f^​∣x)Pw​(y=f^​∣x)​=21​loge1−e​其中e=Pw(y≠f^∣x)=Ew[1(y≠f^)]e=P_w(y\neq\hat{f}|x)=E_w[1_{(y\neq\hat{f})}]e=Pw​(y​=f^​∣x)=Ew​[1(y​=f^​)​]表示错误率,注意若弱学习器表现比50%50\%50%还差,则ccc是负数,在这种情况下,它会自动反转极性。因此结合起来就得到了F(x)F(x)F(x)的更新规则:F(x)←F(x)+12log1−eef^(x)F(x)\leftarrow F(x)+{1\over2}log{1-e\over e}\hat{f}(x)F(x)←F(x)+21​loge1−e​f^​(x)最后,对于权重的更新,由J(F+cf)J(F+cf)J(F+cf)的定义就可以得到更新的规则:w(y∣x)←w(y∣x)⋅e−c^yf^(x)w(y|x)\leftarrow w(y|x)\cdot e^{-\hat{c}y\hat{f}(x)}w(y∣x)←w(y∣x)⋅e−c^yf^​(x)再加上归一化即可。由于yf^(x)=2×1(y≠f^(x))−1y\hat f(x)=2\times1_{(y\neq \hat f(x))}-1yf^​(x)=2×1(y​=f^​(x))​−1,因此上面的更新规则等价于:w(y∣x)←w(y∣x)⋅exp(log(1−ee)1(y≠f^(x)))w(y|x)\leftarrow w(y|x)\cdot exp\bigg(log\big({1-e\over e}\big)1_{(y\neq \hat f(x))}\bigg)w(y∣x)←w(y∣x)⋅exp(log(e1−e​)1(y​=f^​(x))​)因此,函数和权重的更新和在Discrete Adaboost的算法中使用的一样。

AdaBoost的这个总体分布版本很自然地转换为使用决策树的数据版本。(18)式中的加权条件期望近似于树的最终结点的加权平均。特别地,加权最小二乘法则用于生成树分类器f(x)f(x)f(x),且给定f(x)f(x)f(x),常数ccc基于加权训练误差。

注意,每次牛顿法的步骤之后,权重改变,因此决策树的结构也会改变。这给牛顿式算法的数据版本增加了一个自适应的变化。AdaBoost的部分推导可以在Breiman(1997)和Schapire and Singer(1998)中找到,但没有与加法逻辑回归模型建立联系。

推论2 每次更新权值后,当前的弱学习器的加权分类错误率为50%。
证明:注意到最小化J(F+cf)J(F+cf)J(F+cf)的ccc满足∂J(F+cf)∂c=−E[e−y(F(x)+cf(x))yf(x)]=0(20){\partial J(F+cf)\over \partial c}=-E[e^{-y(F(x)+cf(x))}yf(x)]=0\tag{20}∂c∂J(F+cf)​=−E[e−y(F(x)+cf(x))yf(x)]=0(20)因为正确分类时yf(x)yf(x)yf(x)为1,不正确时为-1,因此结论成立(c=0c=0c=0,因此err=0.5err=0.5err=0.5)。

Schapire和Singer(1998)给出的解释是,权重的更新使新的加权问题对下一个弱学习器的难度最大。Discrete Adaboost算法希望决策树或其他“弱学习器”提供一个分类f(x)∈{−1,1}f(x)\in\{-1,1\}f(x)∈{−1,1}。结论1需要小的修改以适应在Real Adaboost算法中的f(x)∈Rf(x)\in Rf(x)∈R的要求。cmc_mcm​的估计值有所不同。固定fff,我们看到(20)式的最小值必须满足Ew[yf(x)ecyf(x)]=0E_w[yf(x)e^{cyf(x)}]=0Ew​[yf(x)ecyf(x)]=0如果fff不是离散的,则这个等式对ccc没有闭式解,需要例如Newton–Raphson的迭代解。

现在我们推导出Real AdaBoost算法,它使用加权概率估计来更新加性逻辑模型,而不是分类本身。我们再次推导出总体分布的更新,然后将其应用到数据中,方法是通过树中的终端节点平均值来近似条件期望。

结论2 Real AdaBoost算法通过分步以及对J(F)=E(e−yF(x))J(F)=E(e^{-yF(x)})J(F)=E(e−yF(x))的近似优化,来拟合一个加性逻辑回归模型。
证明如下
假定我们已经有了当前的估计F(x)F(x)F(x),想通过在每个xxx最小化J(F(x)+f(x))J(F(x)+f(x))J(F(x)+f(x))找到一个改进的估计F(x)+f(x)F(x)+f(x)F(x)+f(x) J(F(x)+f(x))=E(e−yF(x)e−yf(x)∣x)=e−f(x)E[e−yF(x)1[y=1]∣x]+ef(x)E[e−yF(x)1[y=−1]∣x]\begin{aligned} J(F(x)+f(x))&=E(e^{-yF(x)}e^{-yf(x)}|x)\\ &=e^{-f(x)}E[e^{-yF(x)}1_{[y=1]}|x]+e^{f(x)}E[e^{-yF(x)}1_{[y=-1]}|x] \end{aligned}J(F(x)+f(x))​=E(e−yF(x)e−yf(x)∣x)=e−f(x)E[e−yF(x)1[y=1]​∣x]+ef(x)E[e−yF(x)1[y=−1]​∣x]​通过上下同时除以E[e−yF(x)∣x]E[e^{-yF(x)}|x]E[e−yF(x)∣x]且关于f(x)f(x)f(x)求导为0,得到f(x)=12logEw[1[y=1]∣x]Ew[1[y=−1]∣x]=12logPw(y=1∣x)Pw(y=−1∣x)\begin{aligned} f(x)&={1\over 2}log{E_w[1_{[y=1]}|x]\over E_w[1_{[y=-1]}|x]}\\ &={1\over 2}log{P_w(y=1|x)\over P_w(y=-1|x)} \end{aligned}f(x)​=21​logEw​[1[y=−1]​∣x]Ew​[1[y=1]​∣x]​=21​logPw​(y=−1∣x)Pw​(y=1∣x)​​其中w(x,y)=exp(−yF(x))w(x,y)=exp(-yF(x))w(x,y)=exp(−yF(x)),权重更新为w(x,y)←w(x,y)e−yf(x)w(x,y)\leftarrow w(x,y)e^{-yf(x)}w(x,y)←w(x,y)e−yf(x)所提出的算法将在一次迭代后停止。在实践中,我们对条件期望使用粗略的近似,例如决策树或其他约束模型,因此需要许多步骤。

推论3 在最优的F(x)F(x)F(x)中,yyy的加权条件均值为0。
证明:若F(x)F(x)F(x)是最优的,则有∂J(F(x))∂F(x)=−E[e−yF(x)y]=0{\partial J(F(x))\over \partial F(x)}=-E[e^{-yF(x)}y]=0∂F(x)∂J(F(x))​=−E[e−yF(x)y]=0

我们可以把权值看作是对二分类问题的残差的一种替代。在最优函数FFF处,yyy的加权条件分布中没有关于FFF的更多信息,如果有,我们用它来更新FFF。
在Discrete或Real AdaBoost算法的MMM次迭代中,我们构成了该形式的一个加性函数F(x)=∑m=1Mfm(x)F(x)=\sum_{m=1}^Mf_m(x)F(x)=m=1∑M​fm​(x)其中,每一部分都是在固定了更早的部分后,贪婪地在前向分步中找到的。我们的术语“分步”指的是类似的统计方法:

  1. 变量按顺序包括在逐步回归中。
  2. 已包括的变量系数不作进一步调整。
4.2 为什么是E(e−yf(x))E(e^{-yf(x)})E(e−yf(x))

到目前为止,这个指数准则的唯一理由是它有一个合理的总体分布最小值,而且上面描述的算法在实际数据上运行良好。此外:

  1. Schapire和Singer(1998)提出e−yF(x)e^{−yF(x)}e−yF(x)作为误分类错误1[yF<0]1_{[yF<0]}1[yF<0]​的一个可微的上界(参见下图图2)。

  2. 它生成的AdaBoost算法是非常模块化的,每次迭代都需要在加权训练数据集上对分类器进行再训练。

    令y∗=(y+1)/2y^*=(y+1)/2y∗=(y+1)/2取值0,10,10,1,用p(x)=eF(x)eF(x)+e−F(x)p(x)={e^{F(x)}\over e^{F(x)}+e^{-F(x)}}p(x)=eF(x)+e−F(x)eF(x)​参数化二项式概率。则二项式对数似然为l(y∗,p(x))=y∗log(p(x))+(1−y∗)log(1−p(x))=−log(1+e−2yF(x))(*)\begin{aligned} l(y^*,p(x))&=y^*log(p(x))+(1-y^*)log(1-p(x))\\ &=-log(1+e^{-2yF(x)}) \end{aligned}\tag{*}l(y∗,p(x))​=y∗log(p(x))+(1−y∗)log(1−p(x))=−log(1+e−2yF(x))​(*)

  3. −El(y∗,p(x))-El(y^*,p(x))−El(y∗,p(x))的分布最小化的值与Ee−yF(x)Ee^{-yF(x)}Ee−yF(x)一致。这是很容易看出的,因为对数似然期望是在真的概率p(x)=P(y∗=1∣x)p(x)=P(y^*=1|x)p(x)=P(y∗=1∣x)处最大化,这个概率定义了logitF(x)F(x)F(x)。引理1得到的是Ee−yF(x)Ee^{-yF(x)}Ee−yF(x)的最小值,事实上,指数准则和(负)对数似然在F=0F = 0F=0附近的泰勒级数的二阶展开等价(分别展开exp(−yF)≈1−yF+y2F2/2exp(-yF)\approx 1-yF+y^2F^2/2exp(−yF)≈1−yF+y2F2/2和log(1+e−2yF(x))≈log(2)−yF+y2F2/2log(1+e^{-2yF(x)})\approx log(2)-yF+y^2F^2/2log(1+e−2yF(x))≈log(2)−yF+y2F2/2即可得到)−l(y∗,p)≈exp(−yF)+log(2)−1-l(y^*,p)\approx exp(-yF)+log(2)-1−l(y∗,p)≈exp(−yF)+log(2)−1作为yFyFyF的函数exp(−yF)exp(-yF)exp(−yF)和log(1+e−2yF(x))log(1+e^{-2yF(x)})log(1+e−2yF(x))的图像在图2中展示,yFyFyF为正意味着分类正确。注意−exp(−yF)-exp(-yF)−exp(−yF)并不是一个合适的对数似然,因为它不等于任何概率密度函数在正或负1上的对数。

  4. 还有另外一种方式来看准则J(F)J(F)J(F)。易得e−yF(x)=∣y∗−p(x)∣p(x)(1−p(x))e^{-yF(x)}={|y^*-p(x)|\over \sqrt{p(x)(1-p(x))}}e−yF(x)=p(x)(1−p(x))​∣y∗−p(x)∣​其中F(x)=12log(p(x)/(1−p(x)))F(x)={1\over2}log(p(x)/(1-p(x)))F(x)=21​log(p(x)/(1−p(x))),右边在统计学中被称为χ\chiχ统计。χ2\chi^2χ2是对数似然的一个二阶近似,所以χ\chiχ可以被认为是一个“温和”的选择。

指数似然准则和对数似然准则的一个特点是单调和光滑。即使训练误差为零,这些准则也会将估计值推向更纯的解(就概率估计值而言)。

为什么不通过最小化均方误差E(y−F(x))2E(y-F(x))^2E(y−F(x))2来估计fmf_mfm​?如果Fm−1(x)=∑1m−1fj(x)F_{m-1}(x)=\sum_1^{m-1}f_j(x)Fm−1​(x)=∑1m−1​fj​(x)是当前的预测,这会带来一个前向的分步过程,它在(6)式中的第mmm步中得到y−Fm−1(x)y-F_{m-1}(x)y−Fm−1​(x)的一个无权重的拟合。根据经验,我们发现这种方法效果得很好,但主要是靠那些使用单调损失准则的方法。我们认为平方误差损失的非单调性(图2)是原因。正确的分类,但yF(x)>1yF(x)>1yF(x)>1,导致对递增的∣F(x)∣|F(x)|∣F(x)∣值,损失也增加。这使得平方误差损失对于分类错误率的近似特别差。“过于正确”的分类和分类错误一样会受到惩罚。

4.3 二项对数似然的直接优化

这里还是讨论二分类情况,y∗=(y+1)/2y^*=(y+1)/2y∗=(y+1)/2取值0,10,10,1,p(x)=eF(x)eF(x)+e−F(x)p(x)={e^{F(x)}\over e^{F(x)}+e^{-F(x)}}p(x)=eF(x)+e−F(x)eF(x)​表示y∗=1y^*=1y∗=1的概率。算法3如下图给出:

结论3 LogitBoost算法(两分类,总体分布版本)使用牛顿步骤通过最大似然拟合一个加性对称逻辑模型。
推导 考虑更新F(x)+f(x)F(x)+f(x)F(x)+f(x)以及对数似然期望(用*式的定义展开即可得到)El(F+f)=E[2y∗(F(x)+f(x))−log[1+e2(F(x)+f(x))]]El(F+f)=E\bigg[2y^*(F(x)+f(x))-log[1+e^{2(F(x)+f(x))}]\bigg]El(F+f)=E[2y∗(F(x)+f(x))−log[1+e2(F(x)+f(x))]]调节xxx,计算在f(x)=0f(x)=0f(x)=0处的一阶和二阶偏导s(x)=∂El(F(x)+f(x))∂f(x)∣f(x)=0=2E(y∗−p(x)∣x)\begin{aligned} s(x)&={\partial El(F(x)+f(x))\over \partial f(x)}\bigg |_{f(x)=0}\\ &=2E(y^*-p(x)|x) \end{aligned}s(x)​=∂f(x)∂El(F(x)+f(x))​∣∣∣∣​f(x)=0​=2E(y∗−p(x)∣x)​
H(x)=∂2El(F(x)+f(x))∂2f(x)∣f(x)=0=−4E(p(x)(1−p(x))∣x)\begin{aligned} H(x)&={\partial^2 El(F(x)+f(x))\over \partial ^2f(x)}\bigg |_{f(x)=0}\\ &=-4E(p(x)(1-p(x))|x) \end{aligned}H(x)​=∂2f(x)∂2El(F(x)+f(x))​∣∣∣∣​f(x)=0​=−4E(p(x)(1−p(x))∣x)​则牛顿更新为F(x)←F(x)−H(x)−1s(x)=F(x)+12E(y∗−p(x)∣x)E(p(x)(1−p(x))∣x)=F(x)+12Ew(y∗−p(x)p(x)(1−p(x))∣x)(34)\begin{aligned} F(x)&\leftarrow F(x)-H(x)^{-1}s(x)\\ &=F(x)+{1\over 2}{E(y^*-p(x)|x)\over E(p(x)(1-p(x))|x)}\\ &=F(x)+{1\over 2}E_w\bigg({y^*-p(x)\over p(x)(1-p(x))}\bigg|x\bigg) \end{aligned}\tag{34}F(x)​←F(x)−H(x)−1s(x)=F(x)+21​E(p(x)(1−p(x))∣x)E(y∗−p(x)∣x)​=F(x)+21​Ew​(p(x)(1−p(x))y∗−p(x)​∣∣∣∣​x)​(34)其中w(x)=p(x)(1−p(x))w(x)=p(x)(1-p(x))w(x)=p(x)(1−p(x))。等价的,牛顿更新f(x)f(x)f(x)解决了关于F(x)F(x)F(x)的对数似然的加权最小二乘近似min⁡f(x)Ew(x)(F(x)+12y∗−p(x)p(x)(1−p(x))−(F(x)+f(x)))2\min_{f(x)}E_{w(x)}\bigg(F(x)+{1\over2}{y^*-p(x)\over p(x)(1-p(x))}-(F(x)+f(x))\bigg)^2f(x)min​Ew(x)​(F(x)+21​p(x)(1−p(x))y∗−p(x)​−(F(x)+f(x)))2

当E(⋅∣x)E(\cdot|x)E(⋅∣x)被回归的方法,例如回归树,所取代时这里描述的总体分布算法将立即应用到数据中。虽然权重的作用在总体分布的情况中有些人为,他们不在任何的执行中,当条件在xxx上时w(x)w(x)w(x)是常数,但w(xi)w(x_i)w(xi​)例如在树的终端节点时,取决于当前值F(xi)F(x_i)F(xi​),通常不是常数。

有时w(x)w(x)w(x)在(x)(x)(x)的范围内变得非常小,被F(x)F(x)F(x)认为是纯洁的,即:当p(x)p(x)p(x)?接近0或1。这可能会在zzz的构造中产生数值问题,并导致以下关键的实现保护:

  1. 如果y∗=1y^*=1y∗=1,则把z=((y∗−p)/p(1−p))z=((y^*-p)/p(1-p))z=((y∗−p)/p(1−p))算作1/p1/p1/p。因为若ppp很小这个数可以变得很大,把zmaxz \ maxz max作为这个比例的阈值。为zmaxz \ maxz max选择的特定值并不重要,我们从经验上已经发现了zmax∈[2,4]z \ max\in[2,4]z max∈[2,4]效果最好。相反,若y∗=0y^*=0y∗=0,用−zmax-z \ max−z max一个较小的阈值计算z=−1/(1−p)z=-1/(1-p)z=−1/(1−p)。
  2. 对权重设置较低的阈值:w=max⁡(w,2×machine−zero)w = \max(w, 2 \times machine-zero)w=max(w,2×machine−zero)
4.4 用牛顿步骤最优化Ee−yF(x)Ee^{-yF(x)}Ee−yF(x)

Real Adaboost(算法2)的总体分布版本实际上是在每次迭代中关于fff优化了Eexp(−y(F(x)+f(x)))Eexp(-y(F(x)+f(x)))Eexp(−y(F(x)+f(x)))。在算法4中我们提出了Gentle AdaBoost,相反地,它采用自适应牛顿步骤,很像刚才描述的LogitBoost算法。

结论4 Gentle AdaBoost算法(总体分布版本)使用牛顿步骤来最小化Ee−yF(x)Ee^{-yF(x)}Ee−yF(x)。
推导 ∂J(F(x)+f(x))∂f(x)∣f(x)=0=−E(e−yF(x)y∣x){\partial J(F(x)+f(x))\over \partial f(x)}\bigg |_{f(x)=0}=-E(e^{-yF(x)}y|x) ∂f(x)∂J(F(x)+f(x))​∣∣∣∣​f(x)=0​=−E(e−yF(x)y∣x)∂2J(F(x)+f(x))∂2f(x)∣f(x)=0=E(e−yF(x)∣x)sincey2=1{\partial^2 J(F(x)+f(x))\over \partial ^2f(x)}\bigg |_{f(x)=0}=E(e^{-yF(x)}|x)\ \ since\ \ y^2=1 ∂2f(x)∂2J(F(x)+f(x))​∣∣∣∣​f(x)=0​=E(e−yF(x)∣x)  since  y2=1因此牛顿更新为F(x)←F(x)+E(e−yF(x)y∣x)E(e−yF(x)∣x)=F(x)+Ew(y∣x)\begin{aligned} F(x)&\leftarrow F(x)+{E(e^{-yF(x)y}|x)\over E(e^{-yF(x)}|x)}\\ &=F(x)+E_w\big({y}\big|x\big) \end{aligned}F(x)​←F(x)+E(e−yF(x)∣x)E(e−yF(x)y∣x)​=F(x)+Ew​(y∣∣​x)​其中w(x,y)=e−yF(x)w(x,y)=e^{-yF(x)}w(x,y)=e−yF(x)

它与Real AdaBoost算法的主要区别在于,它如何使用加权的分类概率的估计数来更新函数。这里的更新是fm(x)=Pw(y=1∣x)−Pw(y=−1∣x)f_m(x)=P_w(y=1|x)-P_w(y=-1|x)fm​(x)=Pw​(y=1∣x)−Pw​(y=−1∣x),而不是(24)式:fm(x)=12logPw(y=1∣x)Pw(y=−1∣x)f_m(x)={1\over 2}log{P_w(y=1|x)\over P_w(y=-1|x)}fm​(x)=21​logPw​(y=−1∣x)Pw​(y=1∣x)​中的对数比例的一半。对数比例有可能数值不稳定,导致在比较纯的地方就有非常大的更新,而这里的更新范围在?[−1,1][-1,1][−1,1]之间。经验证据表明(参见第7节),这种更保守的算法与Real AdaBoost和LogitBoost算法具有相似的性能,并且常常优于它们,尤其是在稳定性是个问题时。

Gentle AdaBoost算法和LogitBoost算法的更新有很强的相似性。令P=P(y=1∣x)P=P(y=1|x)P=P(y=1∣x)且p(x)=eF(x)/(eF(x)+e−F(x))p(x)=e^{F(x)}/(e^{F(x)}+e^{-F(x)})p(x)=eF(x)/(eF(x)+e−F(x)),则E(e−yF(x)y∣x)E(e−yF(x)∣x)=e−F(x)P−eF(x)(1−P)e−F(x)P+eF(x)(1−P)=P−p(x)(1−p(x))P+p(x)(1−P)(37)\begin{aligned} {E(e^{-yF(x)}y|x)\over E(e^{-yF(x)}|x)} &= {e^{-F(x)}P-e^{F(x)}(1-P)\over e^{-F(x)}P+e^{F(x)}(1-P)}\\ &={P-p(x)\over (1-p(x))P+p(x)(1-P)} \end{aligned} \tag{37}E(e−yF(x)∣x)E(e−yF(x)y∣x)​​=e−F(x)P+eF(x)(1−P)e−F(x)P−eF(x)(1−P)​=(1−p(x))P+p(x)(1−P)P−p(x)​​(37)(34)中LogitBoost的类似表达式为12P−p(x)p(x)(1−p(x))(38){1\over 2}{P-p(x)\over p(x)(1-p(x))}\tag{38}21​p(x)(1−p(x))P−p(x)​(38)在p(x)≈12p(x)\approx{1\over2}p(x)≈21​处几乎一样,但是他们随着p(x)p(x)p(x)变得极端而变得不同。例如,如果P≈1P\approx{1}P≈1且p(x)≈0p(x)\approx{0}p(x)≈0,(38)式就趋于无穷,然而(37)式接近于1(且几乎总是落在[−1,1][-1,1][−1,1])

多分类过程

下面将探索boosting多分类的扩展。首先提出了二分类对称逻辑变换的一个自然推广,然后讨论了具体的算法。在这种背景下Schapire和Singer(1998)对一个JJJ分类问题定义JJJ回应yjy_jyj​,每个取值为{−1,1}\{-1,1\}{−1,1}。类似地,在统计文献中,带有yj∗y_j^*yj∗​元素的指示响应向量更加标准。假设这些类别是互斥的。

定义1 对JJJ分类问题,令pj(x)=P(yj=1∣x)p_j(x)=P(y_j=1|x)pj​(x)=P(yj​=1∣x)。定义对称多逻辑变换为Fj(x)=logpj(x)−1J∑k=1Jlogpk(x)(39)F_j(x)=log\ p_j(x)-{1\over J}\sum_{k=1}^Jlog\ p_k(x)\tag{39}Fj​(x)=log pj​(x)−J1​k=1∑J​log pk​(x)(39)等价地pj(x)=eFj(x)∑k=1JeFk(x),∑k=1JFk(x)=0(40)p_j(x)={e^{F_j(x)}\over \sum_{k=1}^Je^{F_k(x)}},\ \ \ \ \ \sum_{k=1}^JF_k(x)=0\tag{40}pj​(x)=∑k=1J​eFk​(x)eFj​(x)​,     k=1∑J​Fk​(x)=0(40)

(40)式中的中心化条件仅为数值稳定,它只是把FjF_jFj​固定下来,否则我们可以给每个FjF_jFj​加上一个任意常数而概率保持不变。这两个定义的等价性很容易建立,与二分类情况的等价性一样。

Schapire和Singer(1998)为多分类情况提供了AdaBoost的几个扩展,并参考了其他建议[Freund和Schapire (1997),Schapire (1997)]。我们描述他们的AdaBoost.MH算法(见算法5),因为它似乎在他们的实证研究中占主导地位。然后我们将它与这里展示的模型联系起来。我们将算法5中的增广变量称为“类”变量CCC。我们做了如下观察:

  1. 总体分布版本的这个算法最小化?∑j=1JEe−yjFj(x)\sum_{j=1}^JEe^{-y_jF_j(x)}∑j=1J​Ee−yj​Fj​(x),这相当于在每个通过以明显的方式划分N×JN\times JN×J个样本得到的大小为NNN的JJJ分类问题上,运行单独的总体分布boosting算法。这是可以平凡的看到的,首先令C=jC = jC=j,然后当计算条件的期望时令x∣C=jx|C= jx∣C=j。
  2. 对于基于树的算法也是如此。我们看到这个是因为:
    (a) 如果第一个分划是在CCC上,如果允许的话,可以是JJJ-nary分划,或者是J−1J- 1J−1个二元分划,那么子树与生长到每个JJJ组的独立树是相同的。第一棵树总是这样。
    (b) 如果一棵树在CCC的任何通往一个终端节点的位置都不分裂,那么该节点返回一个函数?fm(x,j)=gm(x)f_m(x,j)=g_m(x)fm​(x,j)=gm​(x),它对于分类决定没有任何帮助。但是,只要树在每个到终端节点的路径上至少包含一次CCC上的分割,它就会对所有输入特征值的分类器做出贡献。

使用类标签作为额外的输入特性来构建大型树的优点或缺点尚不清楚,也没有提供动机。因此,我们实施AdaBoost.MH使用更传统的直接方法构建JJJ个单独的树来最小化∑j=1JEexp(−yjFj(x))\sum_{j=1}^JEexp(-y_jF_j(x))∑j=1J​Eexp(−yj​Fj​(x))

结论5 对JJJ类问题的AdaBoost.MH算法拟合了JJJ个非耦合(uncoupled)的加性逻辑模型,Gj(x)=12logpj(x)/(1−pj(x))G_j(x)={1\over2}log\ p_j(x)/(1-p_j(x))Gj​(x)=21​log pj​(x)/(1−pj​(x)),每个类都和其余类不同。

最主要的是参数化好,因为?Gj(x)G_j(x)Gj​(x)在pj(x)p_j(x)pj​(x)上单调。然而,我们以非耦合的方式估计Gj(x)G_j(x)Gj​(x),并不能保证隐含概率之和为1。我们给出了一些例子来说明这一点,并且AdaBoost.MH的性能比另一种耦合似然方法差。

Schapire和Singer的AdaBoost.MH还打算涵盖观测结果可能属于一个以上类别的情况。MH表示“多标签Hamming”,Hamming损失用于测量2J2^J2J个可能的类标签空间中的误差。在这种情况下,为每个标签分别拟合一个分类器是一种合理的策略。然而,Schapire和Singer也建议在类标签互斥时使用AdaBoost.MH,这是本文的重点。

算法6是算法3拟合JJJ类逻辑回归模型(40)的自然推广。

结论6 LogitBoost算法(JJJ类,总体版本)使用拟牛顿步骤,通过极大似然拟合加性对称逻辑模型。
推导如下:

  1. 首先给出了与标准多对数参数化算法相对应的总体分布牛顿算法的得分和HessianGj(x)=logP(yj∗=1∣x)P(yJ∗=1∣x)G_j(x)=log{P(y_j^*=1|x)\over P(y_J^*=1|x)}Gj​(x)=logP(yJ∗​=1∣x)P(yj∗​=1∣x)​其中GJ(x)=0G_J(x)=0GJ​(x)=0(基类J的选择是任意的)。条件对数似然的期望为E(l(G+g)∣x)=∑j=1J−1E(yj∗∣x)(Gj(x)+gj(x))−log(1+∑k=1J−1eGk(x)+gk(x))sj(x)=E(yj∗−pj(x)∣x),j=1,…,J−1,Hj,k(x)=−pj(x)(δjk−pk(x)),j,k=1,…,J−1E(l(G+g)|x)=\sum_{j=1}^{J-1}E(y_j^*|x)(G_j(x)+g_j(x))-log\bigg(1+\sum_{k=1}^{J-1}e^{G_k(x)+g_k(x)}\bigg)\\ s_j(x)=E(y_j^*-p_j(x)|x),\ j=1,\dots,J-1,\\ H_{j,k}(x)=-p_j(x)(\delta_{jk}-p_k(x)),\ j,k=1,\dots,J-1 E(l(G+g)∣x)=j=1∑J−1​E(yj∗​∣x)(Gj​(x)+gj​(x))−log(1+k=1∑J−1​eGk​(x)+gk​(x))sj​(x)=E(yj∗​−pj​(x)∣x), j=1,…,J−1,Hj,k​(x)=−pj​(x)(δjk​−pk​(x)), j,k=1,…,J−1
  2. 我们的拟牛顿更新相当于使用对Hessian使用对角近似,产生更新:gj(x)←E(yj∗−pj(x)∣x)pj(x)(1−pj(x))g_j(x)\leftarrow {E(y_j^*-p_j(x)|x)\over p_j(x)(1-p_j(x))}gj​(x)←pj​(x)(1−pj​(x))E(yj∗​−pj​(x)∣x)​
  3. 为了变成对称参数化,我们注意到gJ=0g_J=0gJ​=0并令fj(x)=gj(x)−(1/J)∑k=1Jgk(x)f_j(x)=g_j(x)-(1/J)\sum_{k=1}^Jg_k(x)fj​(x)=gj​(x)−(1/J)∑k=1J​gk​(x)。但是,这个过程可以使用任何类作为基,而不仅仅是第JJJ个类。通过对基类的所有选择进行平均,我们得到了更新fj(x)=(J−1J)(E(yj∗−pj(x)∣x)pj(x)(1−pj(x))−1J∑k=1JE(yk∗−pk(x)∣x)pk(x)(1−pk(x)))f_j(x)=\bigg({J-1\over J}\bigg)\bigg({E(y_j^*-p_j(x)|x)\over p_j(x)(1-p_j(x))}-{1\over J}\sum_{k=1}^J{E(y_k^*-p_k(x)|x)\over p_k(x)(1-p_k(x))}\bigg)fj​(x)=(JJ−1​)(pj​(x)(1−pj​(x))E(yj∗​−pj​(x)∣x)​−J1​k=1∑J​pk​(x)(1−pk​(x))E(yk∗​−pk​(x)∣x)​)

对于更严格的参数模型和全牛顿步,这种对称将是多余的。利用拟牛顿步骤和自适应(基于树的)模型,对称化消除了对基类选择的依赖。

6. 模拟研究

在本节中,上面概述的四种boosting方法将应用于几个人工构造的问题。第7节给出了基于实际数据的比较。

在模拟环境中进行比较的一个优点是,每个例子的所有方面都是已知的,包括贝叶斯错误率和决策边界的复杂性。此外,通过对从总体中提取的大量不同的训练和测试数据集进行平均,可以将每种方法所达到的总体预期错误率估计为任意精度。这里比较的四种boosting方法是:

  • DAB: Discrete AdaBoost—Algorithm 1.
  • RAB: Real AdaBoost—Algorithm 2.
  • LB: LogitBoost—Algorithms 3 and 6.
  • GAB: Gentle AdaBoost—Algorithm 4.

DAB、RAB和GAB使用AdaBoost.MH方法处理多个类。
为了区分性能,所有模拟样本都涉及相当复杂的决策边界。所有样本的十个输入特征都是从一个十维标准正态分布x∼N10(0,I)x\sim N^{10}(0,I)x∼N10(0,I)中随机抽取的。在前三个样本中,分隔连续类的决策边界是嵌套的同心十维球体,通过从原点开始对平方半径进行阈值构造r2=∑j=110xj2(41)r^2=\sum_{j=1}^{10}x^2_j\tag{41}r2=j=1∑10​xj2​(41)每个类Ck(1⩽k⩽K)C_k(1\leqslant k\leqslant K)Ck​(1⩽k⩽K)定义为观测集的子集Ck={xi∣tk−1⩽ri2⩽tk}(42)C_k=\{x_i|t_{k-1}\leqslant r^2_i\leqslant t_k\}\tag{42}Ck​={xi​∣tk−1​⩽ri2​⩽tk​}(42)且t0=0,tK=∞t_0=0,\ t_K=\inftyt0​=0, tK​=∞。则为了使得每个类别的观测数量大致相等,需要为每个样本选择{tk}1K−1\{t_k\}^{K-1}_1{tk​}1K−1​。训练样本量为N=K⋅1000N = K\cdot1000N=K⋅1000,每个类大约有1000个训练观测值。每个训练集的错误率由一组10,000个观测值组成的独立抽取的测试集来估计。最终的错误率估计使用这10个独立抽取的训练-测试集组合的平均结果。这些最终估计(平均值)的相应统计不确定性(标准误)在每个图上近似为一条线宽。

图3(左上)比较了在二分类问题K=2K=2K=2中使用只有两个叶结点的决策树分类器(“树桩”)作为基分类器的四种算法。描述了错误率作为boosting迭代次数的函数。上面(黑色)的线表示DAB,另外三条几乎重合的线表示另外三种方法(虚线红色= RAB,短虚线绿色= LB,长虚线蓝色= GAB)。注意DAB有些不稳定,特别是在小于200次迭代时,这不是由于统计不确定性造成的。对于少于400次迭代,LB有一个极小的边缘,在那之后RAB和GAB不相上下。DAB在这里的性能明显较差,在所有迭代中出错率大约是其两倍。

图3(左下)显示了依然是两个叶结点的决策树的三分类K=3K = 3K=3的相应结果。这里的问题更加困难,因为这四种方法的错误率都在增加,但是它们之间的关系大致相同:上面(黑色)的线表示DAB,其他三条几乎重合的线表示另外三种方法。对于更多分类的情况有所不同。图3(右下角)显示了K=5K = 5K=5时的结果,这是K⩾4K \geqslant4K⩾4时的典型结果。与之前一样,DAB的错误率要比其他高得多,RAB和GAB的性能几乎相同。然而,LB相对于RAB和GAB的性能发生了变化。直到40多次迭代时,它具有相同的错误率。从40到大约100次迭代LB的错误率略高于其他两个迭代。经过100次迭代后,LB的错误率继续改进,而RAB和GAB的错误率趋于平稳,下降速度要慢得多。经过800次迭代,LB的错误率为0.19,而RAB和GAB的错误率为0.32。关于LB在这些情况下性能变好的原因推测如下。

在上面的例子中,决策树桩被用作基分类器。人们可能认为使用较大的树可以更好地解决这些相当复杂的问题。图3(右上角)显示了这个两类问题的结果,这里使用8个终端节点来提升树。这些结果可以与图3(左上角)中树桩的结果进行比较。最初,对于所有方法,在每次连续迭代中,提升8个节点树的错误率比树桩的错误率下降得快得多。然而,在大约100次迭代之后,错误率很快稳定下来,并且改进非常缓慢。DAB的整体性能随着树的增大而提高,与其他三种方法的性能相近。与之前一样,RAB、GAB和LB表现出几乎相同的性能。注意,在每个迭代中,八节点树模型由四倍于相应树桩模型的加法项组成。这就是为什么在早期迭代中错误率下降得更快的原因。在模型复杂度(和训练时间)方面,一个使用8个终端节点树的100次迭代模型相当于一个400次迭代的树桩模型。

对比图3中的上两个图,我们可以看到,在800次迭代中,使用较大的树(0.072)的RAB、GAB和LB的错误率实际上比树桩(0.054)高出33%,尽管前者要复杂四倍。通过研究分隔类的决策边界的性质,可以很容易地理解这种看似神秘的行为。两个类之间的贝叶斯决策边界为集合{x:logP(y=1∣x)P(y=−1∣x)=0}\bigg\{x:log{P(y=1|x)\over P(y=-1|x)}=0\bigg\}{x:logP(y=−1∣x)P(y=1∣x)​=0}或简单地{x:B(x)=0}\{x:B(x)= 0\}{x:B(x)=0}。为了近似这个集合,尽可能近地估计logitB(x)B(x)B(x)或任何B(x)B(x)B(x)的单调变换是充分的。如上所述,boosting生成一个可加性逻辑模型,其组成函数由基分类器表示。以树桩为基分类器,每个分量函数都有这样的形式fm(x)=cmL1[xj⩽tm]+cmR1[xj>tm]=fm(xj)\begin{aligned} f_m(x)&=c_m^L1_{[x_j\leqslant t_m]}+c_m^R1_{[x_j>t_m]}\\ &=f_m(x_j) \end{aligned}fm​(x)​=cmL​1[xj​⩽tm​]​+cmR​1[xj​>tm​]​=fm​(xj​)​如果第mmm个树桩选择在坐标jjj上进行分割,这里tmt_mtm​为分割点,cmLc_m^LcmL​和cmRc_m^RcmR​为左右端节点对应的加权平均值。因此,通过提升树桩产生的模型在原始特征中是加性的F(x)=∑j=1pgj(xj)(46)F(x)=\sum_{j=1}^pg_j(x_j)\tag{46}F(x)=j=1∑p​gj​(xj​)(46)其中gj(xj)g_j(x_j)gj​(xj​)把所有的包括xjx_jxj​的树桩加和起来(且若空值为0)。

(41)和(42)表明上面样本的最优决策边界也在原来的特性中是加性的,且fj(xj)=xj2+constantf_j(x_j)=x_j^2+constantfj​(xj​)=xj2​+constant。因此,在决策树中,树桩与这些问题是理想的匹配,不需要更大的树。然而,在这种情况下,如果每棵单独的树的所有划分都在同一个预测变量上,那么提升较大的树并不会产生相反的效果。这也将在原始特性中产生一个加性模型(46)。但是,由于boosting采用的是前向贪婪分步策略,当决策边界函数包含多个预测器时,这种情况不太可能发生,每棵树都将尽力包含所有重要的预测因子。由于决策树的性质,这将产生具有交互作用的模型,模型中的大多数项将包含不止一个变量内容。这样的非加性模型不太适合近似真正的加性决策边界,如(41)和(42)。这反映在图3中观察到的错误率增加上。

上述讨论还表明,如果分隔类别的决策边界在预测器中本质上是非加性的,那么增加树桩将比使用较大的树更不利。mmm个终端节点的树可以产生最大的交互阶数为min⁡(m−1,p)\min(m-1,p)min(m−1,p)的基函数?,其中ppp是预测特征的数量。这些高阶基函数提供了可能更准确地估计这些有高阶交互作用的决策边界B(x)B(x)B(x)。下一个样本的目的是验证这种直觉。有二分类?K=2K=2K=2和5000个训练样本记为{x}15000\{x\}_1^{5000}{x}15000​,他们与前面的例子一样来自十维的正态分布。类标签以对数几率随机分配到每个样本log(Pr[y=1∣x]Pr[y=−1∣x])=10∑j=16xj(1+∑l=16(−1)lxl)log\bigg({Pr[y=1|x]\over Pr[y=-1|x]}\bigg)=10\sum_{j=1}^6x_j\bigg(1+\sum_{l=1}^6(-1)^lx_l\bigg)log(Pr[y=−1∣x]Pr[y=1∣x]​)=10j=1∑6​xj​(1+l=1∑6​(−1)lxl​)

这两个类中的每一个都分配了大约相同数量的观测值,贝叶斯错误率为0.046。该问题的决策边界是一个复杂的函数,它由前六个预测变量组成,每一个预测变量都有强度相同的二阶交互。在上面的例子中,使用10,000个观察值的测试集来估计每个训练集的错误率,最终的估计是取10次重复的平均值。

图4(左上角)显示了测试错误率作为使用树桩的四种boosting方法的迭代次数的函数。正如在前面的例子中,RAB和GAB靠得非常紧密。DAB的开始非常缓慢,直到大约180次迭代时,DAB才被其他所有控制,并在RAB和GAB下面通过。LB占主导地位,在大约650次迭代之前错误率最低。在这一点上DAB赶上来,经过800次迭代,它可能会有一个非常微弱的边缘。然而,这些boosting方法都不能很好地解决这个问题,最佳错误率为0.35。

图4(右上角)显示了四个终端节点树增强时的对应图。这四种方法都有显著的改进。这是第一次在RAB和GAB之间有一些小的区别。在几乎所有的迭代中,性能排名都是LB最佳,其次是GAB、RAB和DAB。在800次迭代时,LB达到0.134的错误率。图4(左下角)显示了增强8个终端节点树时的结果。在这里,错误率一般会进一步降低,LB的改进最小(0.130),但仍然占主导地位。另外三种方法的性能等级随着迭代次数的增加而变化,DAB在约150次迭代时超过RAB, GAB在约230次迭代时接近LB,迭代次数为800次,错误率为0.138。

虽然这些模拟研究的范围有限,但它们表明了几个趋势。他们解释了为什么有时提升树桩比使用更大的树更好,并提出了可能出现这种情况的情况,即当决策边界B(x)B(x)B(x)可以用在原本的预测特征中就是加性的函数来很好的近似。当需要更高阶的交互时,树桩表现出较差的性能。这些例子说明了RAB和GAB之间的相似性。在所有情况下,当使用更大的树和更多的迭代时,DAB与其他树的性能差异会减小,有时会超过其他树。更一般地说,这四种方法的相对性能取决于决策边界的性质、基分类器的复杂性和增强迭代的次数。

图3(右下角)中LB的优越性能似乎是多分类逻辑模型(算法6)的结果,其他所有方法都使用非对称AdaBoost.MH策略(算法5),这种策略针对集合的池化的补类,为每个单独的类构建单独的二分类模型。即使分离所有类别对的决策边界相对简单,池化类也会产生难以近似的复杂决策边界[Friedman(1996)]。通过同时考虑所有类,对称多分类模型能够更好地利用存在的简单两两边界[Hastie and Tibshirani(1998)]。如上所述,在加法建模的上下文中,由(41)和(42)引起的成对边界比较简单,而池化边界则比较复杂,它们不能很好地用原预测变量中加性函数来近似。

与这些例子相关的决策边界被有意地选择为几何复杂的,以便在被测试的方法之间引起性能差异。这种复杂的边界在实践中不太可能经常发生。许多实际问题涉及相对简单的边界[Holte (1993)],在这种情况下,性能差异仍将视情况而定,但相应地不那么明显。

7. 真实数据实验

在本节中,我们展示了在加州大学欧文分校机器学习档案库的数据集以及一个流行的模拟数据集中运行四种拟合方法的结果:LogitBoost、Discrete AdaBoost、Real AdaBoost和Gentle AdaBoost。基本学习器在每种情况下都是一棵树,有两个或八个终端节点。对于比较,我们还拟合了一个决策树(使用Splus中的树函数),树的大小由5折交叉验证确定。

表1总结了这些数据集。对于较小的数据集,测试错误率如表2所示,对于较大的数据集,测试错误率如表3所示。vowel、sonar、satimage和letter数据集附带一个预先指定的测试集。waveform数据是模拟的,如Breiman、Friedman、Olshen和Stone(1984)所述。对其他的采用5折交叉验证法估计测试误差。

在小数据集中很难看出趋势(表2),因为除了相当大的性能观察差异外,所有的性能差异都可以归因于采样波动。在vowel、breast cancer、ionosphere、sonar和waveform数据上,纯加性树桩模型的性能似乎与较大的(8个节点)树相当。glass数据似乎从较大的树木中获益。在提高性能方面,各种boosting方法之间没有明显的差别。

对于较大的数据集(表3),可以看出更清晰的趋势。对于satimage数据,八节点树模型只比单纯的加性模型稍微、但显著地更精确。对于letter数据没有异议,只是提升树桩显然是不够的。八节点树的boosting方法之间没有明显的区别。对于树桩,LogitBoost、Real AdaBoost和Gentle AdaBoost具有相当的性能,明显优于Discrete AdaBoost。这与模拟研究的结果(第6节)一致。

除了Discrete AdaBoost之外,实际的数据样本可能无法说明各种boosting方法之间的性能差异。这与第6节的模拟数据集形成对比。在那里,LogitBoost总体上占主导地位,尽管通常只占很小的优势。真实数据样本无法区分可能反映出统计上难以估计小样本之间的细微差别。或者,它们的基本决策边界都相对简单[Holte(1993)],因此所有合理的方法都表现出相似的性能。

8. 加性逻辑树

在大多数boosting的应用中,基分类器被认为是一个初等的、且随着迭代的进行boosting过程会反复调用的基分类器。基分类器执行的操作与给定相同数据和权重的任何其他上下文中执行的操作相同。事实上我们没有考虑,最终的模型将是一个线性组合的大量这样的分类器。特别是在使用决策树时,通常使用相同的树生长和修剪算法。有时候,为了编程的方便和速度,需要进行一些修改(比如不进行修剪)。

然而,当从加法模型的角度来看boosting时,这种贪婪的方法在许多情况下都远远不是最优的。在第六节讨论最终的分类器的目标是产生一个精确的近似决定边界函数?B(x)B(x)B(x)。在boosting中,这个目标适用于最终的加法模型,而不适用于构建时的单项(基本分类器)。例如,在第六节如果?B(x)B(x)B(x)接近在原本的预测特征中的加性,那么boosting树桩是最佳的,因为它产生一个近似相同的结构。构建更大的树增加了最终模型的错误率,因为最终的近似涉及到特征之间的高阶交互。较大的树优化了单个基本分类器的错误率,给定了该步骤的权重,甚至在早期阶段产生了较低的未加权错误率。但是,经过足够多的改进之后,基于树桩的模型获得了更好的性能。

更一般地,可以考虑在函数的方差分析分解中扩展决策边界函数[Friedman (1991)]B(x)=∑jfj(xj)+∑j,kfjk(xj,xk)+∑j,k,lfjkl(xj,xk,xl)+…B(x)=\sum_jf_j(x_j)+\sum_{j,k}f_{jk}(x_j,x_k)+\sum_{j,k,l}f_{jkl}(x_j,x_k,x_l)+\dotsB(x)=j∑​fj​(xj​)+j,k∑​fjk​(xj​,xk​)+j,k,l∑​fjkl​(xj​,xk​,xl​)+…

第一个总和表示在原本的特征中是加性的最接近B(x)B(x)B(x)的函数,前两个代表包含最多两个特征的交互的最接近的近似,前三个代表包含最多三个特征的交互的,等等。如果这样的扩张可以精确地近似B(x)B(x)B(x)?,截断在低交互阶数,那么允许基分类器产生高阶相互作用将会减少最终提升模型的准确性。在决策树的中,更深层次的树产生更高阶的交互。

在真正的潜在决定边界函数服从一个低阶方差分析分解的情况下,可以利用这种结构通过限制基决策树的深度不大于的实际B(x)B(x)B(x)的交互阶数来提高精度。由于这对于任何特定的问题都不太可能预先知道,所以这个最大深度就成为一些模型选择技术(例如交叉验证)要估计的过程的“超参数”。

我们可以使用标准的剪枝过程来限制诱导决策树的深度,从可能的最大树开始,但是需要它删除足够的分割以达到所需的最大深度。当这个深度很小时,这可能会造成计算上的浪费。在修剪之前,构建树所需的时间与可能的最大树的深度成正比。因此,只需在最大深度处停止生长进程,或者在最大终端节点数处停止增长进程,就可以实现显著的计算节省。支持种植大树然后修剪的标准启发式参数不适用于boosting。任何一棵树的缺点都可以通过后续的boosting序列来弥补。

如果要使用基于终端节点数量的截断策略,则需要定义分裂发生的顺序。我们采用“最佳优先”的策略。计算每个当前终端节点的最优分割。在树的构建标准中,哪个节点的分割能够达到最大的缩减,那么这个节点就会被实际分割。这将使终端节点的数量增加1。这将一直持续到诱导出最大MMM个终端结点为止。可以使用标准的计算技巧,以便按照这种顺序诱导树不需要比决策树归纳中常用的其他顺序更多的计算。

限MMM的截断适用于boosting序列中的所有树。因此,它是整个boosting过程的超参数。通过标准的模型选择技术,如最小化最终boosting模型的交叉验证错误率,可以估计最优值。我们将这种截断的最佳优先树与boosting的组合称为“加性逻辑树”(ALT)。在所有的模拟和实际样本中都使用了最佳优先树。可以将后者(表2和表3)的结果与Dietterich[(1998),表1]在公共数据集上报告的相应结果进行比较。通过使用非常小的截断值的ALT实现的错误率与在每个增强步骤中使用大得多的树的其他委员会方法相比非常好。即使错误率相同,在数据挖掘中,与ALT相关的计算节省也是非常重要的,因为大型数据集会导致计算时间成为一个问题。

低阶近似的另一个优点是模型可视化。特别是用输入特征(46)构成的加性模型,每个特性xjx_jxj​的贡献可以被视为一个对xjx_jxj​绘制的图gj(xj)g_j(x_j)gj​(xj​)。图5显示了图3中两类嵌套球体样本的十个特性。第一类别的函数集中在原点附近,另一个类别对应的函数是这些函数的负数。

图5中的图表清楚地显示,每个单独特征的对数几率的贡献大约是二次的,这与生成模型(41)和(42)相匹配。

当有两个以上的类时,可以为每个类绘制类似于图5的图,并进行类比解释。高阶交互模型更难以可视化。如果存在最多两个特征的交互,则可以使用等高线或透视网格图来可视化两个变量的贡献。除了两个特征的交互之外,可视化技术的效率更低。即使当非交互(树桩)模型不能达到最高的精度时,由于结果模型的可解释性,它们也可以作为描述性统计非常有用。

9. 权重削减

在本节中,作者提出了一个简单的想法,并证明了它可以在不牺牲精度的前提下,显著地减少增强模型的计算量。尽管这种方法表面上很简单,但似乎没有得到普遍使用(虽然以前也提出过类似的想法Schapire (1990),Freund(1995))。在每个boosting迭代中,训练样本上都有一个权重分布。随着迭代的进行,这个分布趋向于向更小的权重值严重偏向。随着置信度的增加,训练样本中更大的部分被正确分类,从而获得更小的权重。相对权重很低的观测值对基分类器的训练影响不大,只有那些在权重质量中占主导地位的才有影响力。在以后的迭代中,这种高权重观测的比例会变得非常小。这表明,在任何迭代中,我们都可以简单地从训练样本中删除大量的低权重观测值,而不会对最终的诱导分类器产生太大影响。然而,不管权重如何,计算量都与训练样本的大小成正比,因此计算量会减少。

在每个boosting迭代,权重wiw_iwi​小于阈值wi<t(β)w_i<t(\beta)wi​<t(β)的训练样本不用来训练分类器。取t(β)t(\beta)t(β)为在对应迭代中训练数据上权重分布的第β\betaβ个分位数。也就是说,只有那些占总权重1−β1-\beta1−β比例的样本才用于训练。通常β∈[0.01,0.1]\beta\in[0.01,0.1]β∈[0.01,0.1],?这样用于训练的数据携带90至99%的总权重质量。注意,所有训练样本的权重都在每次迭代中重新计算。因此,如果在特定迭代中删除的样本的权重随后相对于其他样本增加,则它们可能在以后的迭代中重新进入。

图6(左)显示了第7节中描述的字母识别问题的测试错误率作为迭代次数的函数,这里使用Gentle AdaBoost和8个节点的树作为基分类器。给出了两种错误率曲线。黑色实线代表在每个迭代充分利用训练样本?β=0\beta=0β=0,而红色(这里论文写错了写成蓝色了)虚线代表相应的β=0.1\beta=0.1β=0.1的错误率。这两条曲线彼此非常接近,特别是在后面的迭代中。图6(右)显示了用于训练基分类器的样本的对应比例,它是迭代次数的函数。这两条曲线不相似。β=0.1\beta=0.1β=0.1时用于训练的样本数量迅速下降,在20次迭代时达到总数的大约5%。经过50次迭代后,在整个boosting过程的其余部分中,它只占3%左右。因此,计算量减少了30倍以上,分类精度没有明显的损失。样本大小在β=0\beta=0β=0时经过150次迭代后下降的原因是,如果所有的对一个特定的类分类正确的样本有很高的信心[Fk>15+log(N)][F_k > 15 +log(N)][Fk​>15+log(N)],则对该类就停止训练,只继续剩下类。在400次迭代中,原来的26个类中有12个类保留了下来。

表3中最后一列标记为fraction的字母识别问题显示了用于所有的boosting方法和树大小的在200次迭代中用于训练基分类器的样本的平均比例。对于8个节点的树,所有方法如图6所示。对于树桩、LogitBoost使用的数据比其他的要少得多,因此也相应地更快。

这是LogitBoost的一个真正的性质,有时它在权重削减上有优势。与其他方法不同的是,LogitBoost权重wi=pi(1−pi)w_i=p_i(1-p_i)wi​=pi​(1−pi​)不以任何方式涉及到类输出yiy_iyi​,他们只是衡量接近当前估计的决策边界FM(x)=0F_M(x)=0FM​(x)=0。因此,丢弃小的权重只保留那些估计接近边界的训练样本。对于其他三个过程中的权重关于−yiFM(xi)-y_iF_M(x_i)−yi​FM​(xi​)是单调的,这给目前错误分类的训练样本,特别是那些远离边界的训练样本提供了最高的权重。如果经过削减后,剩余的样本比例小于错误率,那么传递给基学习器的子样本将非常不平衡,包含很少正确分类的样本。这种不平衡似乎抑制了学习。LogitBoost没有出现这种不平衡,因为在决策边界附近,正确和错误分类的样本大致相同。

正如这个例子所示,通过这个简单的技巧可以大大减少boosting的计算量。其他各种样本(未显示)在所有boosting方法中都表现出类似的行为。请注意,其他委员会的分类方法,如bagging [Breiman(1996)]和随机树[Dietterich(1998)]虽然允许并行实现,但不能利用这种方法来减少计算。

10. boosting的进一步推广

我们已经证明AdaBoost符合一个加法模型,通过自适应牛顿法优化了一个类似于二项对数似然的准则。这就提出了一种方法,可以将boosting式算法推广。首先,可以用梯度步来代替牛顿步,从而减慢拟合过程。这可以减少对过度拟合的敏感性,从而提高性能。其次,任何平滑损失函数都可以使用:对于回归,平方误差是自然的,导致了介绍中提到的“残差拟合”boosting算法。然而,其他损失函数可能有好处,例如,基于Huber的鲁棒影响函数的渐近平方误差[Huber(1964)]。所得到的程序是一种快速、方便地拟合加性模型的方法。这些概括的细节可以在Friedman(1999)中找到。

11. 结束语

为了从统计学上理解一个学习过程,有必要确定两个重要方面:结构模型和误差模型。前者是最重要的,因为它决定了逼近器的函数空间,从而描述了可以用它精确逼近的函数类或假设。误差模型指定了从结构模型中采样的数据的随机采样的分布。从而确定了结构模型估计的优化准则。

我们已经证明了boosting的结构模型在逻辑尺度上是加性的,基学习器提供了加法组件。这一认识本身就解释了boosting的许多特性。毫无疑问,大量这样的(联合优化的)组件定义了一个比单独一个更丰富的学习器类别。研究结果表明,在boosting中,所有的基学习器都是不等价的,也没有针对所有情况的最佳选择。如第6节所示,需要选择基学习器以便最终的加性扩展与所遇到的特定决策边界相匹配。即使在限制的增强决策树中,交互阶数(以终端节点的数量为特征)也需要谨慎选择。由决策树桩诱导的纯加性模型有时是最好的,但并不总是最好的。然而,我们认为在实践中很少会遇到涉及到非常高阶交互的边界。这激发了我们在第8节中描述的加性逻辑树(ALT)的程序。

二分类boosting的误差模型是二元变量中最明显的误差模型,即伯努利分布。结果表明,Adaboost方法使与期望对数-伯努利似然密切相关的准则达到最优,并且在无穷数据的分布(L2)极限上具有相同的解。我们推导了一个更直接的过程来最大化这个对数似然(LogitBoost),并证明了它具有几乎与Real AdaBoost相同的属性。

在多分类情况下,AdaBoost过程最大化了每个类相对于其他类的独立的伯努利似然。这是一个自然的选择,尤其适用于样本可以属于一个以上的类别[Schapire and Singer(1998)]。在对每个观测值设置唯一类标号的这种更常见情况下,对称多项式分布是更合适的误差模型。本文提出了一种利用拟牛顿步法最大化相应的对数似然的多分类LogitBoost过程。我们通过模拟实例表明,尽管在用于演示的实际数据示例集中似乎没有遇到这些情况,但在某些设置中,这种方法可以获得更好的性能,在这些例子中,两种方法的性能表现非常相似。

本文提出的概念表明(确定性的)加权boosting与其他(随机的)集成方法(如bagging [Breiman(1996)]和随机树[Dietterich(1998)]之间几乎没有联系。在最小二乘回归的语言中,后者是纯粹的“方差”减少过程,旨在减轻不稳定性,特别是与决策树相关的不稳定性。另一方面,boosting似乎有着根本的不同。它似乎主要是一个“偏差”减少过程,旨在通过将稳定的(高偏差的)弱学习器合并到一个联合拟合的加性扩展中来提高他们的灵活性。

当用有限加权随机抽样代替加权优化来实现boosting时,这种区别就不那么明显了[Breiman (1998a)]。通过抽取有限样本将随机化引入boosting的优缺点尚不清楚。如果随机化在某些情况下具有优势,那么随机化的程度,如样本大小所反映的,是一个开放的问题。在所有(或任何)情况下,使用原始训练样本大小的常见选择是否最优并不明显。

本文没有涉及的一个有趣的问题是,无论如何似乎都不会过拟合。一些可能的解释是:

  1. 随着LogitBoost迭代的进行,由fm(x)f_m(x)fm​(x)引入的变化的总体影响会降低。只有具有明显权重的样本才能确定新的函数—那些靠近决策边界的函数。由定义,这些样本有接近于零的F(x)F(x)F(x)而且可以受到变化的影响,而纯粹的范围有较大的?∣F(x)∣|F(x)|∣F(x)∣值且??不太可能被修改。
  2. boosting算法的分步特性不允许参数的完全匹配,因此其方差远低于完全参数化的建议。在计算学习理论的文献中,这是用集合的VC维来解释的,而不是用每个弱学习器的VC维来解释。
  3. 与其他函数估计器相比,过拟合对分类器的伤害较小。(例如著名的1最近邻分类器的风险界,Cover和Hart(1967))。

图7显示了一个boosting过拟合的例子。数据由两个具有相同均值的十维球面高斯函数生成,并选择方差使得贝叶斯错误率为25%(每个类400个样本)。我们使用了Real AdaBoost和树桩(所有的增强算法的结果都是相似的)。在大约50次迭代之后,测试误差(缓慢地)增加。

Schapire, Freund, Bartlett和Lee(1998)认为AdaBoost的特性,包括它对过拟合的抵抗能力,可以通过分类边界来理解。然而,Breiman(1997)提出了与这种解释相反的证据。无论解释是什么,经验证据都是强有力的,Schapire, Freund和他的同事带来的boosting的介绍,带来了一系列令人兴奋和重要的新想法。

参考资料

Friedman, Jerome, T. Hastie, and R. Tibshirani. “Special Invited Paper. Additive Logistic Regression: A Statistical View of Boosting.” Annals of Statistics 28.2(2000):337-374.

集成学习—Adaboost加性模型(论文研读)相关推荐

  1. 集成学习—Adaboost(论文研读)

    这篇博客主要是对Adaboost算法的论文精度,包括翻译以及自己的一些基本理解,如果对原论文不感兴趣,只是想快速理解与应用,可以参考另外一篇集成学习-Adaboost(理解与应用) Adaboost是 ...

  2. 论文阅读_广义加性模型_GAMs

    英文题目:Intelligible Models for Classification and Regression 中文题目:可理解的分类和回归模型 论文地址:https://www.doc88.c ...

  3. ESL第十章 提升和加性树 AdaBoost、向前分段【加性模型】、指数损失合理性、边缘/鲁棒性/平方合页损失/M回归、长尾偏度/现成方法、GBDT、方差分析、随机梯度提升、相对重要性/偏相依图

    目录 10.1 提升(Boosting)方法 10.2 Boosting拟合加性模型 10.3 前向分段加性模型 10.4 指数损失和AdaBoost 10.5 为什么是指数损失 10.6 损失函数和 ...

  4. R语言使用mgcv包中的gam函数拟合广义加性模型(Generalized Additive Model,GAMs):从广义加性模型GAM中抽取学习到的样条函数(spline function)

    R语言使用mgcv包中的gam函数拟合广义加性模型(Generalized Additive Model,GAMs):从广义加性模型GAM中抽取学习到的样条函数(spline function) 目录

  5. 集成学习—Adaboost(理解与应用)

    在上一篇集成学习-Adaboost(论文研读)中已经将Adaboost的原始论文精读了一遍,这篇博客主要是对Adaboost算法(主要是二分类的Adaboost)进行更深入的理解和推导,以及尝试下关于 ...

  6. 广义加性模型和树模型

    广义加性模型 传统线性模型所面临的问题: 在现实生活中,变量的作用通常不是线性的. 广义加性模型是一种自由灵活的统计模型,它可以用来探测到非线性回归的影响.模型如下: E(Y|X1,...,Xp)=α ...

  7. R语言广义加性模型(GAMs:Generalized Additive Model)建模:数据加载、划分数据、并分别构建线性回归模型和广义线性加性模型GAMs、并比较线性模型和GAMs模型的性能

    R语言广义加性模型(GAMs:Generalized Additive Model)建模:数据加载.划分数据.并分别构建线性回归模型和广义线性加性模型GAMs.并比较线性模型和GAMs模型的性能 目录

  8. R语言广义加性模型GAMs:可视化每个变量的样条函数、样条函数与变量与目标变量之间的平滑曲线比较、并进行多变量的归一化比较、测试广义线性加性模型GAMs在测试集上的表现(防止过拟合)

    R语言广义加性模型GAMs:可视化每个变量的样条函数.样条函数与变量与目标变量之间的平滑曲线比较.并进行多变量的归一化比较.测试广义线性加性模型GAMs在测试集上的表现(防止过拟合) 目录

  9. R语言广义加性模型(generalized additive models,GAMs):使用广义线性加性模型GAMs构建logistic回归

    R语言广义加性模型(generalized additive models,GAMs):使用广义线性加性模型GAMs构建logistic回归 目录

最新文章

  1. 农民工上网求职事半功倍
  2. 微信在诺基亚手机登录服务器繁忙,马化腾正式宣布:禁止在该手机上登录QQ和微信?网友:诺基亚再见...
  3. 【福利派送】浪漫七夕,不可辜负!这 8 份礼物请收下!
  4. Hadoop 04_Hadoop2.0
  5. 推荐neter常用优秀开源项目系列之一
  6. python 定义变量_用python解决动态的定义变量名(并给其赋值方法:大数据处理)...
  7. Application.Goto 方法
  8. Java异常处理课后作业
  9. Hadoop HIVE 条件控制函数
  10. C# list集合 重复元素 索引_Python列表(List)
  11. 用LaTeX输出离散数学符号表
  12. geoserver服务发布矢量地图流程
  13. 政府大数据资源中心建设总体方案 PPT
  14. 【毕业设计】STM32智能药箱系统 - 单片机 嵌入式 物联网
  15. 一学就会的 WordPress 实战课
  16. STM32-USB学习系列(一) :USB与USB库的介绍
  17. python 传奇辅助_制作游戏辅助:使用函数窗口处理验证码
  18. 个人对于区块链技术的理解
  19. SVN插件 for VS--VisualSVN
  20. GPIO 配置之ODR, BSRR, BRR 详解

热门文章

  1. python global nonlocal
  2. 【转】JMeter学习(二十八)内存溢出解决方法
  3. ERROR 1045 (28000): Access denied for user 'username'@'localhost' (using password: YES)
  4. 好消息,scott的asp.net 2.0数据导航系列全部出版了
  5. Flex beta2+XFire开发实例
  6. 单双号限行,今天是否绿色出行
  7. BZOJ4199 NOI2015品酒大会(后缀树)
  8. Oracle数据安全解决方案(1)——透明数据加密TDE
  9. mysql 常用命令
  10. MSSQLServer基础07(事务,存储过程,分页的存储过程,触发器)