主要来自周志华《机器学习》一书和博主nebulaf91的原创博客,包含自己的理解。
有任何的书写错误、排版错误、概念错误等,希望大家包含指正。
由于字数限制,分成两篇博客。
【机器学习】贝叶斯分类器【上】
【机器学习】贝叶斯分类器【下】
为了降低贝叶斯公式 ( 8 ) (8) (8) 中估计后验概率 P ( c ∣ x ) P(c\space | \space \pmb x) P(c ∣ xx) 的困难,朴素贝叶斯分类器采用了属性条件独立性假设,但在现实任务中这个假设往往很难成立。于是,人们尝试对属性条件独立性假设进行一定程度的放松,由此产生了一类称为“半朴素贝叶斯分类器”(semi-naive Bayes classifiers)的学习方法。
半朴素贝叶斯分类器的基本想法是适当考虑一部分属性间的相互依赖信息,从而既不需进行完全联合概率计算,又不至于彻底忽略了比较强的属性依赖关系。“独依赖估计”(One-Dependent Estimator,简称 ODE)是半朴素贝叶斯分类器最常用的一种策略。顾名思议,所谓“独依赖”就是假设每个属性在类别之外最多仅依赖于一个其他属性,即
P ( c ∣ x ) ∝ P ( c ) ∏ i = 1 d P ( x i ∣ c , p a i ) (21) P(c\space |\space \pmb x) \propto P(c)\prod_{i=1}^dP(x_i \space | \space c,pa_i)\tag{21} P(c ∣ xx)∝P(c)i=1∏dP(xi ∣ c,pai)(21)
其中 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 已知,则可采用类似式 ( 20 ) (20) (20) 的办法来估计概率值 P ( x i ∣ c , p a i ) P(x_i \space |\space c, pa_i) P(xi ∣ c,pai) 。
基于式 ( 6 ) (6) (6) 的贝叶斯判定准则有
h s b = a r g m a x c ∈ Y P ( c ) ∏ i = 1 d P ( x i ∣ c , p a i ) (22) h_{sb}=\mathop{arg\space max} \limits_{c∈\mathcal{Y}}P(c)\prod_{i=1}^dP(x_i \space | \space c,pa_i)\tag{22} hsb=c∈Yarg maxP(c)i=1∏dP(xi ∣ c,pai)(22)
这就是采用 ODE 策略的半朴素贝叶斯分类器的表达式。
于是,问题的关键就转化为如何确定每个属性的父属性,不同的做法产生不同的独依赖分类器。
最直接的做法是假设所有属性都依赖于同一个属性,称为“超父”(super-parent),然后通过交叉验证等模型选择方法来确定超父属性,由此形成了SPODE (Super-Parent ODE)方法。例如,在图 5 ( b ) 5(\rm b) 5(b) 中, x 1 x_1 x1 是超父属性。
图 5 朴素贝叶斯与两种半朴素贝叶斯分类器所考虑的属性依赖关系
TAN(Tree Augmented naive Bayes)则是在最大带权生成树(maximum weighted spanning tree)算法的基础上,通过以下步骤将属性间依赖关系约简为如图 5 ( c ) 5(\rm c) 5(c) 所示的树形结构:
最大生成树算法与最小生成树算法原理一致,实现中只是优先考虑最小权重的边。
常见的最大生成树算法为 Kruskal 算法和 Prim 算法。
( 1 ) (1) (1) 计算任意两个属性之间的条件互信息(conditional mutual information)
I ( x i , x j ∣ y ) = ∑ x i , x j ; c ∈ Y P ( x i , x j ∣ c ) l o g P ( x i , x j ∣ c ) P ( x i ∣ c ) P ( x j ∣ c ) (23) I(x_i,x_j\space |\space y) = \sum_{x_i,x_j;\space c∈\mathcal{Y}}P(x_i,x_j\space |\space c) \space {\rm log} \frac{P(x_i,x_j\space |\space c)}{P(x_i \space |\space c)P(x_j\space |\space c)}\tag{23} I(xi,xj ∣ y)=xi,xj; c∈Y∑P(xi,xj ∣ c) logP(xi ∣ c)P(xj ∣ c)P(xi,xj ∣ c)(23)
互信息有两种定义方式,先看式 ( 23 ) (23) (23) 中用到的定义。两个离散随机变量 X X X 和 Y Y Y 的互信息定义为
I ( X , Y ) = ∑ x ∈ X ∑ y ∈ Y P ( x , y ) l o g P ( x , y ) P ( x ) P ( y ) (24) I(X,Y)=\sum_{x∈X} \sum_{y∈Y} P(x,y)\space {\rm log} \frac{P(x,y)}{P(x)P(y)} \tag{24} I(X,Y)=x∈X∑y∈Y∑P(x,y) logP(x)P(y)P(x,y)(24)
其中 P ( x , y ) P(x,y) P(x,y) 是 X X X 和 Y Y Y 的联合概率分布函数,而 P ( x ) P(x) P(x) 和 P ( y ) P(y) P(y) 分别是 X X X 和 Y Y Y 的边缘概率分布函数。在连续随机变量的情形下,求和被替换成了二重定积分:
I ( X , Y ) = ∫ X ∫ Y p ( x , y ) l o g p ( x , y ) p ( x ) p ( y ) (25) I(X,Y)=\int_X\int_Y p(x,y)\space {\rm log} \frac{p(x,y)}{p(x)p(y)} \tag{25} I(X,Y)=∫X∫Yp(x,y) logp(x)p(y)p(x,y)(25)
其中 p ( x , y ) p(x,y) p(x,y) 是 X X X 和 Y Y Y 的联合概率密度函数,而 p ( x ) p(x) p(x) 和 p ( y ) p(y) p(y) 分别是 X X X 和 Y Y Y 的边缘概率密度函数。互信息是信息论中用以评价两个随机变量之间的依赖程度的一个度量。可以通俗地理解为,度量了解其中一个随机变量时,对另一个变量的掌握程度。例如,如果 X X X 和 Y Y Y 相互独立,则知道 X X X 不对 Y Y Y 提供任何信息,反之亦然,所以它们的互信息为零。在另一个极端,如果 X X X 是 Y Y Y 的一个确定性函数,且 Y Y Y 也是 X X X 的一个确定性函数,那么传递的所有信息被 X X X 和 Y Y Y 共享:知道 X X X 决定 Y Y Y 的值,反之亦然。因此,在此情形互信息与 Y Y Y(或 X X X)单独包含的不确定度相同,称作 Y Y Y(或 X X X)的熵。而且,这个互信息与 X X X 的熵和 Y Y Y 的熵相同。(这种情形的一个非常特殊的情况是当 X X X 和 Y Y Y 为相同随机变量时)
互信息是 X X X 和 Y Y Y 联合分布相对于假定 X X X 和 Y Y Y 独立情况下的联合分布之间的内在依赖性。于是互信息以下面方式度量依赖性: I ( X , Y ) = 0 I(X,Y) = 0 I(X,Y)=0 当且仅当 X X X 和 Y Y Y 为独立随机变量。从一个方向很容易看出:当 X X X 和 Y Y Y 独立时, P ( x , y ) = P ( x ) P ( y ) P(x,y) = P(x) P(y) P(x,y)=P(x)P(y),因此
l o g P ( x , y ) P ( x ) P ( y ) = l o g 1 = 0 {\rm log}\frac{P(x,y)}{P(x)P(y)} ={\rm log}1 = 0 logP(x)P(y)P(x,y)=log1=0
并且互信息是非负( I ( X , Y ) ≥ 0 I(X,Y) \ge 0 I(X,Y)≥0)且对称的( I ( X , Y ) = I ( Y , X ) I(X,Y) = I(Y,X) I(X,Y)=I(Y,X))。信息论中的互信息可以以熵的形式定义:
根据熵的连锁规则,有
H ( X , Y ) = H ( X ) + H ( Y ∣ X ) = H ( Y ) + H ( X ∣ Y ) (26) H(X,Y)=H(X)+H(Y\mid X)=H(Y)+H(X\mid Y)\tag{26} H(X,Y)=H(X)+H(Y∣X)=H(Y)+H(X∣Y)(26)
因此,
H ( X ) − H ( X ∣ Y ) = H ( Y ) − H ( Y ∣ X ) (27) H(X)-H(X\mid Y)=H(Y)-H(Y\mid X)\tag{27} H(X)−H(X∣Y)=H(Y)−H(Y∣X)(27)
这个差叫做 X X X 和 Y Y Y 的互信息,记作 I ( X , Y ) I(X,Y) I(X,Y) 。按照熵的定义展开可以得到:
I ( X , Y ) = H ( X ) − H ( X ∣ Y ) = H ( X ) + H ( Y ) − H ( X , Y ) = ∑ x p ( x ) l o g 1 p ( x ) + ∑ y p ( y ) l o g 1 p ( y ) − ∑ x , y p ( x , y ) l o g 1 p ( x , y ) = ∑ x , y p ( x , y ) l o g p ( x , y ) p ( x ) p ( y ) \begin{aligned} I(X,Y)&=H(X)-H(X\mid Y)\\ &=H(X)+H(Y)-H(X,Y)\\ &=\sum_xp(x){\rm log}\frac{1}{p(x)}+\sum_yp(y){\rm log}\frac{1}{p(y)}-\sum_{x,y}p(x,y){\rm log}\frac{1}{p(x,y)} \\ &=\sum_{x,y}p(x,y){\rm log} \frac{p(x,y)}{p(x)p(y)} \end{aligned} I(X,Y)=H(X)−H(X∣Y)=H(X)+H(Y)−H(X,Y)=x∑p(x)logp(x)1+y∑p(y)logp(y)1−x,y∑p(x,y)logp(x,y)1=x,y∑p(x,y)logp(x)p(y)p(x,y)
如此便将信息论中的互信息与概率论中的互信息统一起来了。I ( X ; Y ) I(X;Y) I(X;Y) 与 I ( X , Y ) I(X,Y) I(X,Y) 只是互信息不同的符号表示。
简单提一下,相关系数(Pearson correlation coefficients)(皮尔逊相关系数是最常见的,这里只涉及皮尔逊相关系数)与互信息的区别。
相关系数主要用于判断两个随机变量是否线性相关,而互信息可以判断随机变量相关性(线性/非线性)的强弱。不讲述详细区别。
( 2 ) (2) (2) 以属性为结点构建完全图,任意两个结点之间边的权重设为 I ( x i , x j ∣ y ) I(x_i,x_j\space |\space y) I(xi,xj ∣ y);
( 3 ) (3) (3) 构建此完全图的最大带权生成树,挑选根变量,将边置为有向;
( 4 ) (4) (4) 加入类别结点 y y y,增加从 y y y 到每个属性的有向边。
容易看出,条件互信息 I ( x i , x j ∣ y ) I(x_i,x_j\space |\space y) I(xi,xj ∣ y) 刻画了属性 x i x_i xi 和 x j x_j xj,在已知类别情况下的相关性,因此,通过最大生成树算法,TAN 实际上仅保留了强相关属性之间的依赖性。
AODE(Averaged One-Dependent Estimator)是一种基于集成学习机制、更为强大的独依赖分类器。与 SPODE 通过模型选择确定超父属性不同,AODE 尝试将每个属性作为超父来构建 SPODE,然后将那些具有足够训练数据支撑的 SPODE 集成起来作为最终结果,即
P ( c ∣ x ) ∝ ∑ i = 1 d ∣ D x i ∣ ≥ m ′ P ( c , x i ) ∏ j = 1 d P ( x j ∣ c , x i ) (28) P(c\space |\space \pmb x) \propto \mathop{\sum^d_{i=1}} \limits_{|D_{x_i}|\ge m'}P(c,x_i)\prod_{j=1}^dP(x_j\space |\space c,x_i) \tag{28} P(c ∣ xx)∝∣Dxi∣≥m′i=1∑dP(c,xi)j=1∏dP(xj ∣ c,xi)(28)
基于式 ( 6 ) (6) (6) 的贝叶斯判定准则有
h s b = a r g m a x c ∈ Y ∑ i = 1 d ∣ D x i ∣ ≥ m ′ P ( c , x i ) ∏ j = 1 d P ( x j ∣ c , x i ) (29) h_{sb}=\mathop{arg\space max} \limits_{c∈\mathcal{Y}}\mathop{\sum^d_{i=1}} \limits_{|D_{x_i}|\ge m'}P(c,x_i)\prod_{j=1}^dP(x_j\space |\space c,x_i)\tag{29} hsb=c∈Yarg max∣Dxi∣≥m′i=1∑dP(c,xi)j=1∏dP(xj ∣ c,xi)(29)
这就是采用 AODE 策略的半朴素贝叶斯分类器的表达式。
其中 D x i D_{x_i} Dxi 是在第 i i i 个属性上取值为 x i x_i xi 的样本的集合, m ′ m' m′ 为阈值常数,默认 30 30 30 。显然,AODE 需估计 P ( c , x i ) P(c, x_i) P(c,xi) 和 P ( x j ∣ c , x i ) P(x_j\space |\space c, x_i) P(xj ∣ c,xi) 。类似式 ( 20 ) (20) (20),有
P ^ ( c , x i ) = ∣ D c , x i ∣ + 1 ∣ D ∣ + N i (30) \hat{P}(c,x_i)=\frac{|D_{c,x_i}|+1}{|D|+N_i}\tag{30}\\ P^(c,xi)=∣D∣+Ni∣Dc,xi∣+1(30)
P ^ ( x j ∣ c , x i ) = ∣ D c , x i , x j ∣ + 1 ∣ D c , x i ∣ + N j (31) \hat{P}(x_j\space |\space c,x_i)=\frac{|D_{c,x_i,x_j}|+1}{|D_{c,x_i}|+N_j}\tag{31}\\ P^(xj ∣ c,xi)=∣Dc,xi∣+Nj∣Dc,xi,xj∣+1(31)
其中 N N N 是第 i i i 个属性可能的取值数, D c , x i D_{c,x_i} Dc,xi 是类别为 c c c 且在第 i i i 个属性上取值为 x x x 的样本集合, D c , x i , x j D_{c,x_i,x_j} Dc,xi,xj 是类别为 c c c 且在第 i i i 和第 j j j 个属性上取值分别为 x i x_i xi 和 x j x_j xj 的样本集合。例如,对表 1 1 1 西瓜数据集有
P ^ 是 , 浊响 = P ^ ( 好瓜 = 是 , 敲声 = 浊响 ) = 6 + 1 17 + 3 = 0.350 P ^ 凹陷 ∣ 是 , 浊响 = P ^ ( 脐部 = 凹陷 ∣ 好瓜 = 是 , 敲声 = 浊响 ) = 3 + 1 6 + 3 = 0.444 \hat{P}_{是,浊响}=\hat{P}(好瓜=是,敲声=浊响)=\frac{6+1}{17+3}=0.350\\ \hat{P}_{凹陷|是,浊响}=\hat P(脐部=凹陷|好瓜=是,敲声=浊响)=\frac{3+1}{6+3}=0.444 P^是,浊响=P^(好瓜=是,敲声=浊响)=17+36+1=0.350P^凹陷∣是,浊响=P^(脐部=凹陷∣好瓜=是,敲声=浊响)=6+33+1=0.444
不难看出,与朴素贝叶斯分类器类似,AODE 的训练过程也是“计数”,即在训练数据集上对符合条件的样本进行计数的过程。与朴素贝叶斯分类器相似,AODE 无需模型选择,既能通过预计算节省预测时间,也能采取懒惰学习方式在预测时再进行计数,并且易于实现增量学习。
既然将属性条件独立性假设放松为独依赖假设可能获得泛化性能的提升,那么,能否通过考虑属性间的高阶依赖来进一步提升泛化性能呢?也就是说,将式 ( 28 ) (28) (28) 中的属性 p a i pa_i pai 替换为包含 k k k 个属性的集合 p a i {\rm \pmb {pa}}_i papai;,从而将 ODE 拓展为 kDE 。需注意的是,随着 k k k 的增加,准确估计概率 P ( x i ∣ y , p a i ) P(x_i\space |\space y, {\rm\pmb {pa}}_i) P(xi ∣ y,papai) 所需的训练样本数量将以指数级增加。因此,若训练数据非常充分,泛化性能有可能提升;但在有限样本条件下,则又陷入估计高阶联合概率的泥沼。
“高阶依赖”即对多个属性依赖。
贝叶斯网(Bayesian network)亦称“信念网”(belief network),它借助有向无环图(Directed Acyclic Graph,简称 DAG)来刻画属性之间的依赖关系,并使用条件概率表(Conditional Probability Table,简称 CPT)来描述属性的联合概率分布。
概率图模型(probabilistic graphical model)是一类用图来表达变量相关关系的概率模型。它以图为表达工具,最常见的是用一个结点表示一个或一组随机变量,结点之间的边表示变量间的概率相关关系,即“变量关系图”。根据边的性质不同,概率图模型可以大致分为两类:第一类是使用有向无环图表示变量间的依赖关系,称为有向图模型或贝叶斯网;第二类是使用无向图表示变量间的相关关系,称为无向图模型或马尔可夫网(Markov network)。
为了简化讨论,本节假定所有属性均为离散型。对于连续属性,条件概率表可推广为条件概率密度函数。
具体来说,一个贝叶斯网 B B B 由结构 G G G 和参数 Θ \Theta Θ 两部分构成,即 B = ⟨ G , Θ ⟩ B=\langle G,\Theta\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\space |\space \pi_i) θxi∣πi=PB(xi ∣ πi) 。
图 6 西瓜问题的一种贝叶斯网结构以及属性“根蒂”的条件概率表
作为一个例子,图 6 6 6 给出了西瓜问题的一种贝叶斯网结构和属性“根蒂”的条件概率表。从图中网络结构可看出,“色泽”直接依赖于“好瓜”和“甜度”,而“根蒂”则直接依赖于“甜度”;进一步从条件概率表能得到“根蒂”对“甜度”量化依赖关系,如 P ( 根蒂 = 硬挺 ∣ 甜度 = 高 ) = 0.1 P(根蒂=硬挺|甜度=高)=0.1 P(根蒂=硬挺∣甜度=高)=0.1 等。
提出贝叶斯网的原因:
首先,半朴素贝叶斯对属性关系的限制还是太强,而贝叶斯网进一步降低了约束程度,因此表达能力更强;
另外,理论上,进行概率推理所需要的只是一个联合概率分布。但是联合概率分布的复杂度相对于变量个数成指数增长,所以当变量众多时不可行。贝叶斯网的提出就是要解决这个问题。它把复杂的联合概率分布分解成一系列相对简单的模块,从而大大降低知识获取和概率推理的复杂度,使得可以把概率论应用于大型问题。
可以理解为贝叶斯网的假设使得联合概率分布计算更加容易,图结构只是为了方便直观上理解而产生的一种表现形式。
贝叶斯网结构有效地表达了属性间的条件独立性。给定父结点集,贝叶斯网假设每个子结点表示的属性与它的非后裔属性独立,于是 B = ⟨ G , Θ ⟩ B=\langle G,\Theta\rangle B=⟨G,Θ⟩ 将属性 x 1 , x 2 , . . . , x d x_1,x_2,...,x_d x1,x2,...,xd 的联合概率分布定义为
P B ( x 1 , x 2 , . . . , x d ) = ∏ i = 1 d P B ( x i ∣ π i ) = ∏ i = 1 d θ x i ∣ π i (32) P_B(x_1,x_2,...,x_d)=\prod_{i=1}^dP_B(x_i\space |\space \pi_i)= \prod_{i=1}^d \theta_{x_i\space|\space\pi_i}\tag{32} PB(x1,x2,...,xd)=i=1∏dPB(xi ∣ πi)=i=1∏dθxi ∣ πi(32)
有关贝叶斯网的假设,周志华编著的《机器学习》中描述有些歧义,所以我将其修改成”给定父结点集,贝叶斯网假设每个子结点表示的属性与它的非后裔属性独立“。这样就可以解释后面提到的”三个变量之间的典型依赖关系“中并不存在与假设相矛盾的情况了。
以图 6 6 6 为例,贝叶斯网络的联合概率分布定义为
P ( x 1 , x 2 , x 3 , x 4 , x 5 ) = P ( x 1 ) P ( x 2 ) P ( x 3 ∣ x 1 ) P ( x 4 ∣ x 1 , x 2 ) P ( x 5 ∣ x 2 ) P(x_1,x_2,x_3,x_4,x_5)=P(x_1)P(x_2)P(x_3\space|\space x_1)P(x_4\space |\space x_1,x_2)P(x_5\space |\space x_2) P(x1,x2,x3,x4,x5)=P(x1)P(x2)P(x3 ∣ x1)P(x4 ∣ x1,x2)P(x5 ∣ x2)
根据链式规则(chain rule)联合概率分布定义为
P ( x 1 , x 2 , x 3 , x 4 , x 5 ) = P ( x 1 ) P ( x 2 ∣ x 1 ) P ( x 3 ∣ x 1 , x 2 ) P ( x 4 ∣ x 1 , x 2 , x 3 ) P ( x 5 ∣ x 1 , x 2 , x 3 , x 4 ) P(x_1,x_2,x_3,x_4,x_5)=P(x_1)P(x_2\space |\space x_1)P(x_3\space|\space x_1,x_2)P(x_4\space |\space x_1,x_2,x_3)P(x_5\space |\space x_1,x_2,x_3,x_4) P(x1,x2,x3,x4,x5)=P(x1)P(x2 ∣ x1)P(x3 ∣ x1,x2)P(x4 ∣ x1,x2,x3)P(x5 ∣ x1,x2,x3,x4)
对应项相等,可知
① P ( x 2 ) = P ( x 2 ∣ x 1 ) ② P ( x 3 ∣ x 1 ) = P ( x 3 ∣ x 1 , x 2 ) ③ P ( x 4 ∣ x 1 , x 2 ) = P ( x 4 ∣ x 1 , x 2 , x 3 ) ④ P ( x 5 ∣ x 2 ) = P ( x 5 ∣ x 1 , x 2 , x 3 , x 4 ) \begin{array}{l} {\rm ①}&&P(x_2)&=&P(x_2\space |\space x_1)\\ {\rm ②}&&P(x_3\space |\space x_1)&=&P(x_3\space |\space x_1,x_2)\\ {\rm ③}&&P(x_4\space |\space x_1,x_2)&=&P(x_4\space |\space x_1,x_2,x_3)\\ {\rm ④}&&P(x_5\space |\space x_2)&=&P(x_5\space |\space x_1,x_2,x_3,x_4) \end{array} ①②③④P(x2)P(x3 ∣ x1)P(x4 ∣ x1,x2)P(x5 ∣ x2)====P(x2 ∣ x1)P(x3 ∣ x1,x2)P(x4 ∣ x1,x2,x3)P(x5 ∣ x1,x2,x3,x4)
根据 P ( A ∣ B ) = P ( A B ) P ( B ) P(A\space|\space B)=\frac{P(AB)}{P(B)} P(A ∣ B)=P(B)P(AB) 可知 P ( x 2 ∣ x 1 ) = P ( x 1 , x 2 ) P ( x 1 ) P(x_2\space |\space x_1)=\frac{P(x_1,x_2)}{P(x_1)} P(x2 ∣ x1)=P(x1)P(x1,x2),因此 ① ⇔ P ( x 1 ) P ( x 2 ) = P ( x 1 , x 2 ) ①\Leftrightarrow P(x_1)P(x_2)=P(x_1,x_2) ①⇔P(x1)P(x2)=P(x1,x2), 说明 x 1 x_1 x1 和 x 2 x_2 x2 独立;类似地, ② ⇔ P ( x 3 ∣ x 1 ) = P ( x 2 , x 3 ∣ x 1 ) P ( x 2 ∣ x 1 ) ⇔ P ( x 3 ∣ x 1 ) P ( x 2 ∣ x 1 ) = P ( x 2 , x 3 ∣ x 1 ) ②\Leftrightarrow P(x_3\space |\space x_1)=\frac{P(x_2,x_3\space |\space x_1)}{P(x_2\space |\space x_1)} \Leftrightarrow P(x_3\space |\space x_1)P(x_2\space |\space x_1)=P(x_2,x_3\space |\space x_1) ②⇔P(x3 ∣ x1)=P(x2 ∣ x1)P(x2,x3 ∣ x1)⇔P(x3 ∣ x1)P(x2 ∣ x1)=P(x2,x3 ∣ x1),说明在给定 x 1 x_1 x1 的取值时, x 2 x_2 x2 和 x 3 x_3 x3 独立;当等式 ③ ③ ③ 成立时,说明在给定 x 1 x_1 x1 和 x 2 x_2 x2 的取值时, x 3 x_3 x3 和 x 4 x_4 x4 独立;当等式 ④ ④ ④ 成立时,说明在给定 x 2 x_2 x2 的取值时, x 4 x_4 x4 和 x 5 x_5 x5 独立。
未列举出所有边际独立和条件独立关系。
其中,像 x 1 x_1 x1 和 x 2 x_2 x2 之间的独立性被称为“边际独立”(marginal independence),记为 x 1 ⊥ x 2 x_1 \perp x_2 x1⊥x2;像 x 4 x_4 x4 和 x 5 x_5 x5 之间的独立性要在已知 x 2 x_2 x2 取值的情况下才能确定,这种独立性被称为“条件独立”(conditional independence),记为 x 4 ⊥ x 5 ∣ x 2 x_4 \perp x_5 \space|\space x_2 x4⊥x5 ∣ x2 。
切勿认为”边际独立一定条件独立“。
直观上理解,「买到过期的面包」和「买到过期的牛奶」这两件事本身没有相关性,即边际独立;但引入已知条件「从同一个店铺里买面包和牛奶」,如果买到了过期面包,一定程度上说明这是个无良商家,那么买到的牛奶也很可能是过期的,即在引入条件后不独立。
这说明引入已知条件可能让两个本来独立的随机变量变得条件相关。
观察等式 ③ ③ ③ 我们知道在给定 x 1 x_1 x1 和 x 2 x_2 x2 的取值时 x 3 x_3 x3 和 x 4 x_4 x4 独立,从贝叶斯网结构的假设出发,可以理解为「给定 x 4 x_4 x4 的父结点 x 1 x_1 x1 和 x 2 x_2 x2 的值,那么 x 4 x_4 x4 就会和它的其中一个非后裔结点 x 3 x_3 x3 独立」,这是完全没有问题的;但是从 x 3 x_3 x3 的视角理解, x 3 x_3 x3 的父结点只有 x 1 x_1 x1,所以根据假设,只要给出 x 1 x_1 x1 的值就可以确定 x 3 x_3 x3 与 x 4 x_4 x4 独立。也就是说,如果从 x 4 x_4 x4 的视角理解,则需要已知 x 1 x_1 x1 和 x 2 x_2 x2 的值,但是从 x 3 x_3 x3 的视角理解,则只需要已知 x 1 x_1 x1 的值即可,这体现了直接通过“对应项相等”的方式来判断独立性是不严谨的,或者说并非最佳的。
贝叶斯图结构独立性判断方法:d-Separation
在无向模型中,识别图中的条件独立性是非常简单的。在这种情况下,图中隐含的条件独立性称为分离(separation)。如果图结构显示给定变量集 S \mathbb{S} S 的情况下变量集 A \mathbb{A} A 与变量集 B \mathbb{B} B无关,那么我们声称给定变量集 S \mathbb{S} S 时,变量集 A \mathbb{A} A 与另一组变量集 B \mathbb{B} B 是分离的。如果连接两个变量 a a a 和 b b b 的连接路径仅涉及未观察变量,那么这些变量不是分离的。如果它们之间没有路径,或者所有路径都包含可观测的变量,那么它们是分离的。我们认为仅涉及未观察到的变量的路径是“活跃”(active paths)的,而包括可观察变量的路径称为“非活跃’(inactive paths)的。
当我们画图时,我们可以通过加阴影来表示观察到的变量。图 7 7 7 用于描述当以这种方式绘图时无向模型中的活跃和非活跃路径的样子。图 8 8 8 描述了一个从无向模型中读取分离信息的例子。
图 7 (a)图中随机变量a和随机变量b之间穿过s的路径是活跃的,因为s是观察不到的。这意味着a, b之间不是分离的。(b)图中s用阴影填充,表示它是可观察的。因为a和 b之间的唯一路径通过s,并且这条路径是不活跃的,我们可以得出结论,在给定s的条件下a和 b是分离的。
图 8 从一个无向图中读取分离性质的一个例子。这里b用阴影填充,表示它是可观察的。由于b挡住了从a到c的唯一路径,我们说在给定b的情况下a和c是相互分离的。观察值b同样挡住了从a到d的一条路径,但是它们之间有另一条活跃路径。因此给定b的情况下a和d不是分离的。
类似的概念适用于有向模型,只是在有向模型中,这些概念被称为d-分离(d-separation)。“d”代表“依赖”的意思。有向图中d-分离的定义与无向模型中分离的定义相同:如果图结构显示给定变量集 S \mathbb{S} S 时,变量集 A \mathbb{A} A 与变量集 B \mathbb{B} B 无关,那么我们认为给定变量集 S \mathbb{S} S 时,变量集 A \mathbb{A} A d-分离于变量集 B \mathbb{B} B。
与无向模型一样,我们可以通过查看图中存在的活跃路径来检查图中隐含的独立性。如前所述,如果两个变量之间存在活跃路径,则两个变量是依赖的,如果没有活跃路径,则为d-分离。在有向网络中,确定路径是否活跃有点复杂。
尤其重要的是要记住分离和d-分离只能告诉我们图中隐含的条件独立性。图并不需要表示所有存在的独立性。
判断独立性的过程大致分成三步:
将有向图转化为无向图时,该无向图被称为道德图(moral graph)。将子图转换为道德图包括两个步骤:对于具有公共子结点的一对父结点,在它们之间绘制无向边,如果一个结点有两个以上的父结点,则在每对父结点之间画一条无向边;将有向边替换为无向边,即将有向图转换为无向图。
以图 6 6 6 为例,判断 x 1 x_1 x1 和 x 2 x_2 x2 是否独立?即判断 P ( A ) = P ( A ∣ B ) ? P(A)=P(A\space|\space B)? P(A)=P(A ∣ B)? 或 P ( B ) = P ( B ∣ A ) ? P(B)=P(B\space|\space A)? P(B)=P(B ∣ A)?
可以发现,按照上面三步绘制出的无向图中, x 1 x_1 x1 和 x 2 x_2 x2 之间没有边,所以 x 1 x_1 x1 和 x 2 x_2 x2 边际独立。
还是以图 6 6 6 为例,判断在给定 x 1 x_1 x1 的取值时, x 3 x_3 x3 和 x 4 x_4 x4 是否条件独立?即判断 P ( x 3 ∣ x 1 ) = P ( x 3 ∣ x 1 , x 4 ) ? P(x_3\space |\space x_1)=P(x_3\space |\space x_1,x_4)? P(x3 ∣ x1)=P(x3 ∣ x1,x4)? 或 P ( x 4 ∣ x 1 ) = P ( x 4 ∣ x 1 , x 3 ) ? P(x_4\space |\space x_1)=P(x_4\space |\space x_1,x_3)? P(x4 ∣ x1)=P(x4 ∣ x1,x3)?
上图完整地展示了三个步骤,最终发现 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 条件独立。
再举一个例子,如果存在图 9 9 9 所示的贝叶斯网结构,判断下面几个独立性:
依次解决上面的问题:
可见, D D D 和 E E E 不存在边际独立性。
可见,在给定 C C C 的情况下, D D D 和 E E E 是独立的。
可见, D D D 和 E E E 不存在边际独立性。
可见,在给定 C C C 的情况下, A A A 和 D D D 是独立的。
A A A 和 B B B 是否边际独立?
可见, D D D 和 E E E 是边际独立的,即在不存在已知条件的情况下,二者是独立的。
在给定 C C C 的情况下, A A A 和 B B B 是否条件独立?
可见,在给定 C C C 的情况下, A A A 和 B B B 之间存在连线,所以 A A A 和 B B B 不是独立的。
在周志华编著的《机器学习》一书中提到了三个变量之间的典型依赖关系。
在“同父”(common parent)结构中,给定父结点 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-structure)亦称“冲撞”结构,给定子结点 x 4 x_4 x4 的取值, x 1 x_1 x1 与 x 2 x_2 x2 必不独立;奇妙的是,若 x 4 x_4 x4 的取值完全未知,则V型结构下 x 1 x_1 x1 与 x 2 x_2 x2 却是相互独立的。这三种结构完全对应于上面的6个问题。
特别说明一下V型结构,如果已知 x 4 x_4 x4 或 x 4 x_4 x4 的后代结点的值,那么 x 1 x_1 x1 与 x 2 x_2 x2 也必不独立。举个例子:
上面的有向无环图说明考试成绩由我们的智商和试卷难度决定,最终等级的评定依赖于考试成绩。
假设成绩已知,如果知道该同学智商很低,但是成绩很高,那么就可以说明考试题目非常简单;同理,如果知道该同学智商很高,但是成绩很低,那么可以说明考试题目非常难。如果成绩未知,或者说只看”智商“和”难度“,显然二者没有一点关系,此时二者独立。类似地,因为评分等级中蕴含了成绩信息,所以已知等级也可以推断出该同学智商与难度的关系。
如果不对贝叶斯网的假设进行修改的话,会产生歧义。基于上面的讨论我们知道「在V型结构中,在给定 x 4 x_4 x4 时, x 1 x_1 x1 和 x 2 x_2 x2 不再独立」,基于原书中的假设,有读者认为「 x 1 x_1 x1 和 x 2 x_2 x2 没有后裔关系却不独立,这与假设中要求”每个属性与它的非后裔属性独立“相矛盾」。其实假设中的”每个属性“本意是”每个子结点对应的属性“,即给定的父结点,它们所拥有的孩子结点才是这里的”每个属性“想要表达的含义。因此,假设并没有要求两个父结点 x 1 x_1 x1 和 x 2 x_2 x2 独立,而是要求 x 4 x_4 x4 与 x 4 x_4 x4 的非后裔属性独立 。这样,另两个结构也说得通。
若网络结构已知,即属性间的依赖关系已知,则贝叶斯网的学习过程相对简单,只需通过对训练样本“计数”,估计出每个结点的条件概率表即可。但在现实应用中我们往往并不知晓网络结构,于是,贝叶斯网学习的首要任务就是根据训练数据集来找出结构最“恰当”的贝叶斯网。“评分搜索”是求解这一问题的常用办法。具体来说,我们先定义一个评分函数(score function))。以此来评估贝叶斯网与训练数据的契合程度,然后基于这个评分函数来寻找结构最优的贝叶斯网。显然,评分函数引入了关于我们希望获得什么样的贝叶斯网的归纳偏好。
归纳偏好对应了学习算法本身所做出的关于“什么样的模型更好”的假设。在具体的现实问题中,这个假设是否成立,即算法的归纳偏好是否与问题本身匹配,大多数时候直接决定了算法能否取得好的性能。
常用评分函数通常基于信息论准则,此类准则将学习问题看作一个数据压缩任务,学习的目标是找到一个能以最短编码长度描述训练数据的模型,此时编码的长度包括了描述模型自身所需的字节长度和使用该模型描述数据所需的字节长度。对贝叶斯网学习而言,模型就是一个贝叶斯网,同时,每个贝叶斯网描述了一个在训练数据上的概率分布,自有一套编码机制能使那些经常出现的样本有更短的编码。于是,我们应选择那个综合编码长度(包括描述网络和编码数据)最短的贝叶斯网,这就是“最小描述长度”(Minimal Description Length,简称 MDL)准则。
把类别也看作一个属性,即 x i \pmb x_i xxi 是一个包括示例和类别的向量。给定训练集 D = { x 1 , x 2 , . . . , x m } D= \{\pmb x_1, \pmb x_2,. . . ,\pmb x_m\} D={xx1,xx2,...,xxm},贝叶斯网 B = ⟨ G , Θ ⟩ B=\langle G,\Theta\rangle B=⟨G,Θ⟩ 在 D D D 上的评分函数可写为
s ( B ∣ D ) = f ( θ ) ∣ B ∣ − L L ( B ∣ D ) (33) s(B\mid D)=f(\theta)\left|B\right|-LL(B\mid D)\tag{33} s(B∣D)=f(θ)∣B∣−LL(B∣D)(33)
其中, ∣ B ∣ |B| ∣B∣ 是贝叶斯网的参数个数; f ( θ ) f(\theta) f(θ) 表示描述每个参数 θ \theta θ 所需的字节数;而
L L ( B ∣ D ) = ∑ i = 1 m l o g P B ( x i ) (34) LL(B\mid D)=\sum_{i=1}^m log\space P_B(\pmb x_i) \tag{34} LL(B∣D)=i=1∑mlog PB(xxi)(34)
是贝叶斯网 B B B 的对数似然。显然,式 ( 33 ) (33) (33) 的第一项是计算编码贝叶斯网 B B B 所需的字节数,第二项是计算 B B B 所对应的概率分布 P B P_B PB 需多少字节来描述 D D D 。于是,学习任务就转化为一个优化任务,即寻找一个贝叶斯网 B B B 使评分函数 s ( B ∣ D ) s(B\mid D) s(B∣D) 最小。
若 f ( θ ) = 1 f(\theta)=1 f(θ)=1,即每个参数用 1 1 1 字节描述,则得到 AIC(Akaike Information Criterion)评分函数
A I C ( B ∣ D ) = ∣ B ∣ − L L ( B ∣ D ) (35) AIC(B\mid D)=|B|-LL(B\mid D)\tag{35} AIC(B∣D)=∣B∣−LL(B∣D)(35)
若 f ( θ ) = 1 2 l o g m f(\theta)=\frac{1}{2} log\space m f(θ)=21log m,即每个参数用 1 2 l o g m \frac{1}{2}log \space m 21log m 字节描述,则得到 BlC(Bayesian Information Criterion)评分函数
B I C ( B ∣ D ) = l o g m 2 ∣ B ∣ − L L ( B ∣ D ) (36) BIC(B\mid D)=\frac{log \space m}{2}|B|-LL(B \mid D)\tag{36} BIC(B∣D)=2log m∣B∣−LL(B∣D)(36)
显然,若 f ( θ ) = 0 f(\theta)=0 f(θ)=0,即不计算对网络进行编码的长度,则评分函数退化为负对数似然,相应的,学习任务退化为极大似然估计。
不难发现,若贝叶斯网 B = ⟨ G , Θ ⟩ B =\langle G,\Theta\rangle B=⟨G,Θ⟩ 的网络结构 G G G 固定,则评分函数 s ( B ∣ D ) s(B\mid D) s(B∣D) 的第一项为常数。此时,最小化 s ( B ∣ D ) s(B\mid D) s(B∣D) 等价于对参数 Θ \Theta Θ 的极大似然估计。由式 ( 34 ) (34) (34) 和 ( 32 ) (32) (32)可知,参数 θ x i ∣ π i \theta_{x_i|\pi_i} θxi∣πi。能直接在训练数据 D D D 上通过经验估计获得,即
θ x i ∣ π i = P ^ D ( x i ∣ π i ) (37) \theta_{x_i|\pi_i}=\hat{P}_D(x_i\mid \pi_i) \tag{37} θxi∣πi=P^D(xi∣πi)(37)
其中 P ^ D ( ⋅ ) \hat{P}_D(·) P^D(⋅) 是 D D D 上的经验分布,即事件在训练数据上出现的频率。因此,为了最小化评分函数 s ( B ∣ D ) s(B\mid D) s(B∣D),只需对网络结构进行搜索,而候选结构的最优参数可直接在训练集上计算得到。
不幸的是,从所有可能的网络结构空间搜索最优贝叶斯网结构是一个 NP 难问题,难以快速求解。有两种常用的策略能在有限时间内求得近似解:第一种是贪心法,例如从某个网络结构出发,每次调整一条边(增加、删除或调整方向),直到评分函数值不再降低为止;第二种是通过给网络结构施加约束来削减搜索空间,例如将网络结构限定为树形结构等。
P 问题:Polynomial-time问题,即指在多项式时间内可用算法求解的问题;
NP问题:Non-deterministic Polynomial-time问题,指不确定是否存在多项式时间的求解算法,但可以在多项式时间内验证一个猜测解的正确性。(针对NP问题有一个千年难题,即NP=P?,也即是否所有能在多项式时间内验证得出正确解的问题,都是具有多项式时间算法的问题,至今尚未有定论)
半朴素贝叶斯分类器可看作贝叶斯网的特例,TAN 将结构限定为树形。
这部分只是简单介绍。
贝叶斯网训练好之后就能用来回答“查询”(query),即通过一些属性变量的观测值来推测其他属性变量的取值。例如在西瓜问题中,若我们观测到西瓜色泽青绿、敲声浊响、根蒂蜷缩,想知道它是否成熟、甜度如何。这样通过已知变量观测值来推测待查询变量的过程称为“推断”(inference),已知变量观测值称为“证据”(evidence)。
最理想的是直接根据贝叶斯网定义的联合概率分布来精确计算后验概率,不幸的是,这样的“精确推断”已被证明是NP难的;换言之,当网络结点较多、连接稠密时,难以进行精确推断,此时需借助“近似推断”通过降低精度要求,在有限时间内求得近似解。在现实应用中,贝叶斯网的近似推断常使用吉布斯采样(Gibbs sampling)来完成,这是一种随机采样方法,我们来看看它是如何工作的。
令 Q = { Q 1 , Q 2 , . . . , Q n } \pmb {\rm Q}=\{Q_1,Q_2,...,Q_n\} QQ={Q1,Q2,...,Qn} 表示待查询变量, E = { E 1 , E 2 , . . . , E k } \pmb {\rm E}=\{E_1,E_2,...,E_k\} EE={E1,E2,...,Ek} 为证据变量,已知其取值为 e = { e 1 , e 2 , . . . , e k } \pmb {\rm e}=\{e_1,e_2,...,e_k\} ee={e1,e2,...,ek} 。目标是计算后验概率 P ( Q = q ∣ E = e ) P({\rm \pmb Q=\pmb q\mid \pmb E=\pmb e}) P(QQ=qq∣EE=ee),其中 q = { q 1 , q 2 , . . . , q n } \pmb {\rm q}=\{q_1,q_2,...,q_n\} qq={q1,q2,...,qn} 是待查询变量的一组取值。以西瓜问题为例,待查询变量为 Q = { 好瓜 , 甜度 } \pmb {\rm Q}=\{好瓜,甜度\} QQ={好瓜,甜度},证据变量为 E = { 色泽 , 敲声 , 根蒂 } \pmb {\rm E}=\{色泽,敲声,根蒂\} EE={色泽,敲声,根蒂} 且已知其取值为 e = { 青绿 , 浊响 , 蜷缩 } \pmb {\rm e}=\{青绿,浊响,蜷缩\} ee={青绿,浊响,蜷缩},查询的目标值是 q = { 是 , 高 } \pmb {\rm q}=\{是,高\} qq={是,高},即这是好瓜且甜度高的概率有多大。
如算法 1 1 1 所示,吉布斯采样算法先随机产生一个与证据 E = e \pmb {\rm E}=\pmb {\rm e} EE=ee 一致的样本 q 0 \pmb {\rm q}^0 qq0 作为初始点,然后每步从当前样本出发产生下一个样本。具体来说,在第 t t t 次采样中,算法先假设 q t = q t − 1 \pmb {\rm q}^t=\pmb {\rm q}^{t-1} qqt=qqt−1,然后对非证据变量逐个进行采样改变其取值,采样概率根据贝叶斯网B和其他变量的当前取值(即 Z = z \pmb {\rm Z}=\pmb {\rm z} ZZ=zz)计算获得。假定经过 T T T 次采样得到的与 q \pmb {\rm q} qq 一致的样本共有 n q n_q nq 个,则可近似估算出后验概率
P ( Q = q ∣ E = e ) ≃ n q T (38) P({\rm \pmb Q=\pmb q\mid \pmb E=\pmb e})\simeq\frac{n_q}{T}\tag{38} P(QQ=qq∣EE=ee)≃Tnq(38)
实质上,吉布斯采样是在贝叶斯网所有变量的联合状态空间与证据 E = e \pmb {\rm E}=\pmb {\rm e} EE=ee 一致的子空间中进行“随机漫步”(random walk)。每一步仅依赖于前一步的状态,这是一个“马尔可夫链”(Markov chain)。在一定条件下,无论从什么初始状态开始,马尔可夫链第 t t t 步的状态分布在 t → ∞ t→\infty t→∞ 时必收敛于一个平稳分布(stationary distribution);对于吉布斯采样来说,这个分布恰好是 P ( Q ∣ E = e ) P(\pmb {\rm Q}\mid \pmb {\rm E=e}) P(QQ∣E=eE=e)。因此,在 T T T 很大时,吉布斯采样相当于根据 P ( Q ∣ E = e ) P(\pmb {\rm Q \mid E=e}) P(Q∣E=eQ∣E=e) 采样,从而保证了式 ( 38 ) (38) (38) 收敛于 P ( Q = q ∣ E = e ) P(\pmb {\rm Q=q\mid E= e}) P(Q=q∣E=eQ=q∣E=e) 。
输入: 贝叶斯网 B = ⟨ G , Θ ⟩ ; 采样次数 T ; 证据变量 E 及其取值 e ; 待查询变量 Q 及其取值 q . 过程: \begin{array}{ll} \textbf{输入:}&\space贝叶斯网\space B = \langle G,\Theta\rangle\space; &\space\space \space\space\space\space \space\space &\space\space \space\space\space\space \space\space &\space\space \space\space\space\space\space\\ &\space 采样次数\space T\space;\\ &\space证据变量 \space \pmb {\rm E} \space及其取值\space \pmb {\rm e}\space; \\ &\space待查询变量 \space \pmb {\rm Q}\space 及其取值 \space \pmb {\rm q} \space. \\ \textbf{过程:} \end{array} 输入:过程: 贝叶斯网 B=⟨G,Θ⟩ ; 采样次数 T ; 证据变量 EE 及其取值 ee ; 待查询变量 QQ 及其取值 qq .
1 : n q = 0 2 : q 0 = 对 Q 随机赋初值 3 : for t = 1 , 2 , . . . , T do 4 : for Q i ∈ Q do 5 : Z = E ∪ Q \ { Q i } ; 6 : z = e ∪ q t − 1 \ { q i t − 1 } ; 7 : 根据 B 计算分布 P B ( Q i ∣ Z = z ) ; 8 : q i t = 根据 P B ( Q i ∣ Z = z ) 采样所获 Q i 取值 ; 9 : q t = 将 q t − 1 中的 q i t − 1 用 q i t 替换 10 : end for 11 : if q t = q then 12 : n q = n q + 1 13 : end if 14 : end for \begin{array}{rl} 1:&n_q=0\\ % 2:&\textbf{q}^0 =对 \space\textbf{Q} \space 随机赋初值\\ % 3:&\textbf{for} \space t=1,2,...,T\space \textbf{do}\\ % 4:&\space\space\space\space \textbf{for}\space Q_i∈\textbf{Q}\space \textbf{do}\\ % 5:&\space\space\space\space\space\space\space\space \textbf{Z} = \textbf{E} \cup \textbf{Q}\space\verb|\| \space \{Q_i\}\space; \\ % 6:&\space\space \space\space\space\space \space\space \textbf{z}=\textbf{e} \cup \textbf{q}^{t-1} \verb|\| \{q_i^{t-1}\}\space;\\ % 7:&\space\space \space\space\space\space \space\space 根据\space B\space 计算分布 \space P_B(Q_i\mid \textbf{Z}=\textbf{z})\space; \\ % 8:&\space\space \space\space\space\space \space\space q_i^t=根据\space P_B(Q_i\mid \textbf{Z}=\textbf{z})\space 采样所获 \space Q_i \space 取值\space ;\\ % 9:&\space\space \space\space\space\space \space\space \textbf{q}^t=将\space \textbf{q}^{t-1} \space 中的 \space q_i^{t-1} \space 用 \space q_i^t\space替换\\ % 10:&\space\space \space\space \textbf{end}\space \textbf{for}\\ % 11:&\space\space\space\space\textbf{if}\space \textbf{q}^t = \textbf{q}\space \textbf{then}\\ % 12:&\space\space\space\space\space\space\space\space n_q=n_q+1\\ % 13:&\space\space\space\space \textbf{end}\space \textbf{if}\\ % 14:&\textbf{end}\space \textbf{for} % \end{array} 1:2:3:4:5:6:7:8:9:10:11:12:13:14:nq=0q0=对 Q 随机赋初值for t=1,2,...,T do for Qi∈Q do Z=E∪Q \ {Qi} ; z=e∪qt−1\{qit−1} ; 根据 B 计算分布 PB(Qi∣Z=z) ; qit=根据 PB(Qi∣Z=z) 采样所获 Qi 取值 ; qt=将 qt−1 中的 qit−1 用 qit 替换 end for if qt=q then nq=nq+1 end ifend for
输出: P ( Q = q ∣ E = e ) ≃ n q T \begin{array}{l} \textbf{输出:}\space P(\textbf{Q}=\textbf{q}\mid \textbf{E}=\textbf{e})\simeq\frac{n_q}{T}&&&&&&&&&&& \end{array} 输出: P(Q=q∣E=e)≃Tnq
算法 1 吉布斯采样算法
需注意的是,由于马尔可夫链通常需很长时间才能趋于平稳分布,因此吉布斯采样算法的收敛速度较慢。此外,若贝叶斯网中存在极端概率“0”或“1”,则不能保证马尔可夫链存在平稳分布,此时吉布斯采样会给出错误的估计结果。
贝叶斯决策论提供了一个决策(分类)框架,朴素贝叶斯、半朴素贝叶斯和贝叶斯网作为贝叶斯分类方法是对决策论不同的具体实现。半朴素贝叶斯是贝叶斯网的特例,而朴素贝叶斯与它们两个不同。详细来说,朴素贝叶斯假设属性独立,是不允许属性存在依赖关系的;而半朴素贝叶斯允许属性依赖,但假设每个属性最多依赖一个其他属性,对应是属性依赖图为一棵树;简单来说,贝叶斯网假设属性条件独立,对应的属性依赖图是一个有向无环图。
这里仅给出EM算法的一般描述,具体例子和详细讲解参见之后的博客。
在前面的讨论中,我们一直假设训练样本所有属性变量的值都已被观测到,即训练样本是“完整”的。但在现实应用中往往会遇到“不完整”的训练样本,例如由于西瓜的根蒂已脱落,无法看出是“蜷缩”还是“硬挺”,则训练样本的“根蒂”属性变量值未知。在这种存在“未观测”变量的情形下,是否仍能对模型参数进行估计呢?
未观测变量的学名是“隐变量”(latent variable)。令 X \textbf{X} X 表示已观测变量集, Z \textbf{Z} Z 表示隐变量集, Θ \Theta Θ 表示模型参数。若欲对 Θ \Theta Θ 做极大似然估计,则应最大化对数似然
L L ( Θ ∣ X , Z ) = l n P ( X , Z ∣ Θ ) (39) LL(\Theta\mid \textbf{X},\textbf{Z})={\rm ln } \space P(\textbf{X},\textbf{Z}\mid \Theta)\tag{39} LL(Θ∣X,Z)=ln P(X,Z∣Θ)(39)
由于“似然”常基于指数族函数来定义,因此对数似然及后续 EM 迭代过程中一般是使用自然对数 l n ( ⋅ ) \rm ln(·) ln(⋅) 。
然而由于 Z \textbf{Z} Z 是隐变量,上式无法直接求解。此时我们可通过对 Z \textbf{Z} Z 计算期望,来最大化已观测数据的对数“边际似然”(marginal likelihood)
L L ( Θ ∣ X ) = l n P ( X ∣ Θ ) = l n ∑ Z P ( X , Z ∣ Θ ) (40) LL(\Theta\mid \textbf{X})={\rm ln} \space P(\textbf{X}\mid \Theta)={\rm ln}\sum_{\textbf Z}P(\textbf{X},\textbf{Z}\mid \Theta)\tag{40} LL(Θ∣X)=ln P(X∣Θ)=lnZ∑P(X,Z∣Θ)(40)
EM(Expectation-Maximization)算法直译为“期望最大化算法”,通常直接称EM算法,是常用的估计参数隐变量的利器,它是一种迭代式的方法,其基本想法是:若参数 Θ \Theta Θ 已知,则可根据训练数据推断出最优隐变量 Z \textbf{Z} Z 的值( E \rm E E 步);反之,若 Z \textbf{Z} Z 的值已知,则可方便地对参数做极大似然估计( M \rm M M 步)。
于是,以初始值 Θ 0 \Theta^0 Θ0 为起点,对式 ( 40 ) (40) (40),可迭代执行以下步骤直至收敛:
这就是 EM 算法的原型。
进一步,若我们不是取 Z \textbf Z Z 的期望,而是基于 Θ t \Theta^t Θt 计算隐变量 Z \textbf Z Z 的概率分布 P ( Z ∣ X , Θ t ) P(\textbf Z \mid \textbf X,\Theta^t) P(Z∣X,Θt),则 EM 算法的两个步骤是:
E \rm E E 步(Expectation):以当前参数 Θ t \Theta^t Θt 推断隐变量分布 P ( Z ∣ X , Θ t ) P(\textbf Z \mid \textbf X,\Theta^t) P(Z∣X,Θt),并计算对数似然 L L ( Θ ∣ X , Z ) LL(\Theta \mid \textbf X,\textbf Z) LL(Θ∣X,Z) 关于 Z \textbf Z Z 的期望
Q ( Θ ∣ Θ t ) = E Z ∣ X , Θ t L L ( Θ ∣ X , Z ) (41) Q(\Theta\mid \Theta^t)=\mathbb{E}_{\textbf Z\mid \textbf X,\Theta^t} LL(\Theta\mid \textbf X,\textbf Z)\tag{41} Q(Θ∣Θt)=EZ∣X,ΘtLL(Θ∣X,Z)(41)
M \rm M M 步(Maximization):寻找参数最大化期望似然,即
Θ t + 1 = a r g m a x Θ Q ( Θ ∣ Θ t ) (42) \Theta^{t+1}=\mathop{{\rm arg} \space {\rm max}} \limits_{\Theta} \space Q(\Theta\mid \Theta^t)\tag{42} Θt+1=Θarg max Q(Θ∣Θt)(42)
简要来说,EM 算法使用两个步骤交替计算:第一步是期望 ( E ) (\rm E) (E)步,利用当前估计的参数值来计算对数似然的期望值;第二步是最大化 ( M ) (\rm M) (M) 步,寻找能使 E \rm E E 步产生的似然期望最大化的参数值。然后,新得到的参数值重新被用于 E \rm E E 步, ⋅ ⋅ ⋅ ··· ⋅⋅⋅ ⋅ ⋅ ⋅ ··· ⋅⋅⋅ 直至收敛到局部最优解。
事实上,隐变量估计问题也可通过梯度下降等优化算法求解,但由于求和的项数将随着隐变量的数目以指数级上升,会给梯度计算带来麻烦;而 EM 算法则可看作一种非梯度优化方法。EM 算法可看作用坐标下降(coordinate descent)法来最大化对数似然下界的过程。
[1] 机器学习 - 周志华著
[2] 概率论与数理统计(第四版) - 浙江大学 - 盛骤 等著
[3] 《Deep Learning Book》中文版 - GitHub
[4] 详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解 - CSDN博客
[5] 统计学里频率学派(Frequentist)与贝叶斯(Bayesian)学派的区别和在机器学习中的应用 - 知乎
[6] 正态分布 - 百度百科
[7] PDF、PMF、CDF - CSDN博客
[8] 最大后验(Maximum a Posteriori,MAP)概率估计详解 - CSDN博客
[9] 机器学习和深度学习的主要术语(中英)- CSDN博客
[10] 互信息 - 百度百科
[11] 互信息(Mutual Information)介绍 - CSDN博客
[12] 小结 - Pearson correlation coefficients (Pearson相关系数)和Mutual information(互信息) - 知乎
[13] 贝叶斯网络简介 - 百度文库
[14] CAUSALITY - Discussion
[15] D-Separation:一种概率图结构独立性的判断方法 - 知乎
[16] 贝叶斯网络与D-Separation算法应用 - 知乎
[17] 独立与条件独立 - 知乎
[18] [NP问题、NP难问题(NPH)和NP完全问题(NPC)理解 - CSDN博客](