对分类任务来说,在所有相关概率都已知的理想情形下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记,假设有 N N N中可能的类别标记,即 y = { c 1 , c 2 , . . . , c N } y = \{ {c_1},{c_2},...,{c_N}\} y={c1,c2,...,cN}, λ i j {\lambda _{ij}} λij是将一个真实标记为 c j c_j cj的样本误分类为 c i c_i ci所产生的损失,基于后验概率 P ( c i ∣ x ) P({c_i}|{\bf{x}}) P(ci∣x)可获得将样本 x \bf{x} x分类为 c i c_i ci所产生的期望损失,即在样本 x \bf{x} x上的“条件风险”:
R ( c i ∣ x ) = ∑ j = 1 N λ i j P ( c j ∣ x ) R({c_i}|{\bf{x}}) = \sum\limits_{j = 1}^N {{\lambda _{ij}}P({c_j}|{\bf{x}})} R(ci∣x)=j=1∑NλijP(cj∣x)
我们的任务是寻找一个判定准则 h : x ↦ y h:x \mapsto y h:x↦y以最小化总体风险:
R ( h ) = E x [ R ( h ( x ) ∣ x ) ] R(h) = {\mathbb{E}_{\bf{x}}}[R(h({\bf{x}})|{\bf{x}})] R(h)=Ex[R(h(x)∣x)]
显然,对每个样本 x \bf{x} x,若 h h h能最小化条件风险 R ( h ( x ) ∣ x ) R(h({\bf{x}})|{\bf{x}}) R(h(x)∣x),则总体风险 R ( h ) R(h) R(h)也将被最小化,这就产生了贝叶斯判定准则:为最小化总体风险,只需在每个样本上选择那个能使条件风险 R ( c ∣ x ) R(c|\bf{x}) R(c∣x)最小的类别标记,即
h ∗ ( x ) = arg min c ∈ y R ( c ∣ x ) {h^*}({\bf{x}}) = \mathop {\arg \min }\limits_{c \in y} R(c|{\bf{x}}) h∗(x)=c∈yargminR(c∣x)
此时, h ∗ h^* h∗称为贝叶斯最优分类器,与之对应的 R ( h ∗ ) R(h^*) R(h∗)称为贝叶斯风险, 1 − R ( h ∗ ) 1-R(h^*) 1−R(h∗)反映了分类器所能达到的最好性能,即通过机器学习所能产生的模型精度的理论上限。
不难看出,欲使用贝叶斯判定准则来最小化决策风险,首先要获得后验概率 P ( c ∣ x ) P(c|\bf{x}) P(c∣x),然而在现实任务中这通常难以直接获得,所以机器学习所要实现的是基于有限的训练样本集尽可能准确地估计出后验概率 P ( c ∣ x ) P(c|\bf{x}) P(c∣x),目前共有以下两种策略:
P ( c ∣ x ) = P ( x , c ) P ( x ) = P ( c ) P ( x ∣ c ) P ( x ) P(c|{\bf{x}}) = \frac{{P({\bf{x}},c)}}{{P({\bf{x}})}} = \frac{{P(c)P({\bf{x}}|c)}}{{P({\bf{x}})}} P(c∣x)=P(x)P(x,c)=P(x)P(c)P(x∣c)
其中 P ( c ) P(c) P(c)是类“先验”概率, P ( x ∣ c ) P(\bf{x}|c) P(x∣c)是样本 x \bf{x} x相对于类标记 c c c的类条件概率(也叫“似然”), P ( x ) P(\bf{x}) P(x)是用于归一化的“证据”因子。对于给定的样本 x \bf{x} x,证据因子 P ( x ) P(\bf{x}) P(x)与类标记无关,因此估计 P ( c ∣ x ) P(c|\bf{x}) P(c∣x)的问题就转化为如何基于训练数据 D D D来估计先验 P ( c ) P(c) P(c)和似然 P ( x ∣ c ) P(\bf{x}|c) P(x∣c)。
类先验概率 P ( c ) P(c) P(c)表达了样本空间中各类样本所占的比例,根据大数定律,当训练集包含充足的独立同分布样本时, P ( c ) P(c) P(c)可通过各类样本出现的概率来进行估计。
对类条件概率 P ( x ∣ c ) P(\bf{x}|c) P(x∣c)来说,由于它涉及关于 x \bf{x} x所有属性的联合概率,直接根据样本出现的概率来估计将会遇到严重的困难。
估计类条件概率的一种常用策略是先假定其具有某种确定的概率分布形式,再基于训练样本对概率分布的参数进行估计,假设 P ( x ∣ c ) P(\bf{x}|c) P(x∣c)具有确定的形式并且被参数向量 θ c \theta_c θc唯一确定,那么需要用训练集 D D D来估计参数 θ c \theta_c θ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 ∣ θ c ) P({D_c}|{\theta _c}) = \prod\limits_{{\bf{x}} \in {D_c}} {P({\bf{x}}|{\theta _c})} P(Dc∣θc)=x∈Dc∏P(x∣θc)
考虑到连乘操作易造成下溢(小实值连乘),通常使用对数似然,如下所示
L L ( θ c ) = log P ( D c ∣ θ c ) = ∑ x ∈ D c log P ( x ∣ θ c ) LL({\theta _c}) = \log P({D_c}|{\theta _c}) = \sum\limits_{{\bf{x}} \in {D_c}} {\log P({\bf{x}}|{\theta _c})} LL(θc)=logP(Dc∣θc)=x∈Dc∑logP(x∣θc)
这样对 θ c \theta_c θc进行极大似然估计,寻找到能最大化似然 P ( D c ∣ θ c ) P(D_c|\theta_c) P(Dc∣θc)的参数值 θ ^ c \hat{\theta}_c θ^c,如下所示
θ ^ c = arg max θ c L L ( θ c ) {\hat\theta _c} = \mathop {\arg \max }\limits_{{\theta _c}} LL({\theta _c}) θ^c=θcargmaxLL(θc)
下面对极大似然举个例子
基于贝叶斯公式来估计后验概率的主要困难在于:类条件概率是所有属性上的联合概率,难以从有限的训练样本直接估计而得;而且基于有限训练样本直接估计联合概率,在计算上将会遭遇组合爆炸问题,在数据上将会遭遇样本稀疏问题(属性数越多,问题越严重)。
为避开这个障碍,朴素贝叶斯分类器采用了“属性条件独立性假设”:对已知类别,假设所有属性相互独立,也就是假设每个属性独立地对分类结果发生影响,如下所示,其中 d d d为属性数目, x i x_i xi为 x \bf{x} x在第 i i i个属性上的取值。
P ( c ∣ x ) = P ( c ) P ( x ∣ c ) P ( x ) = P ( c ) P ( x ) ∏ i = 1 d P ( x i ∣ c ) P(c|{\bf{x}}) = \frac{{P(c)P({\bf{x}}|c)}}{{P({\bf{x}})}} = \frac{{P(c)}}{{P({\bf{x}})}}\prod\limits_{i = 1}^d {P({{x}_i}|c)} P(c∣x)=P(x)P(c)P(x∣c)=P(x)P(c)i=1∏dP(xi∣c)
贝叶斯判定准则如下所示
h n b ( x ) = arg max c ∈ y P ( c ) ∏ i = 1 d P ( x i ∣ c ) {h_{nb}}({\bf{x}}) = \mathop {\arg \max }\limits_{c \in y} P(c)\prod\limits_{i = 1}^d {P({x_i}|c)} hnb(x)=c∈yargmaxP(c)i=1∏dP(xi∣c)
令 D c D_c Dc表示训练集 D D D中第 c c c类样本组成的集合,若有充足的独立同分布样本,则可容易地估计出类先验概率 P ( c ) = ∣ D c ∣ ∣ D ∣ P(c) = \frac{{\left| {{D_c}} \right|}}{{\left| D \right|}} P(c)=∣D∣∣Dc∣。
对离散属性而言,令 D c , x i D_{c,x_i} Dc,xi表示 D c D_c Dc中在第 i i i个属性上取值为 x i x_i xi的样本组成的集合,则条件概率 P ( x i ∣ c ) P(x_i|c) P(xi∣c)可估计为
P ( x i ∣ c ) = ∣ D c , x i ∣ ∣ D c ∣ P({x_i}|c) = \frac{{\left| {{D_{c,{x_i}}}} \right|}}{{\left| {{D_c}} \right|}} P(xi∣c)=∣Dc∣∣Dc,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(xi∣c)∼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 exp ( − ( x i − μ c , i ) 2 2 σ c , i 2 ) p({x_i}|c) = \frac{1}{{\sqrt {2\pi } {\sigma _{c,i}}}}\exp ( - \frac{{{{({x_i} - {\mu _{c,i}})}^2}}}{{2\sigma _{c,i}^2}}) p(xi∣c)=2πσc,i1exp(−2σc,i2(xi−μc,i)2)
下面对朴素贝叶斯分类器举个例子
半朴素贝叶斯分类器的基本想法是适当考虑一部分属性间的相互依赖信息,从而既不需进行完全联合概率计算,又不至于彻底忽略了比较强的属性依赖关系。“独依赖估计”是半朴素贝叶斯分类器最常用的一种策略,假设每个属性在类别之外最多仅依赖于一个其他属性,即
P ( c ∣ x ) ∝ P ( c ) ∏ i = 1 d P ( x i ∣ c , p a i ) P(c|{\bf{x}}) \propto P(c)\prod\limits_{i = 1}^d {P({x_i}|c,p{a_i})} P(c∣x)∝P(c)i=1∏dP(xi∣c,pai)
其中 p a i pa_i pai为属性 x i x_i xi所依赖的属性,称为 x i x_i xi的父属性,为了确定每个属性的父属性,最直接的做法是假设所有属性都依赖于同一个属性,称为“超父”,然后通过交叉验证等模型选择方法来确定超父属性。
贝叶斯网借助有向无环图来刻画属性之间的依赖关系,并使用条件概率表来描述属性的联合概率分布。具体来说,一个贝叶斯网 B B B由结构 G G G和参数 Θ \Theta Θ两部分构成,即 B = ⟨ G , Θ ⟩ B = \left\langle {G,\Theta } \right\rangle B=⟨G,Θ⟩。网络结构 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)。
下面举例说明一下贝叶斯网,如下图所示,“色泽”直接依赖于“好瓜”和“甜度”,而“根蒂”则直接依赖于“甜度”,进一步可以从条件概率表中得到“根蒂”对“甜度”的量化依赖关系,如 P P P(根蒂=硬挺|甜度=高)=0.1等。
(1)结构
贝叶斯网结构有效地表达了属性间的条件独立性,给定父结点集,贝叶斯网假设每个属性与它的非后裔属性独立,于是 B = ⟨ G , Θ ⟩ B = \left\langle {G,\Theta } \right\rangle B=⟨G,Θ⟩将属性 x i , x 2 , . . . , x d x_i,x_2,...,x_d xi,x2,...,xd的联合概率分布定义为
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=1∏dPB(xi∣πi)=i=1∏dθ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 V V型结构又叫“冲撞”结构,给定子结点 x 4 x_4 x4的取值, x 1 x_1 x1与 x 2 x_2 x2必不独立,而若 x 4 x_4 x4的取值完全未知,则 V V V型结构下 x 1 x_1 x1与 x 2 x_2 x2却是相互独立的。这样的独立性又叫“边际独立性”。
为了分析有向图中变量间的条件独立性,可使用“有向分离”:
(2)学习
贝叶斯网学习的首要任务就是根据训练数据集来找出结构最“恰当”的贝叶斯网,“评分搜索”是求解这一问题的常用方法,通过定义一个评分函数来评估贝叶斯网与训练数据的契合程度,然后基于这个评分函数来寻找结构最优的贝叶斯网。
常用评分函数通常基于信息论准则,此类准则将学习问题看作一个数据压缩任务,学习的目标是找到一个能以最短编码长度描述训练数据的模型。对于贝叶斯网学习而言,模型就是一个贝叶斯网,同时,每个贝叶斯网描述了一个在训练数据上的概率分布,自有一套编码机制能使那些经常出现的样本有更短编码,所以我们应该选择那个综合编码长度最短的贝叶斯网,这就是“最小描述长度”准则。
给定训练集 D = { x 1 , x 2 , . . . , x m } D = \{ {x_1},{x_2},...,{x_m}\} D={x1,x2,...,xm},贝叶斯网 B = ⟨ G , Θ ⟩ B = \left\langle {G,\Theta } \right\rangle B=⟨G,Θ⟩在 D D D上的评分函数可写为如下所示,其中 ∣ B ∣ \left| B \right| ∣B∣是贝叶斯网的参数个数, f ( θ ) f(\theta ) f(θ)表示描述每个参数 θ \theta θ所需的编码位数。
s ( B ∣ D ) = f ( θ ) ∣ B ∣ − L L ( B ∣ D ) s(B|D) = f(\theta )\left| B \right| - LL(B|D) s(B∣D)=f(θ)∣B∣−LL(B∣D)
式中第一项是计算编码贝叶斯网 B B B所需的编码位数,第二项是计算 B B B所对应的概率分布 P B P_B PB对 D D D描述得有多好。于是,学习任务就转化为一个优化任务,也就是寻找一个贝叶斯网 B B B使评分函数 s ( B ∣ D ) s(B|D) s(B∣D)最小。
若 f ( θ ) = 1 f(\theta)=1 f(θ)=1,即每个参数用 1 1 1编码位描述,则得到 A I C AIC AIC评分函数
A I C ( B ∣ D ) = ∣ B ∣ − L L ( B ∣ D ) AIC(B|D) = \left| B \right| - LL(B|D) AIC(B∣D)=∣B∣−LL(B∣D)
若 f ( θ ) = 1 2 log m f(\theta ) = \frac{1}{2}\log m f(θ)=21logm,即每个参数用 1 2 log m \frac{1}{2}\log m 21logm编码位描述,则得到 B I C BIC BIC评分函数
B I C ( B ∣ D ) = log m 2 ∣ B ∣ − L L ( B ∣ D ) BIC(B|D) = \frac{{\log m}}{2}\left| B \right| - LL(B|D) BIC(B∣D)=2logm∣B∣−LL(B∣D)
若 f ( θ ) = 0 f(\theta)=0 f(θ)=0,即不计算对网络进行编码的长度,则评分函数退化为负对数似然,相应的,学习任务退化为极大似然估计。
(3)推断
推断指的是通过已知变量观测值来推测待查询变量的过程,最理想的是直接根据贝叶斯网定义的联合概率分布来精确计算后验概率,但这是一个 N P NP NP难问题,在现实应用中,贝叶斯网的近似推断常用吉布斯采样来完成,这是一种随机采样办法,如下所示。
现实生活往往会遇到“不完整”的训练样本,例如西瓜的根蒂已脱落,无法看出是“蜷缩”还是“硬挺”。未观测变量的学名是“隐变量”。令 X \bf{X} X表示已观测变量集, Z \bf{Z} Z表示隐变量集, Θ \Theta Θ表示模型参数。若想对 Θ \Theta Θ做极大似然估计,则应最大化对数似然
L L ( Θ ∣ X , Z ) = ln P ( X , Z ∣ Θ ) LL(\Theta |{\bf{X}},{\bf{Z}}) = \ln P({\bf{X}},{\bf{Z}}|\Theta ) LL(Θ∣X,Z)=lnP(X,Z∣Θ)
然而由于 Z \bf{Z} Z是隐变量,上式无法直接求解,此时可以通过对 Z \bf{Z} Z计算期望,来最大化已观测数据的对数“边际似然”
L L ( Θ ∣ X ) = ln P ( X ∣ Θ ) = ln ∑ Z P ( X , Z ∣ Θ ) LL(\Theta |{\bf{X}}) = \ln P({\bf{X}}|\Theta ) = \ln \sum {_{\bf{Z}}P({\bf{X}},{\bf{Z}}|\Theta )} LL(Θ∣X)=lnP(X∣Θ)=ln∑ZP(X,Z∣Θ)
E M EM EM算法是常用的估计参数隐变量的利器,它是一种迭代式的方法,其基本想法是:若参数 Θ \Theta Θ已知,则可根据训练数据推断出最优隐变量 Z \bf{Z} Z的值( E E E步);反之,若 Z \bf{Z} Z的值已知,则可方便地对参数 Θ \Theta Θ做极大似然估计( M M M步)。
于是,以初始值 Θ 0 \Theta^0 Θ0为起点,可迭代执行以下步骤直至收敛:
若我们不是取 Z \bf{Z} Z的期望,而是基于 Θ t \Theta^t Θt计算隐变量 Z \bf{Z} Z的概率分布 P ( Z ∣ X , Θ t ) P({\bf{Z}}|{\bf{X}},{\Theta ^t}) P(Z∣X,Θt),则 E M EM EM算法的两个步骤是:
Q ( Θ ∣ Θ t ) = E Z ∣ X , Θ t L L ( Θ ∣ X , Z ) Q(\Theta |{\Theta ^t}) = {\mathbb{E}_{{\bf{Z}}|{\bf{X}},{\Theta ^t}}}LL(\Theta |{\bf{X}},{\bf{Z}}) Q(Θ∣Θt)=EZ∣X,ΘtLL(Θ∣X,Z)
Θ t + 1 = arg max Θ Q ( Θ ∣ Θ t ) {\Theta ^{t + 1}} = \mathop {\arg \max }\limits_\Theta Q(\Theta |{\Theta ^t}) Θt+1=ΘargmaxQ(Θ∣Θt)