集成学习
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)]$
这就是样本分布的更新公式
以上是关于集成学习的主要内容,如果未能解决你的问题,请参考以下文章