集成学习

Posted xcxy-boke

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集成学习相关的知识,希望对你有一定的参考价值。

集成学习通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统。如下图显示出集成学习的一般结构:先产生一组“个体学习器”,再用某种策略将它们结合起来,个体学习器通常由一个现有的学习算法从训练数据中产生,例如C4.5决策树算法,BP神经网络等。个体学习器可以是相同的类型的学习器也可以是不同类型的,相同类型的称为“基学习器”,不同的称为“组件学习器”或者“个体学习器”。

技术图片

集成学习通过将多个学习器进行结合,常可获得单一学习器显著优越的泛化性能,这对“弱学习器”(泛化性能略高于随机猜测的学习器)尤为明显,因此集成学习的很多理论都是针对弱学习器进行的。

例如在一个二分类任务中,假定三个分类器在三个测试样本上的表现如下图,其中$\\surd$表示分类正确,$\\times $表示分类错误,集成学习通过“少数服从多数”的原则来产生结果。这个简单的例子显示出:要获得好的集成,个体学习器应“好而不同”,即个体学习器要一定的“准确性”,即学习器不能太坏,并且要有“多样性”,即学习器间应具有差异。

技术图片

考虑二分类的问题$y\\in\\-1,+1\\$和真实函数$f$,假定基分类器的错误率为$\\epsilon$,即对每个基分类器$h_i$有

  $P(h_i\\neq f(x))=\\epsilon$

假设集成通过简单投票法结合T个基分类器,若有超过半数的基分类器正确,则集成分类就正确:

  $H(x)=sign(\\sum_i=1^Th_i(x))$

假设基分类器的错误率相对独立,则由$Hoeffding$不等式可知,集成的错误率为:

  $P(H(x)\\neq f(x))=\\sum_k=0^|T/2|\\binomTk(1-\\epsilon)^k\\epsilon^T-k\\leq  exp(-\\frac12T(1-2\\epsilon)^2)$

上式显示出,随着集成中个体分类器数目T的增大,集成的错误率将指数级下降,最终趋于0。

上面的假设是个体分类器中时相对独立的,在现实任务中,个体学习器是为解决同一个问题训练出来的,它们显然不可能独立。事实上,个体学习器的“准确性”和“多样性”本身就存在冲突。

根据个体学习器的生成方式,目前的集成学习方法大致可以分为2大类,即个体学习器间存在强依赖关系,必须串行生成的序列化方法,以及个体学习器间不存在强依赖关系、可同时生成的并行化方法,前者的代表是$Boosting$,后者的代表是$Bagging$和“随机森林”。

 

Boosting:

是一族可将弱学习器提升为强学习器的算法,这族算法的工作机制类似:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后j基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。

AdaBoost(基学习器的线性组合,二分类问题):

  $H(x)=\\sum_t=1^Ta_th_t(x)$

来最小化指数损失函数:

  $\\iota_exp (H|D)=E_x\\sim D[e^-f(x)H(x)]$

  技术图片

 

若$H(x)$能令指数损失函数最小化,则考虑损失函数对$H(x)$求偏导($f(x)\\in \\-1,+1\\$):

  $\\frac\\partial \\iota_exp (H|D)\\partial H(x)=-e^-H(x)P(f(x)=1|x)+e^H(x)P(f(x)=-1|x)$

令上式等于零:

  $H(x)=\\frac12ln\\fracP(f(x)=1|x)P(f(x)=-1|x)$

因此有:

  $sign(H(x))=sign(\\frac12ln\\fracP(f(x)=1|x)P(f(x)=-1|x))$

  $=\\left\\\\beginmatrix1,P(f(x)=1|x) > P(f(x)=-1|x)\\\\ -1,P(f(x)=1|x) < P(f(x)=-1|x)\\endmatrix\\right.$

  $=\\undersety \\in \\-1,+1\\arg\\ max\\ P(f(x)=y|x)$

这意味着$sign(H(x))$达到了贝叶斯最优的错误率,即指数损失函数和0/1损失函数是等价的。指数损失函数可以代替0/1损失函数,它具有更好的数学性质(连续可微的)

 

