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

1、贝叶斯决策论

贝叶斯决策论是概率框架下实施决策的基本方法,对分类任务来说,若其相关概率已知,贝特斯决策论基于这些概率和误判损失来选择最优的类被标记。假设有n种可能的类别标记,即 y = y= y={ c 1 , c 2 , … … , c N c_1,c_2,……,c_N c1,c2,,cN},假设将标记为 c j c_j cj的样本分类为 c i c_i ci所产生的损失为 λ i j \lambda_{ij} λij,则将样本分为 c i c_i ci产生的总期望损失,也称为样本的条件风险,为 R ( c i ∣ x ) = ∑ j = 1 N λ i j P ( c j ∣ x ) R(c_i|x)=\sum\limits_{j=1}^{N}\lambda_{ij}P(c_j|x) R(cix)=j=1NλijP(cjx)我们的任务就是寻找一个判定准则h,使总体风险最小。显然,若每个样本的条件风险都最小,则总体风险一定是最小的。这就产生了贝叶斯判定准则,为最小化总体风险,只需在每个样本上选择那个能使条件风险 R ( c ∣ x ) R(c|x) R(cx)最小的类别标记,即 h ∗ ( x ) = a r g m i n c ∈ y R ( c ∣ x ) h^*(x)=\underset{c\in y} {argmin}R(c|x) h(x)=cyargminR(cx)与之对应的总体风险 R ( h ∗ ) R(h^*) R(h)称为贝叶斯风险, 1 − R ( h ∗ ) 1-R(h^*) 1R(h)反映了分类器所能达到的最好性能。
但想要通过上述方法来判定,很明显我们首先要知道样本的后验概率,然而,在现实任务中这通常很难获得,所以我们要尽可能准确地估计出后验概率,一般来说有两种方法,第一种,给定 x x x可通过直接建模 P ( c ∣ x ) P(c|x) P(cx)来预测c,这样得到的是"判别式模型",第二种方法是先对联合概率分布 P ( x , c ) P(x,c) P(x,c)建模,然后得到 P ( c ∣ x ) P(c|x) P(cx),这样得到的是"生成式模型"。对生成式模型来说,假设 P ( c ) P(c) P(c)是类先验概率, P ( x ∣ c ) P(x|c) P(xc)是样本x关于类标记c的类条件概率,有 P ( c ∣ x ) = P ( x , c ) P ( x ) = P ( c ) P ( x ∣ c ) P ( x ) P(c|x)=\frac{P(x,c)}{P(x)}=\frac{P(c)P(x|c)}{P(x)} P(cx)=P(x)P(x,c)=P(x)P(c)P(xc)
对类条件概率 P ( x ∣ c ) P(x|c) P(xc)来说,直接根据样本出现的频率来估计得到的结果是很糟糕的。假设样本的 d d d个属性都是二值的,则样本空间将会有 2 d 2^d 2d种可能的取值,在现实任务中,可能的取值往往远大于训练样本数目,很多样本取值在训练集中根本没有出现,所以直接用频率来估计 P ( x ∣ c ) P(x|c) P(xc)是不可行的,那么怎么估计 P ( x ∣ c ) P(x|c) P(xc)呢?

2、极大似然估计

