PRML读书笔记——组合模型

来源:互联网 发布:软件定制开发公司名录 编辑:程序博客网 时间:2024/06/07 09:22

我们经常发现,可以通过以某种方式将多个模型结合到一起的方法来提升性能,而不是独立地使用一个单独的模型。

本章主要基于模型组合的思想,分析committe方法、提升的方法、条件混合模型,也顺带讲解决策树模型。


贝叶斯模型平均

这个其实不属于模型组合的方法,但是作者为了将它们区分开,所以简单介绍了贝叶斯平均。

这里考虑高斯混合模型的例子,有

p(x)=k=1KπkN(x|uk,Σk)

这其实是组合模型的例子,多个高斯模型得到数据的概率分布。

现在我们举个贝叶斯平均的例子。假设我们有若⼲个不同的模型,索引为h=1,...,H,先验概率分布为p(h)。数据集上的边缘概率分布为:

p(X)=h=1Hp(X|h)p(h)

这里的含义是,只有一个模型用于生成整个数据集。h上的概率分布仅仅反映了我们对于究竟是哪个模型⽤于⽣成数据的不确定性。这也是组合模型与贝叶斯平均的差异,组合模型是由多个模型来生成数据集的。


委员会

构建⼀个委员会的最简单的⽅法是对⼀组独⽴的模型的预测取平均。这种观点考虑偏置和⽅差之间的折中,它将模型的误差分解为偏置分量和⽅差分量,其中偏置分量产⽣于模型和真实的需要预测的函数之间的差异,⽅差分量表⽰模型对于单独的数据点的敏感性。当我们对⼀组低偏置高方差的模型求平均时,我们能得到相对精确的预测。

下面从理论推导的角度给出解释

假设我们有M个数据集,然后用每个数据集训练一个模型的副本ym(x),其中m=1,..,M。则committe的预测为:

yCOM(x)=1Mm=1Mym(x)

假设真实的函数为h(x),则有:

ym(x)=h(x)+ϵm(x)

其中,ϵm(x)是误差函数

则各模型的平方和误差的形式为:

EAV=1Mm=1MEx[ϵm(x)2]

而committe方法得到的期望误差为:

ECOM==Ex{1Mm=1M(ym(x)h(x))}2Ex{1Mm=1Mϵm(x)}2

假设误差均值为0,且样本的误差不相关,即:

Ex[ϵm(x)]=0

Ex[ϵm(x)ϵl(x)]=0,ml

则有:

ECOM=1MEAV

显然,组合后的误差明显小于单个模型,尽管现实中模型误差存在相关性,差距没有这么明显,但这种大小关系依然存在。


提升方法

这是一种比committe提升更明显的组合方法。它将多个“基”分类器进⾏组合,产⽣⼀种形式的委员会,委员会的表现会⽐任何⼀个基分类器的表现好得多。即使基分类器的表现仅仅⽐随机猜测的表现稍好,提升⽅法仍可以产⽣⽐较好的结果。这种基分类器有时被称为弱学习器。

这种方法与委员会方法的主要不同在于,基分类器是顺序训练的,每个基分类器使⽤数据集的⼀个加权形式进⾏训练,其中与每个数据点相关联的权系数依赖于前⼀个分类器的表现。特别地,被⼀个基分类器误分类的点在训练序列中的下⼀个分类器时会被赋予更⾼的权重。⼀旦所有的分类器都训练完毕,那么它们的预测就会通过加权投票的⽅法进⾏组合。

这里写图片描述

Adaboost

Adaboost是boosting家族的典型算法。下面做简单介绍。考虑⼀个⼆分类问题, 其中训练数据由输⼊向量x1,...,xN以及对应的⼆值⽬标变量t1,...,tN组成,其中tn{1,1}。每个数据点被赋予了⼀个关联的权值参数wn,在算法的每个阶段,使⽤⼀个数据集训练⼀个新的分类器,其中权系数根据前⼀个训练的分类器的表现进⾏调节,从⽽为误分类的数据点赋予更⾼的权值。最后,当我们训练了所需数量的基分类器之后,它们进⾏组合,形成⼀个委员会。

(1)初始化数据加权系数{wn},⽅法是对n=1,...,N,令w(1)n=1N

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

  • 使⽤训练数据调节⼀个分类器ym(x),调节的⽬标是最⼩化加权的误差函数

Jm=n=1Nu(m)nI(ym(xn)tn)

其中I(ym(xn)tn)是指示函数,当(xn)tn时为1,其他情况为0

  • 计算弱分类器的整体误差

ϵm=Nn=1w(m)nI(ym(xn)tn)Nn=1w(m)n

  • 计算弱分类器的权重

αm=ln{1ϵmϵm}

  • 更新数据权系数