在AdaBoost算法中,第一个基分类器$h_1$是通过直接将基学习器算法用于初始数据分布而得,此后迭代的生成$h_t$和$a_t$,当基分类器$h_t$基于分布$D_t$产生后,该基分类器的权重$a_t$应使得$a_th_t$最小化指数损失函数:

  $\\iota_exp(a_th_t|D_t)=E_x\\sim D_t[e^-f(x)a_th_t]$

  $=E_x\\sim D_t[e^-a_t\\mathbbI(f(x)=h_t(x))+e^a_t\\mathbbI(f(x)\\neq h_t(x))]$

  $=e^-a_t(1-\\epsilon_t)+e^a_t\\epsilon_t$

考虑指数损失函数的导数:

  $\\frac\\partial \\iota_exp(a_th_t|D_t)\\partial a_t=-e^-a_t(1-\\epsilon_t)+e^a_t\\epsilon_t$

令上式等于零:

  $a_t=\\frac12ln(\\frac1-\\epsilon_t\\epsilon_t)$

这就是Adaboost的权重迭代公式。

 

Adaboost算法在获得$H_t-1$之后样本分布将进行调整,使下一轮的基学习器$h_t$能纠正$H_t-1$的一些错误,理想的$h_t$能纠正$H_t-1$的全部错误,即最小化:  

  $\\iota_exp(H_t-1+h_t|D)=E_x\\sim D[e^-f(x)(H_t-1(x)+h_t(x))]=E_x\\sim D[e^-f(x)H_t-1(x)e^-f(x)h_t(x)]$

注意到$f^2(x)=h_t^2(x)=1$,则$e^-f(x)h_t(x)$泰勒展开:

  $\\iota_exp(H_t-1+h_t|D)\\simeq E_x\\sim D[e^-f(x)H_t-1(x)(1-f(x)h_t(x)+\\fracf^2(x)h_t^2(x)2)]$

  $=E_x\\sim D[e^-f(x)H_t-1(x)(1-f(x)h_t(x)+\\frac12)]$

于是理想的基学习器是:

  $h_t(x)=\\undersetharg\\ min\\ \\iota_exp(H_t-1+h_t|D)$

  $=\\undersetharg\\ min\\ E_x\\sim D[e^-f(x)H_t-1(x)(1-f(x)h_t(x)+\\frac12)]$

  $=\\undersetharg\\ max\\ E_x\\sim D[e^-f(x)H_t-1(x)f(x)h_t(x)]$(因为$E_x\\sim D[e^-f(x)H_t-1(x)]$是一个常数)

  $=\\undersetharg\\ max\\ E_x\\sim D[\\frace^-f(x)H_t-1(x)E_x\\sim D[e^-f(x)H_t-1(x)]f(x)h_t(x)]$

因为$E_x\\sim D[e^-f(x)H_t-1(x)]$是一个常数,令$D_t$表示一个分布:

  $D_t(x)=\\fracD_t(x)e^-f(x)H_t-1(x)E_x\\sim D[e^-f(x)H_t-1(x)]$

即:

  $D_t(x)$是$X$

  $\\frace^-f(x)H_t-1(x)E_x\\sim D[e^-f(x)H_t-1(x)]$是分布概率

则根据数学期望的定义,则等价于令:

  $h_t(x)=\\undersetharg\\ max\\ E_x\\sim D[\\frace^-f(x)H_t-1(x)E_x\\sim D[e^-f(x)H_t-1(x)]f(x)h(x)]$

  $\\undersetharg\\ max\\ E_x\\sim D_t[f(x)h(x)]$

由于$f(x),h(x)\\in \\-1,+1\\$,令:

  $f(x)h(x)=1-2\\mathbbI(f(x)\\neq h(x))$

则理想的基学习器:

  $\\undersetharg\\ min\\ E_x\\sim D_t[f(x)\\neq h(x)]$

 

考虑到$D_t$和$D_t+1$的关系:

  $D_t+1(x)=\\fracD(x)e^-f(x)H_t(x)E_x\\sim D[e^-f(x)H_t(x)]$

  $=\\fracD(x)e^-f(x)H_t-1(x)e^-f(x)a_th_t(x)E_x\\sim D[e^-f(x)H_t(x)]$

  $=D(x)e^-f(x)a_th_t(x)\\fracE_x\\sim D[e^-f(x)H_t-1(x)]E_x\\sim D[e^-f(x)H_t(x)]$

这就是样本分布的更新公式

 

以上是关于集成学习的主要内容,如果未能解决你的问题,请参考以下文章

机器学习集成学习原理

深入浅出Ensemble Learning集成学习原理

深入浅出Ensemble Learning集成学习原理

集成学习的知识整理

7. 集成学习(Ensemble Learning)Stacking

模型集成(Ensemble)