估计类条件概率的一种常用方法是先假设其具有某种概率分布,然后再根据样本确定概率分布的参数。比如,记类别c的类条件概率为 P ( x ∣ c ) P(x|c) P(xc),假设 P ( x ∣ c ) P(x|c) P(xc)具有某种确定的形式并且被参数向量 θ c \theta_c θc唯一确定,记 P ( x ∣ c ) P(x|c) P(xc) P ( x ∣ θ c ) P(x|\theta_c) P(xθc),统计学的两个学派分别提供了不同的解决方案:频率主义学派认为参数是客观存在的固定值,贝叶斯学派认为参数是随机变量,本身也有分布,因此假设参数服从一个先验分布,然后基于观测到的数据来计算参数的后验分布。下面来看一下源自频率主义学派的极大似然估计:
D c D_c Dc表示训练集 D D D中第 c c c类样本组成的集合,假设这些样本是独立同分布的,则参数 θ c \theta_c θc对于数据集 D c D_c Dc的似然是 P ( D c ∣ θ c ) = ∏ x ∈ D c P ( x ∣ D c ) P(D_c|\theta_c)=\prod\limits_{x\in D_c}P(x|D_c) P(Dcθc)=xDcP(xDc) θ c \theta_c θc 进行极大似然估计,就是寻找能最大化 P ( D c ∣ θ c ) P(D_c|\theta_c) P(Dcθc)的参数值 θ ^ c \hat\theta_c θ^c。直观上看,是在 θ c \theta_c θc所有可能的取值中,寻找使数据出现的可能性最大的那一个。上式中的连乘操作很有可能得到一个很小的值,由于我们取值的规则,有可能将一个很小的数四舍五入为零,导致下溢现象的发生,因此通常使用对数似然,记 L L ( θ c ) = l o g P ( D c ∣ θ c ) = ∑ x ∈ D c l o g P ( x ∣ θ c ) LL(\theta_c)=logP(D_c|\theta_c)=\sum\limits_{x\in D_c}logP(x|\theta_c) LL(θc)=logP(Dcθc)=xDclogP(xθc)此时参数 θ c \theta_c θc的极大似然估计 θ ^ c \hat\theta_c θ^c θ ^ c = a r g   m a x θ c L L ( θ c ) \hat\theta_c=\underset{\theta_c}{arg\ max}LL(\theta_c) θ^c=θcarg maxLL(θc)

3、朴素贝叶斯分类器

基于贝叶斯公式来估计后验概率 P ( c ∣ x ) P(c|x) P(cx) 的主要困难在于类条件概率 P ( x ∣ c ) P(x|c) P(xc)难以计算,为避开这个障碍,朴素贝叶斯分类器假设同一类别里的所有属性相互独立,那么 P ( c ∣ x ) = P ( c ) P ( x ∣ c ) P ( x ) = P ( c ) P ( x ) ∏ i = 1 d P ( x i ∣ c ) P(c|x)=\frac{P(c)P(x|c)}{P(x)}=\frac{P(c)}{P(x)}\prod\limits_{i=1}^{d}P(x_i|c) P(cx)=P(x)P(c)P(xc)=P(x)P(c)i=1dP(xic)其中d为属性数目, x i x_i xi x x x在第i个属性的取值。由于对所有类别来说 P ( x ) P(x) P(x)相同,因此 h ∗ ( x ) h^*(x) h(x)可改写为 h ∗ ( x ) = a r g max ⁡ c ∈ y P ( c ) ∏ i = 1 d P ( x i ∣ c ) h^*(x)=\underset{c\in y}{arg\max}P(c)\prod\limits_{i=1}^{d}P(x_i|c) h(x)=cyargmaxP(c)i=1dP(xic)
这就是朴素贝叶斯分类器的表达式。显然,我们的任务就是基于训练集 D D D来估计类先验概率 P ( c ) P(c) P(c),并为每个属性估计条件概率 P ( x i ∣ c ) P(x_i|c) P(xic)。令 D c D_c Dc表示训练集 D D D中第 c c c类样本组成的集合,若有充足的独立同分布样本,则可容易地估计出类先验概率 P ( c ) = ∣ D c ∣ D P(c)=\frac{|D_c|}{D} P(c)=DDc对离散属性而言,令 D c , x i D_{c,x_i} Dc,xi表示 D c D_c Dc中在第i个属性上取值为 x i x_i xi地样本组成的集合,则条件概率 P ( x i ∣ c ) P(x_i|c) P(xic)可估计为 P ( x i ∣ c ) = ∣ D c , x i ∣ ∣ D c ∣ P(x_i|c)=\frac{|D_{c,x_i}|}{|D_c|} P(xic)=DcDc,xi
对连续属性,我们可以根据它的概率密度函数来计算,假设 P ( x i ∣ c ) ∼ N ( μ c , i , σ c , i 2 ) P(x_i|c)\sim N(\mu_{c,i},\sigma_{c,i}^2) P(xic)N(μc,i,σc,i2),其中 μ c , i \mu_{c,i} μc,i σ c , i 2 \sigma_{c,i}^2 σc,i2分别是第 c c c类样本在第 i i i个属性上取值的均值和方差,则有 p ( x i ∣ c ) = 1 2 π σ c , i 2 e x p ( − ( x i − μ c , i ) 2 2 σ c , i 2 ) p(x_i|c)=\frac{1}{\sqrt{2\pi}\sigma_{c,i}^2}exp\bigg(-\frac{(x_i-\mu_{c,i})^2}{2\sigma^2_{c,i}}\bigg) p(xic)=2π σc,i21exp(2σc,i2(xiμc,i)2)

