机器学习 第七章贝叶斯分类器

909 阅读13分钟

关于周志华老师的《机器学习》这本书的学习笔记
记录学习过程
本博客记录Chapter7

1 贝叶斯决策论

假设有NN种可能的类别标记,即Y={c1,c2,,cN}Y=\{c_1,c_2,…,c_N\}λij\lambda_{ij}是将一个真实标记为cjc_j的样本误分类到cic_i的损失。基于后验概率P(cix)P(c_i|\bold x)可获得将样本x\bold x误分类到cic_i所产生的期望损失(expected loss),即在样本x\bold x上的“条件风险”(conditional risk)(P(cjx)P(c_j|\bold x):表示样本x\bold xcjc_j的概率):

R(cix)=j=1NλijP(cjx)R(c_i|\bold x)=\sum_{j=1}^N\lambda_{ij}P(c_j|\bold x)

我们的任务是寻找一个判别准则h:χYh:\chi \mapsto Y最小化总体风险

R(h)=EX[R(h(x)x)]R(h)=E_X[R(h(\bold x)|\bold x)]

显然,对于每一个样本x\bold x,若hh能最小化条件风险R(h(x)x)R(h(\bold x)|\bold x),则总体风险R(h)R(h)就能最小化。这体现了贝叶斯判定准则(Bayes decision rule):为最小化总体风险,只需要在每个样本上选择哪个能使条件风险R(cx)R(c|\bold x)最小的类别标记:

h(x)=argmincY R(cx)h^*(\bold x) = \mathop{\arg\min}_{c \in Y}\space R(c|\bold x)

此时,hh^*被称为贝叶斯最优分类器(Bayes optimal classifier),与之对应的总体风险R(h)R(h^*)对应贝叶斯风险(Bayes risk)1R(h)1-R(h^*)反映了分类器所能达到的最好性能

+++

若期望损失λij\lambda_{ij}符合:

λij={0,   if  i=j1,   otherwise\lambda_{ij}=\begin{cases} 0,\space\space\space if \space\space i=j\\ 1,\space\space\space otherwise \end{cases}

此时条件风险R(cx)=1P(cx)R(c|\bold x)=1-P(c|\bold x)

于是,最小化分类错误率的贝叶斯最优分类器:

h(x)=argmincY P(cx)h^*(\bold x)=\mathop{\arg\min}_{c\in Y}\space P(c|\bold x)

选择后验概率P(cx)P(c|\bold x)最大的类别标记

+++

不难看出,欲使用贝叶斯判定准则来最小化决策风险,首先要获得后验概率P(cx)P(c|x)。 然而,在现实任务中这通常难以直接获得。从这个角度来看,机器学习所要实现的是基于有限的训练样本集尽可能准确地估计出后验概率P(cx)P(c| x)。大体来说,主要有两种策略:

  • 给定xx,可通过直接建模P(cx)P(c| x)来预测cc,这样得到的是 “判别式模型”(discriminativemodels)
  • 也可先对联合概率分布P(x,c)P(x,c)建模,然后再由此获得P(cx)P(c | x),这样得到的是 “生成式模型'(generative models)

显然,前面介绍的决策树、BP神经网络、支持向量机等,都可归入判别式模型的范畴。对生成式模型来说,必然考虑

P(cx)=P(x,c)P(x)=P(xc)P(c)P(x)P(c|x)=\frac{P(x,c)}{P(x)}=\frac{P(x|c)P(c)}{P(x)}

其中,P(c)P(c)是先验(prior)概率,P(xc)P(x|c)是样本xx对于类标记cc的类条件概率,或称为似然(likelihood);P(x)P(x)是用于归一化的证据因子(evidence)。对于给定样本,证据因子和类标记无关,因此估计P(cx)P(c|x)的问题就转化为如何基于训练数据DD估计先验P(c)P(c)和似然P(xc)P(x|c) 根据大数定理,P(c)P(c)可以用各类样本出现的频率来进行估计;对于类条件概率P(xc)P(x|c)来说,由于其涉及关于xx所有属性的联合概率,直接根据样本出现频率来估计会遭到严重困难。

2 极大似然估计

假设P(xc)P(x|c)具有确定的形式并且被参数θc\theta_c唯一确定,则我们的任务就是利用训练集DD估计参数θc\theta_c

事实上,概率模型训练过程就是参数估计(parameter estimation)。对于参数训练过程,有频率学主义学派和贝叶斯学派。前者认为参数虽然未知,但是是客观存在的固定值,可以优化似然函数来确定参数;后者认为参数是未观察到的随机变量,其本身可以有分布,因此可以假定参数服从一个先验分布,然后基于观测到的数据来计算参数的后验分布。

这一节我们采用频率主义学派的极大似然估计(MLE)方法

LL(θc)=logP(Dcθc)=xDclogP(xθc)LL(\theta_c)=\log P(D_c|\theta_c)=\sum_{x\in D_c}\log P(x|\theta_c)

此时参数θc\theta_c的极大似然估计为θc^\hat {\theta_c}:

θ^c=argmaxθc LL(θc)\hat \theta_c = \mathop{\arg \max}_{\theta_c}\space LL(\theta_c)

需注意的是,这种参数化的方法虽能使类条件概率估计变得相对简单,但估计结果的准确性严重依赖于所假设的概率分布形式是否符合潜在的真实数据分布。在现实应用中,欲做出能较好地接近潜在真实分布的假设,往往需在一定程度上利用关于应用任务本身的经验知识,否则若仅凭“猜测”来假设概率分布形式,很可能产生误导性的结果。

3 朴素贝叶斯分类器

朴素贝叶斯分类器(naive Bayes classifier)采用了 “属性条件独立性假设”,即假设对已知的类别,所有的属性相互独立。因此,后验概率可以写为:

P(cx)=P(xc)P(c)P(x)=P(c)P(x)i=1dP(xic)P(c|x)=\frac{P(x|c)P(c)}{P(x)}=\frac{P(c)}{P(x)}\prod_{i=1}^dP(x_i|c)

其中,dd为属性数目,即xx的维数。

由于对于所有类别,P(x)P(x)相同,因此贝叶斯判定准则为:

hnb(x)=argmaxcY P(c)i=1dP(xic)h_{nb}(x)=\mathop{\arg\max}_{c\in Y} \space P(c)\prod_{i=1}^dP(x_i|c)

朴素贝叶斯的训练过程就是基于训练集DD来估计类先验概率P(c)P(c),并为每个属性估计条件概率P(xic)P(x_i|c)。其中

P(c)=DCDP(xic)=Dc,xiDcP(c)=\frac{|D_C|}{|D|}\\ P(x_i|c)=\frac{|D_{c,x_i|}}{|D_c|}

对连续属性可以考虑概率密度函数,假定P(xic)N(μc,i,σc,i2)P(x_i|c)\thicksim N(\mu_{c,i},\sigma_{c,i}^2),其中μc,i\mu_{c,i}σc,i2\sigma_{c,i}^2分别是第cc类样本在第ii个属性上取值的均值和方差,有:

p(xic)=12πσc,ie(xiμc,i)22σc,i2p(x_i|c)=\frac{1}{\sqrt{2\pi}\sigma_{c,i}}e^{-\frac{(x_i-\mu_{c,i})^2}{2\sigma_{c,i}^2}}

为了避免其他属性携带的信息被训练集中未出现的属性值“抹去”,在估计概率值的时候通常要进行平滑,我们采用拉普拉斯修正。即令NN表示训练集DD种可能出现的类别数;令NiN_i表示第ii个属性可能的取值数,则:

P^(c)=DC+1D+NP^(xic)=Dc,xi+1Dc+Ni\hat P(c)=\frac{|D_C|+1}{|D|+N}\\ \hat P(x_i|c)=\frac{|D_{c,x_i|+1}}{|D_c|+N_i}

在现实任务中朴素贝叶斯分类器有多种使用方式。例如:

  • 若任务对预测速度要求较高,则对给定训练集,可将朴素贝叶斯分类器涉及的所有概率估值事。先计算好存储起来,这样在进行预测时只需“查表”即可进行判别
  • 若任务数据更替频繁,则可采用“懒惰学习”(lazy learning) 方式,先不进行任何训练,待收到预测请求时再根据当前数据集进行概率估值
  • 若数据不断增加,则可在现有估值基础上,仅对新增样本的属性值所涉及的概率估值进行计数修正即可实现增量学习

4 半朴素贝叶斯分类器

朴素贝叶斯采取的属性条件独立性假设往往在现实中很难成立,因此人们尝试对属性条件独立性假设进行一定程度的放松,采用“半朴素贝叶斯分类器”。

半朴素贝叶斯分类器的基本思想:适当考虑一部分属性间的相互依赖信息,从而既不需要进行完全联合概率计算,又不至于忽略比较强的属性依赖关系。“独依赖估计”(ODE):是半朴素贝叶斯分类器最常用的策略,即假设每个属性在类别之外最多仅依赖于一个其他属性

几种常见的方法:

  • SPOED方法(super-parent ODE):所有属性都依赖于同一个属性,称为“超父”

  • TAN方法(Tree Augmented naive Bayes):在最大带权生成树的基础上,通过计算任意两个属性之间的互信息,构建最大带权生成树

    互信息计算公式:

    I(xi,xjy)=xi,xj;cYP(xi,xjc)logP(xi,xjc)P(xic)P(xjc)I(x_i,x_j|y)=\sum_{x_i,x_j;c\in Y}P(x_i,x_j|c)\log \frac{P(x_i,x_j|c)}{P(x_i|c)P(x_j|c)}
  • ADOE(Averaged One-Dependent Estimator):基于集成学习机制,更为强大的独依赖分类器。ADOE尝试将每个属性作为超父来构建SPODE,将具有足够训练数据支撑的SPODE集成起来作为最终结果。

image.png

5 贝叶斯网

贝叶斯网称为“信念网”(belief network),借助有向无环图(Directed Acyclic Graph,DAG)来刻画属性之间的依赖关系,并使用条件概率表(Contional Probability Table,CPT)来描述属性的联合概率分布。

一个贝叶斯网络由结构GG和参数θ\theta两部分构成。(B=<G,θ>B=<G,\theta>)。 GG是一个有向无环图,每个结点对应一个属性,若两个属性有直接依赖关系,则由一条边连接起来。θ\theta定量描述依赖关系,假设属性xix_iGG中的父节点集为πi\pi_i,则θ\theta包含了每个属性的条件概率表θxiπi=P(xiπi)\theta_{x_i|\pi_i}=P(x_i|\pi_i)

image.png

5.1 结构

贝叶斯网结构有效地表达了属性间的条件独立性。给定父结点集,贝叶斯网络假设每个属性与它的非后裔属性独立,于是B=<G;θ>B=<G;\theta>将属性x1,x2,,xdx_1,x_2,…,x_d的联合概率分布定义为:

PB(x1,x2,,xd)=i=1dPB(xiii)=i=1dθxiπiP_B(x_1,x_2,…,x_d)=\prod_{i=1}^dP_B(x_i|i_i)=\prod_{i=1}^d\theta_{x_i|\pi_i}

贝叶斯网络中由三种典型依赖关系

image.png

  • 同父关系:给定父结点x1x_1的取值,x3x_3x4x_4就条件独立
  • 顺序结构:给定xx的值,yyzz就条件独立
  • V型结构:也叫冲撞结构,给定x4x_4的取值,x1x_1x2x_2必定不独立;但x4x_4的值如果完全位置,则x1x_1x2x_2是相互独立的。这种独立性称为“边际独立性”。

为了分析图中变量之间的条件独立性,可以使用“有向分离”:

  • 找到所有V型结构,在V型结构的两个父结点之间加上一条无向边
  • 将所有有向边改为无向边

由此产生的图叫道德图(moral graph),将父结点相连的过程称为“道德化”。(孩子的父母之间应该有牢靠的关系,不然是不道德的)

基于道德图能直观、迅速地找到变量间的条件独立性。假定道德图中有变量x,yx,y和变量集合z=zz={z},若变量xxyy能在图上被zz分开,即从道德图中将变量集合zz去除后,xxyy分属两个连通分支,则称变量xxyyzz有向分离。

5.2 学习

贝叶斯学习网中的首要任务就是根据训练数据集找出结构最“恰当”的贝叶斯网

采用评分函数,评估贝叶斯网和训练数据的契合程度,然后基于这个评分函数寻找结构最优的贝叶斯网是一种常用的方法。常用评分函数通常基于信息论准则,此类准则将学习问题看作一个数据压缩任务,学习的目标是找到一个能以最短编码长度描述训练数据的模型,此时编码的长度包括了描述模型自身所需的字节长度和使用该模型描述数据所需的字节长度。对贝叶斯网学习而言,模型就是贝叶斯网,每个贝叶斯网描述了一个在训练数据上的概率分布,自有一套编码机制能使那些经常出现的样本有更短的编码。于是,我们应选择那个综合编码长度(包括描述网络和编码数据)最短的贝叶斯网,这就是 “最小描述长度”(Minimal Description Length,简称MDL)准则

评分函数可以写为如下(其中,|B|是贝叶斯网的参数个数,f(θ)f(\theta)表示描述每个参数θ\theta​所需要的编码位数),第一项是计算编码贝叶斯网的编码位数,第二项是描述概率分布PBP_B对数据集DD的拟合程度。

s(BD)=f(θ)BLL(BD)LL(BD)=i=1mlogPB(xi)s(B|D)=f(\theta)|B|-LL(B|D)\\ LL(B|D)=\sum_{i=1}^m\log P_B(x_i)

f(θ)f(\theta)为1,则对应AIC评分函数;若f(θ)=12logmf(\theta)=\frac{1}{2}\log m为,则对应BIC评分函数;若θ\theta为0,则对应极大似然估计。

不幸的是,从所有可能的网络结构空间搜索最优贝叶斯网结构是一个NP难问题,难以快速求解。有两种常用的策略能在有限时间内求得近似解:第一种是贪心法,例如从某个网络结构出发,每次调整一条边(增加、 删除或调整方向),直到评分函数值不再降低为止;第二种是通过给网络结构施加约束来削减搜索空间,例如将网络结构限定为树形结构等。

5.3 推断

贝叶斯网络训练好之后能用来回答“查询”,即通过一些属性变量的观测值来推测其他属性变量的取值。通过已知变量来推测待查询变量的过程称为“推断”(inference),已知变量观测值称为“证据”(evidence)。

根据贝叶斯网定义的联合概率分布来精确计算后验概率是NP难的问题,需要借助“近似推断”,降低精度要求,在有限时间内求得近似解。我们常采用吉布斯采样(Gibbs sampling)

  • Q={Q1,Q2,,Qn}Q=\{Q_1,Q_2,…,Q_n \}表示待查询变量,E={E1,E2,,Ek}E=\{E_1,E_2,…,E_k\}为证据变量,已知取值为e={e1,e2,,ek}e=\{e_1,e_2,…,e_k\}。目标是计算后验概率P(Q=qE=e)P(Q=q|E=e)

  • 吉布斯采样先随机产生一个与证据E=eE=e一致的样本q0q^0作为初始点,然后每步从当前样本出发产生下一个样本。在第tt次采样,我们先假设qt=qt1q^t=q^{t-1},然后对非证据变量逐个进行采样改变其取值,采样概率根据贝叶斯网B和其他变量的当前取值计算获得。假定经过TT次采样得到的与qq一致的样本共有nqn_q个,近似估算出后验概率:

    P(Q=qE=e)=nqTP(Q=q|E=e)=\frac{n_q}{T}

实质上,吉布斯采样是在贝叶斯网所有变量的联合状态空间与证据E=eE=e一致的子空间中进行 “随机漫步”(random wallk)。每一步仅依赖于前一步的状态,这是一个“马尔可夫链”(Markov chain)。在一定条件下,无论从什么初始状态开始,马尔可夫链第t步的状态分布在tt→\infty时必收敛于一个平稳分布(stationary distribution); 对于吉布斯采样来说,这个分布恰好是P(QE=e)P(Q | E=e)。因此,在TT很大时,吉布斯采样相当于根据P(QE=e)P(Q|E=e)采样,从而保证了式(17)收敛于P(Q=qE=e)P(Q=q|E= e)

image.png

6 EM算法

现实生活中,我们往往会遇到样本“不完整”的情况。未观测的变量的学名是“隐变量”,令XX表示已观测变量集,ZZ表示隐变量集,θ\theta表示模型参数,若对θ\theta做极大似然估计,则要最大化对数似然:

LL(θX,Z)=lnP(X,Zθ)LL(\theta|X,Z)=ln P(X,Z|\theta)

由于Z是隐变量,因此无法直接求解,这时我们可以通过对ZZ计算期望,来最大化已观测数据的对数“边际似然”:

LL(θX)=lnP(Xθ)=lnZP(X,Zθ)LL(\theta|X)=lnP(X|\theta)=ln\sum_ZP(X,Z|\theta)

EM算法是常用的估计参数隐变量的利器。其基本思想:**若θ\theta已知,则可根据训练数据推断出最优隐变量的值(E步);反之,若ZZ的值已知,则可方便地对θ\theta做极大似然估计。**步骤如下:

  • 以初始值θ0\theta^0为起点,对式(19),可以迭代执行以下步骤直到收敛:
    • 基于θt\theta^t推断隐变量ZZ的期望,记ZtZ_t
    • 基于已观测变量XXZZ对参数θ\theta做极大似然估计,记为θt+1\theta^{t+1}

进一步,若我们不是取Z的期望,而是基于θtθ^t计算隐变量ZZ的概率分布P(ZX,θt)P(Z| X, \theta^t),则EM算法的两个步骤是:

  • E步(Expectation):以当前参数θtθ^t推断隐变量分布P(ZX,θt)P(Z | X,\theta^t),并计算对数似然LL(θX,Z)LL(\theta| X,Z)关于ZZ的期望

    Q(θθt)=EZX,θtLL(θX,Z)Q(\theta|\theta^t)=E_{Z|X,\theta^t}LL(\theta|X,Z)
  • M步(Maximization):寻找参数最大化期望似然,即

    θt+1=argmaxθ Qθθt\theta_{t+1}=\mathop{\arg\max}_{\theta}\space Q{\theta|\theta^t}

简要来说, EM算法使用两个步骤交替计算:第一步是期望(E)步,利用当前估计的参数值来计算对数似然的期望值;第二步是最大化(M)步,寻找能使E步产生的似然期望最大化的参数值,然后,新得到的参数值重新被用于E步,直至收敛到局部最优解。 事实上,隐变量估计问题也可通过梯度下降等优化算法求解,但由于求和的项数将随着隐变量的数目以指数级上升,会给梯度计算带来麻烦;而EM算法则可看作一种非梯度优化方法。