w(m+1)n=w(m)nexp{αmI(ym(xn)tn)}

(3)使用最终的模型进行预测,形式为:

YM(x)=sign(m=1Mαmym(x))

由上面过程可以分析出,对于每个弱分类器,误差ϵm越大,分类器的权重αm就越小。当数据被错误分类时,对应的权系数就会增加(因为αm是大于0的),通过增大误分样本的权重,使得每轮训练都与上一路产生差异。

这里写图片描述

最小化指数误差

这里特意分析指数误差,是因为,上面Adaboost的整体计算过程,本质上就是在最小化指数误差。这里相当于将算法进一步推广到一般的情形去分析。

考虑指数误差函数:

E=n=1Nexp{tnfm(xn)}

其中

fm(x)=12l=1mαlyl(x)

我们的目标是关于权系数αl和基分类器yl(x)最小化E。

然而,我们不考虑误差函数的全局最小化,⽽是假设基分类器y1(x),...,ym1(x)以及它们的系数α1,...,αm1固定,只关于单个基分类器αmym(x)进⾏最⼩化。

有:

E==n=1Nexp{tnfm1(xn)12tnαmym(xn)}w(m)nexp{12tnαmym(xn)}

其中,权系数w(m)n=exp{tnfm1(xn)}被看做常数。现在将被ym(x)正确分类的数据点的集合记作Tm,并且将剩余的误分类的点记作Mm,则误差函数可以写为:

E==eαm2nTmw(m)n+eαm2nMmw(m)n(eαm2eαm2)n=1Nw(m)nI(ym)(xntn)+eαm2n=1Nw(m)n

这里,当我们关于ym(x)做最小化的时候,第二项是常数,则误差函数就和Adaboost的一致了。关于αm最小化时,得到Adaboost的权重更新公式。

现在,用和Adaboost类似的公式更新数据权系数,如下:

w(m+1)n=w(m)nexp{12tnαmym(xn)}

可以发现,下一次迭代时,也会得到几乎一致的形式。这里,从三个参数αmymwmn的求解结果可知,它们是和Adaboost一致的形式,这就证明了,Adaboost算法本质就是指数误差的最小化

提升方法的误差函数

这里主要是和交叉熵误差函数作对比。

这里写图片描述

对比结果如下:

(1)优点:它的顺序最⼩化会得到简单的AdaBoost⽅法。

(2)缺点:它对负的ty(x)的惩罚较⼤。特别地,我们看到对于ty的很⼤的负值,交叉熵随着|ty|线性增长,⽽指数误差随着|ty|指数增长。因此指数误差函数对于异常点和误分类的数据点并不鲁棒;⽆法表⽰为
任何具有良好定义的概率模型的似然函数,推广性弱于交叉熵误差。


基于树的模型

这里主要是分析决策树,它将输⼊空间划分为超⽴⽅体区域,超⽴⽅体的边与坐标轴对齐,然后为每个区域分配⼀个简单的模型(例如,⼀个常数)。这些模型可以被看成⼀种模型组合⽅法,其中只有⼀个模型对于输⼊空间中任意给定点的预测起作⽤。

这里写图片描述

书里主要分析的情况是贪心策略构建树之后,如何剪枝的问题。

剪枝的过程基于的准则会在残留误差与模型复杂度之间进⾏平衡。我们将剪枝开始时的树记作T0,然后我们对于TT0,如果它能够通过从T0剪枝(即通过合并对应区域来收缩内部结点)的⽅式被得到,那么它就被定义为T0的⼀个⼦树。假设叶结点的索引为τ=1,...,|T|,叶结点τ表⽰具有Nτ个数据点的区域Rτ|T|表⽰叶结点的总数。那么区域Rτ给出的最优的预测为:

yτ=1N+τxnRτtn

它对于残留的平⽅和误差的贡献为:

Qτ(T)=xnRτ{tnyτ}2

剪枝准则为:

C(T)=τ=1|T|Qτ(T)+λ|T|

这里T表示某个子树,|T|表示该子树叶节点的总数。这个准则的意思就是,看该子树各个叶节点的误差和以及叶节点个数来剪枝,C(T)越大表示,叶节点越多而且误差还很大,越应该剪枝。

决策树其实是机器学习重要的模型之一,常见的决策树算法包括ID3、C4.5以及CART树


条件混合模型

混合高斯

决策树被限制为对输⼊空间的硬的、与坐标轴对齐的划分。这些限制可以通过引⼊软的、概率形式的划分的⽅式得到缓解,这些划分是所有输⼊变量的函数,⽽不仅仅是某个输⼊变量的函数。这就是条件混合模型的初衷。