4、半朴素贝叶斯分类器

在朴素贝叶斯分类器中,我们假设属性是相互独立的,但在现实任务中这个假设往往很难成立,于是就出现了半朴素贝叶斯分类器。半朴素贝叶斯分类器的思想是适当考虑一部分属性间的相互依赖信息.
最常用的策略是“独依赖估计”,假设每个属性在类别之外可多依赖一个属性,假设 p a i pa_i pai为属性 x i x_i xi所依赖的属性,称为 x i x_i xi的父属性,此时,对每个属性 x i x_i xi,若其父属性 p a i pa_i pai已知,则 P ( x ∣ c ) ∝ P ( c ) ∏ i = 1 d P ( x i ∣ c , p a i ) P(x|c) \propto P(c)\prod\limits_{i=1}^{d}P(x_i|c,pa_i) P(xc)P(c)i=1dP(xicpai)我们的主要问题就转化成确定每个属性的父属性,解决方法有很多种,不同解法产生不同的独依赖分类器。

最直接的方法是假设所有属性都依赖于同一个属性,称为“超父”(SPODE), 然后通过交叉验证等模型选择方法来确定超父属性,一个个地将尝试将属性作为超父属性,比较他们的效果,最终选择出最合适的一个属性来作为超父属性。
在这里插入图片描述

TAN 引入了条件互信息这一参数来帮助寻找父属性,它确定父属性的具体步骤如下:

  1. 计算任意两个属性间的条件互信息 I ( x i , x j ∣ y ) = ∑ x i , x j ; c ∈ y P ( x i , x j ∣ c ) I(x_i,x_j|y)=\sum\limits_{x_i,x_j;c\in y}P(x_i,x_j|c) I(xi,xjy)=xi,xj;cyP(xi,xjc)
  2. 以属性为节点构造完全图,任意两结点之间的权重设为 I ( x i , x j ∣ y ) I(x_i,x_j|y) I(xi,xjy)
  3. 构建此完全图的最大带权生成树,挑选根变量,将边置为有向
  4. 加入类别结点 y y y,增加从 y y y到每个属性的有向边。

条件互信息 I ( x i , x j ∣ y ) I(x_i,x_j|y) I(xi,xjy)刻画了属性 x i x_i xi y i y_i yi在已知类别情况下的相关性,
AODE是一种基于集成学习机制,更为强大的独依赖分类器。不是通过模型选择确定超父属性不同,AODE尝试将每个属性作为超父来构建SPODE,然后将具有足够训练数据支撑的SPODE集成起来作为最终结果。设定一个阈值常数 m ′ m^{'} m,于是 P ( c ∣ x ) ∝ ∑ i = 1 , ∣ D x i ∣ ≥ m ′ d P ( c , x i ) ∏ j = 1 d P ( x j ∣ c , x i ) P(c|x) \propto\sum\limits_{i=1, |D_{x_i}|\geq m^{'}}^{d}P(c,x_i)\prod\limits_{j=1}^{d}P(x_j|c,x_i) P(cx)i=1,DximdP(c,xi)j=1dP(xjc,xi)显然,AODE需估计 P ( c , x i ) P(c,x_i) P(c,xi) P ( x j ∣ c , x i ) P(x_j|c,x_i) P(xjc,xi) P ^ ( z , x i ) = ∣ D c , x i ∣ + 1 ∣ D ∣ + N ∗ N i \hat P(z,x_i)=\frac{|D_{c,x_i}|+1}{|D|+N*N_i} P^(z,xi)=D+NNiDc,xi+1 P ^ ( x j ∣ c , x i ) = ∣ D c , x i , x j ∣ + 1 ∣ D c , x i ∣ + N j \hat P(x_j|c,x_i)=\frac{|D_{c,x_i,x_j}|+1}{|D_{c,x_i}|+N_j} P^(xjc,xi)=Dc,xi+NjDc,xi,xj+1
不难看出,与朴素贝叶斯分类器类似,AODE的训练过程也是在训练数据集上对符合条件的样本进行计数的过程,AODE无需模型选择,能通过预计算节省预测时间。

5、贝叶斯网

贝叶斯网亦称信念网,它借助有向无环图来刻画属性间的依赖关系,并使用条件概率表来描述属性的联合概率分布。一个贝叶斯网 B B B由结构 G G G和参数 Θ \Theta Θ 两部分组成,网络结构 G G G是一个有向无环图,每个结点对应于一个属性,若两个属性有直接依赖关系,则它们由一条边来连接起来;参数 Θ \Theta Θ 定量描述这种关系,假设属性 x i x_i xi G G G中的父结点集为 π i \pi_i πi,则 Θ \Theta Θ包含每个属性的条件概率表 θ x i ∣ π i = P B ( x i ∣ π i ) \theta_{x_i|\pi_i}=P_B(x_i|\pi_i) θxiπi=PB(xiπi)

5.1 结构

贝叶斯网络结构有效地表达了属性间的条件独立性。给定父节点集,贝叶斯网假设每个属性与它的非后裔属性独立,则它的联合概率定义为 P B ( x 1 , x 2 , … … , x d ) = ∏ i = 1 d P B ( x i ∣ π i ) = ∏ i = 1 d θ x i ∣ π i P_B(x_1,x_2,……,x_d)=\prod\limits_{i=1}^{d}P_B(x_i|\pi_i)=\prod\limits_{i=1}^{d}\theta_{x_i|\pi_i} PB(x1,x2,,xd)=i=1dPB(xiπi)=i=1dθxiπi

贝叶斯网中三个变量间的典型依赖关系如下:
在这里插入图片描述

在"同父"结构中,给定父结点 x 1 x_1 x1的取值,则 x 3 x_3 x3 x 4 x_4 x4条件独立。在“顺序结构”中,给定 x x x的值,则 y y y z z z条件独立,V 型结构亦称“冲撞”结构,若给定 x 4 x_4 x4的值,则 x 1 , x 2 x_1,x_2 x1,x2必不独立,但若 x 4 x_4 x4的取值完全未知, x 1 , x 2 x_1,x_2 x1,x2却是相互独立的。 P ( x 1 , x 2 ) = ∑ x 4 P ( x 1 , x 2 , x 4 ) = ∑ x 4 P ( x 4 ∣ x 1 , x 2 ) P ( x 1 ) P ( x 2 ) = p ( x 1 ) P ( x 2 ) P(x_1,x_2)=\sum\limits_{x_4}P(x_1,x_2,x_4)=\sum\limits_{x_4}P(x_4|x_1,x_2)P(x_1)P(x_2)=p(x_1)P(x_2) P(x1,x2)=x4P(x1,x2,x4)=x4P(x4x1,x2)P(x1)P(x2)=p(x1)P(x2)这样的独立性称为“边际独立性”,在实际任务中,一个变量的值是否确定,能对另两个变量间的独立性发生影响的现象有很多。比如在同父结构中,给定 x 1 x_1 x1的取值, x 3 x_3 x3 x 4 x_4 x4条件独立,但若 x 1 x_1 x1的取值未知,则 x 3 x_3 x3 x 4 x_4 x4就不独立。

为了分析有向图中变量间的条件独立性,我们可以先使用"有向分离"把有向图转变为一个无向图:

⋅ \cdot 找出有向图中所有的V型结构,在V型结构的两个父结点之间加上一条无向边;
⋅ \cdot 将所有有向边改为无向边。