书中重要分析的是线性回归模型的混合,就是用混合高斯的形式,将多个线性回归模型叠加。这里考虑K个线性回归模型,每个模型由wkϕ(x)的形式表示,假设它们都使用同一个噪声方差,精度为β,则混合概率分布可以写成:

p(t|θ)=k=1KπkN(t|wTkϕ,β1)

现在想求解这个模型,即优化参数集合θ={W,π,β}。因此,构建对数似然函数如下:

ln p(t|θ)=n=1Nln(k=1KπkN(tn|wTkϕn,β1))

使用EM算法求解,引入二值潜在变量Z={zn},其中znk{0,1},表示数据点是否由第k个模型生成。则对数似然函数转为:

ln p(t,Z|θ)=n=1Nk=1Kznkln {πkN(tn|wTkϕn,β1)}

下面用EM求解,在E步骤,计算潜在变量的最优值,这里最有值是它的后验期望,即:

rnk=E[znk]=p(k,ϕn,θold)=πkN(tn|wTkϕn,β1)jπjN(tn|wTkϕn,β1)

然后构建Q值:

Q(θ,θold)=EZ[ln p(t,Z|θ)]=n=1Nk=1Krnk{ln πk+ln N(tn|wTkϕn,β1)}

M步骤中,我们关于参数θ最大化Q值。

对于πk,因为它存在限制kπk=1,可以用拉格朗日求解,可得:

πk=1Nn=1Nrnk

对于wk,将高斯分布的形式展开,逐个w求导,分别优化,可以求得:

wk=(ΦTRkΦ)1ΦTRkt

其中,Rk=diag(rnk)是一个N×N的对角矩阵

对于β,同样求导可得到结果:

1β=1Nn=1Nk=1Krnk(tnwTkϕn)2

这里写图片描述

这里写图片描述

logistic模型的混合

线性回归模型定义了给定输⼊变量的条件下⽬标变量的⼀个条件概率分布,因此很容易将其⽤作混合模型中的分量分布。对于K各logistic回归模型,目标变量的条件概率分布为:

p(t|ϕ,θ)=k=1Kπkytk[1yk]1t

其中,ϕ是特征向量,yk=σ(wTkϕ)是分量k的输出,θ={πk,wk}是可调节的参数

则似然函数为:

p(t|θ)=n=1N(k=1Kπkytnnk[1ynk]1tn)

同样可以用EM算法求解。

这里写图片描述


专家混合

前面两个例子,混合系数π都是固定的,如果混合系数同样受样本的影响,则得到的模型是专家混合模型。下式就是专家混和的一个例子:

p(t|x)=k=1Kπk(x)pk(t|x)

其中,混合系数πk(x)被称为门函数,各个分密度pk(t|x)被称为专家。

值得注意的是,混合模型的每个组件又可以是混合模型,这样就得到专家层次混合


补充——Bagging和Boosting对比

这里最后再简单对比一下Bagging和Boosting。

首先了解下Boostrap:这是一种有放回的抽样方法,它是非参数统计中一种重要的估计统计量方差进而进行区间估计的统计方法。其核心思想是由于小样本估计的不准确性,再加上现代计算性能的提升,可以用重复的计算提升小样本的精度。基本步骤如下:
  (1) 采用重抽样技术从原始样本中抽取一定数量(自己给定)的样本,此过程允许重复抽样。
  (2) 根据抽出的样本计算给定的统计量T。
  (3) 重复上述N次(一般大于1000),得到N个统计量T。
  (4) 计算上述N个统计量T的样本方差,得到统计量的方差。

Bagging借鉴boostrap的思想。训练多轮,每轮的训练集由从初始的训练集中随机取出的n个训练样本组成,某个初始训练样本在某轮训练集中可以出现多次或根本不出现,训练之后可得到一个预测函数序列h1,...,hn ,最终的预测函数对分类问题采用投票方式,而对回归问题则采用简单平均方法对新示例进行判别。

Boosting则每次采样训练弱分类器之后,会调整采样样本的权重。得到的弱分类器不是同等重要的,每个弱分类器有自己的权重。这个书上介绍的很全面。

它们的主要区别在于:

(1)取样方式不同。Bagging采用均匀取样,而Boosting根据错误率来取样,因此Boosting的分类精度要优于Bagging。

(2)Bagging的训练集的选择是随机的,各轮训练集之间相互独立,而Boostlng的各轮训练集的选择与前面各轮的学习结果有关

(3)Bagging的各个预测函数没有权重,而Boosting是有权重的;Bagging的各个预测函数可以并行生成,而Boosting的各个预测函数只能顺序生成

(4)bagging和boosting都可以有效地提高分类的准确性。在大多数数据集中,boosting的准确性比bagging高。但在有些数据集中,boosting会容易退化(过拟合)。

0 0
原创粉丝点击