由此产生的无向图称为“道德图”,令父结点相连的过程称为“道德化”。基于道德图能直观迅速地找到变量间的条件独立性。假定道德图中有变量x,y和变量集合 z = z= z={ z i z_i zi},若从道德图中将集合z去除后,x和y分属两个连通分支,则称变量x和y被z有向分离, x ⊥ y ∣ z x\perp y|z xyz成立。

5.2 学习

若网络结构已知,即属性间的依赖关系已知,那我们只需对每个结点的条件概率表进行估计即可,但在现实生活中我们往往不知道网络结构,于是,我们的首要任务是根据训练数据集来寻找最恰当的贝叶斯网,常用的办法是先定义一个评分函数,以此来估计贝叶斯网和训练数据之间的契合程度,然后基于这个评分函数来寻找结构最优的贝叶斯网。
常用评分函数通常基于信息论准则,它将学习问题看作一个数据压缩任务,学习的目标是找到一个能以最短编码长度描述训练数据的模型,编码的长度包括了描述模型自身所需的字节长度和使用该模型描述数据所需的字节长度。选择编码综合长度最短的贝叶斯网,这就是"最小描述长度"准则。
给定训练集 D = D= D={ x 1 , x 2 , … … , x m x_1,x_2,……,x_m x1,x2,,xm},贝叶斯网 B = < G , Θ > B=<G,\Theta> B=<G,Θ>定义在 D D D上的评分函数为 s ( B ∣ D ) = f ( θ ) ∣ B ∣ − L L ( B ∣ D ) L L ( B ∣ D ) = ∑ i = 1 m l o g P B ( x i ) s(B|D)=f(\theta)|B|-LL(B|D) \\ LL(B|D)=\sum\limits_{i=1}^{m}logP_B(x_i) s(BD)=f(θ)BLL(BD)LL(BD)=i=1mlogPB(xi)其中, f ( θ ) f(\theta) f(θ)描述每个参数 θ \theta θ所需的字节数, ∣ B ∣ |B| B是贝叶斯网的参数个数。显然,第一项计算的是编码贝叶斯网B所需要的字节数,第二项 L L ( B ∣ D ) LL(B|D) LL(BD)是贝叶斯网B的对数似然。很明显,我们希望第一项尽可能小,第二项尽可能大,于是,我们的任务就变成了寻找一个使 s ( B ∣ D ) s(B|D) s(BD)最小的贝叶斯网。
f ( θ ) = 1 f(\theta)=1 f(θ)=1,即每个参数用1字节描述,则得到AIC评分函数 A I C ( B ∣ D ) = ∣ B ∣ − L L ( B ∣ D ) AIC(B|D)=|B|-LL(B|D) AIC(BD)=BLL(BD) f ( θ ) = 1 2 l o g m f(\theta)=\frac{1}{2}log m f(θ)=21logm,即每个参数用 1 2 l o g m \frac{1}{2}log m 21logm字节描述,则得到BIC评分函数 B I C ( B ∣ D ) = l o g m 2 ∣ B ∣ − L L ( B ∣ D ) BIC(B|D)=\frac{log m}{2}|B|-LL(B|D) BIC(BD)=2logmBLL(BD)
f ( θ ) = 0 f(\theta)=0 f(θ)=0,则我们的任务就变成了求极大似然估计。

当网络结构固定时,评分函数的第一项为常数,这是,我们只需对参数 Θ \Theta Θ求极大似然估计就可最小化 s ( B ∣ D ) s(B|D) s(BD)。参数 θ x i ∣ π i \theta_{x_i|\pi_i} θxiπi能直接在训练数据D上通过经验估计获得,即 θ x i ∣ π i = P ^ D ( x i ∣ π i ) \theta_{x_i|\pi_i}=\hat P_D(x_i|\pi_i) θxiπi=P^D(xiπi)因此,我们直接在训练集上进行计算就能找到最优参数了。

5.3 推断

贝叶斯网训练好之后就能通过一些属性变量的观测值来推测其他属性变量的取值。比如在西瓜问题中,我们观测到西瓜色泽青绿,敲声浊响,想知道它是否成熟、甜度如何。这样通过已知变量来推测待查询变量的过程称为推断,已知变量的观测值称为"证据"。
最理想的是直接根据贝叶斯网定义的联合概率分布来精确计算后验概率,但这种方法实现起来比较困难,此时需借助“近似推断”,通过降低精度要求,在有限的时间内求得近似解,在现实应用中,贝叶斯网得近似推断常使用“布吉斯采样”来完成,下面看一下它是如何工作的。
Q = Q= Q={ Q 1 , Q 2 , … … , Q n Q_1,Q_2,……,Q_n Q1,Q2,,Qn}表示待查询变量, E = E= E={ E 1 , E 2 , … … , E k E_1,E_2,……,E_k E1,E2,,Ek}为证据变量,已知其取值为 e = e= e={ e 1 , e 2 , … … , e k e_1,e_2,……,e_k e1,e2,,ek},

6、EM算法

在之前的讨论中,我们一直假设训练样本所有属性变量的值都已被观测到, 但在现实任务中,往往会遇到不完整的训练样本。对于这种存在“未观测”变量的情形,怎么对模型参数进行估计呢?
未观测变量的学名是“隐变量",令X表示已观测变量集,Z表示隐变量集, Θ \Theta Θ表示模型参数,若欲对 Θ \Theta Θ做极大似然估计,则应最大化 L L ( Θ ∣ X , Z ) = l n P ( X , Z ∣ Θ ) LL(\Theta|X,Z)=lnP(X,Z|\Theta) LL(ΘX,Z)=lnP(X,ZΘ)由于Z是隐变量,上式无法直接求解,此时我们可以通过对z计算期望来最大化已观测数据的对数似然, L L ( Θ ∣ X ) = l n P ( X ∣ Θ ) = l n ∑ Z P ( X , Z ∣ Θ ) LL(\Theta|X)=lnP(X|\Theta)=ln\sum_ZP(X,Z|\Theta) LL(ΘX)=lnP(XΘ)=lnZP(X,ZΘ)
EM算法时常用的估计参数隐变量的利器,它是一种迭代式的方法,其基本想法是:若参数 Θ \Theta Θ 已知,则可根据训练的数据推断出最优隐变量z的值,反之,若z的值已知,则可方便地对参数 Θ \Theta Θ 做极大似然估计。

于是,以初始值 Θ 0 \Theta^0 Θ0 为起点,可迭代执行以下操作直至收敛:

∙ \bullet 基于 Θ t \Theta^t Θt 推断隐变量z的期望,记为 Z t Z^t Zt
∙ \bullet 基于已观测变量X和 Z t Z^t Zt对参数 Θ \Theta Θ做极大似然估计,记为 Θ t + 1 \Theta^{t+1} Θt+1

若我们不是取Z的期望,而是基于 Θ t \Theta^{t} Θt计算隐变量z的概率分布 P ( Z ∣ X , Θ t ) P(Z|X,\Theta^t) P(ZX,Θt),则EM算法的两个步骤是:
∙ \bullet E步:以当前参数 Θ t \Theta^t Θt推断隐变量分布 P ( Z ∣ X , Θ t ) P(Z|X,\Theta^t) P(ZX,Θt),并计算对数似然 L L ( Θ ∣ X , Z ) LL(\Theta|X,Z) LL(ΘX,Z)关于Z的期望 Q ( Θ ∣ Θ t ) = E Z ∣ X , Θ t L L ( Θ ∣ X , Z ) Q(\Theta|\Theta^t)=E_{Z|X,\Theta^t}LL(\Theta|X,Z) Q(ΘΘt)=EZX,ΘtLL(ΘX,Z)
∙ \bullet 寻找参数最大化期望似然,即 Θ t + 1 = a r g max ⁡ Θ   Q ( Θ ∣ Θ t ) \Theta^{t+1}=\underset{\Theta}{arg\max} \ Q(\Theta|\Theta^t) Θt+1=Θargmax Q(ΘΘt)
简单来说,EM算法使用两个步骤交替计算:第一步利用当前估计的参数值来计算对数似然的期望值;第二步是寻找能使E步产生的似然期望最大化的参数值。然后得到的参数值重新用于E步,直至收敛至局部最优解。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值