Advanced Topics in Statistical Machine Learning 笔记02:贝叶斯网络(Bayesian Network)

我们首先回顾一下贝叶斯网络 (Bayesian Networks) 的作用。我们之前已经提到过,在进行概率计算,尤其是实际情况的概率推理时,联合概率分布表 (Joint Probability Distribution Table) 是个十分常见的手段,因为我们需要考虑所有的情况。但是这个表有一个很大的问题,那就是它的规模会根据变量的数量指数级增长,因为一般都是二值变量,所以联合概率的规模一般为 2n。显然,这对于存储空间造成了很大的压力,同时也对建模和计算造成困难。因此,我们使用贝叶斯网络的一个很重要的原因,就是为了避免这些问题。其次,联合概率分布会隐藏一些相关属性,比如独立性等,而贝叶斯网络能够体现这些特性。

贝叶斯网络构建

网络结构(Network Structure)

在上一篇笔记中,我们已经对贝叶斯网络的结构进行了一个基本的介绍,这里,我们先回顾一下,依然是用一个简单的例子来进行理解:

首先,贝叶斯网络是一种 DAG (Directed Acyclic Graph),即有向无环图。在这幅图中:

  • 节点 (Nodes) 表示变量 (Variables)
  • 边 (Edge) 可以表示因果关系 (Direct Causal Influence)。我们目前这样理解就好,后面随着介绍的深入,我们会体会到边代表的具体内容。 比如,下图我们理解为:警报 (Alarm) 被触发,导致邻居来电 (Call)

在这里插入图片描述
在这种表述形式下,我们发现,实际上,即使不是被边直接相连的两个变量,也会受到影响。比如:我们在广播 (Radio) 上听到有关地震的报道,这就增加了我们居住的地区发生地震 (Earthquake) 的可能性,进一步也就加大了警报 (Alarm) 被地震触发的几率,最终也就增加了邻居呼叫 (Call) 我们的几率。但是,这种“影响” (Influence) 在我们已观察到某些变量时,是会被“阻碍” (Blocked) 的。

为了方便理解,我们可以把“影响” (Influence) 看作是水,把每个变量 (图中的节点) 看作是阀门,当某个变量被观察 (Observed) 时,也就意味着我们已经对它的信息有所确知,因此该变量对应的节点/阀门就被关闭了,“影响”也就无法继续流到后面。

比如,我们已经知道警报 (Alarm) 没有被触发。这可能有很多原因,可能是地震 (Earthquake) 强度不足以触发警报、入室抢劫 (Burglary) 很隐秘没有触发或是其他情况,但我们不需要关心这些事情,我们只需要知道,邻居给我们打电话 (Call) 的概率不会受任何变量影响了,因此可以知道 𝐶 ⊥ 𝑅|¬𝐴.

根据以上介绍,我们能够知道,DAG G 表示以下独立性陈述:

𝑉 ⊥ 𝑁𝑜𝑛_𝐷𝑒𝑠𝑐𝑒𝑛𝑑𝑎𝑛𝑡𝑠 𝑉 | 𝑃𝑎𝑟𝑒𝑛𝑡𝑠(𝑉)

Parent(V):表示变量/节点 V 的父节点
Descendants(V):表示变量/节点 V所有后续节点
Non_Descendants(V):所有其他的节点

在本例中,能够得到 AR | E, B 等一系列的独立关系陈述。这一系列从贝叶斯网络 G 中得到的独立关系陈述就被称为马尔科夫假设 (Markovian Assumptions) ,记作 Markov(G).

马尔科夫假设(Markovian Assumptions)

为了便于理解马尔科夫假设,这里我们依旧把 DAG(G) 看作是因果结构 (Causal Structure),那么 Parent(V) 就表示 V 的直接原因,Descendants(V) 则可以表示 V 的的影响对象。马尔科夫假设的核心思想就是 “在已知某个变量的直接原因的情况下,除了与其关联的变量之外,不会被其他任何变量所影响”

𝑉 ⊥ 𝑁𝑜𝑛_𝐷𝑒𝑠𝑐𝑒𝑛𝑑𝑎𝑛𝑡𝑠 𝑉 | 𝑃𝑎𝑟𝑒𝑛𝑡𝑠(𝑉)

因此,在我们之前的例子中,可以得到如下结论:
𝐶 ⊥ 𝐵, 𝐸, 𝑅 | 𝐴
𝑅 ⊥ 𝐴, 𝐵, 𝐶 | 𝐸
𝐴 ⊥ 𝑅 | 𝐵, 𝐸
𝐵 ⊥ 𝐸, 𝑅
𝐸 ⊥ 𝐵

这里我们需要着重注意的一点是,Markov(G) 只是确保了 DAG G 中的独立关系 (Independence) 满足了我们的要求,但是对于满足这样一系列独立关系的一幅图,可能会有多种不同的概率分布。 这就是为什么我们需要给每一个变量/节点,维护一个 CPT (Conditional Probability Table),只有这样才能确保定义一个唯一的概率分布。

目前为止,我们一直把 “因果关系 (Causality) ” 作为边 (Edge) 的解释,这是为了更容易进行建模和理解。但是实际上,关于贝叶斯网络 (Bayesian Network) 的定义本身,并没有涉及到任何与“因果关系”相关的表述,它实际上只是我们这里用来方便理解的工具而已。这里我们看一个具体的例子:

在这里插入图片描述
这两个贝叶斯网络中,第一个就是我们之前使用了“因果关系”来理解并搭建的网络,而第二个网络并未使用所谓的“因果关系”。实际上,或许你会感到奇怪,但这两幅图所表示的变量之间的独立性状态是完全相同的。 这在阅读了整篇笔记之后,我相信你能够完全理解。

参数化(Parametrisation)

参数化 (Parametrisation) 会量化节点和其父节点之间的依赖关系。实际体现就是对于 DAG G 中的每个节点会维护一个 CPT (条件概率表),这个表中会包含节点 V 本身和其所有父节点 U

在这里插入图片描述
这里我们要注意一个很重要的性质,也是条件概率本身的一个重要公式:

在这里插入图片描述
因为这个重要的性质,可以大大减少我们在建模时,对于参数的需求量,比如,因为 P(a|b) + P(a|¬b) = 1,所以在建模是,我们只需要其中一者即可。因此,上面图例中的贝叶斯网络,我们总共只需要 1 + 2 + 4 + 2 + 2 = 11 个参数/概率即可。从参数数量上,我们能够具体体会到之前说过的 “贝叶斯网络比联合概率表 (Joint Probability Matrix) 更加节省空间”,该例子中共有 5 个变量,若使用后者,共需要保存一个 25 = 32 个联合概率的概率表,空间需求大大增加。

网络定义(Network Definition)

现在,贝叶斯网络中的所有独立性关系以及唯一的概率分布都被确定,整个网络的搭建也就完成了。因此,一个针对变量 Z 的贝叶斯网络表示为 (G, Θ) :

  • G 就是一个变量集合 Z 构成的有向无环图 (DAG),被称为网络结构 (Network Structure)
  • Θ 是一系列的条件概率表 (CPT),每一张表对应 Z 中的每一个变量,被称为网络参数化 (Network Parametrisation)

我们使用:

  • ΘX|U 表示变量 X 和它的父节点 U 的 CPT
  • XU 表示一系列变量,这一系列变量也被称为网络家庭 (Network Family),父母和孩子
  • θx|u 表示 P(x|u) 的值,也被称为网络参数 (Network Parameter)

网络实例化 (Network instantiation) 就是对所有网络变量的一组赋值。用 θx|u ~ z 表示网络参数复兴实例化 z。下面给出一个实例化例子:

在这里插入图片描述
根据以上实例化选择的网络参数如下图所示:

在这里插入图片描述
根据之前对于贝叶斯网络的定义,我们可以知道:只有一个概率分布满足贝叶斯网络所施加的约束。这个独一无二的概率分布就是:

在这里插入图片描述
最后,我们再来看一下贝叶斯网络的复杂度。我们都知道,复杂度就是要考虑最坏的情况,贝叶斯网络也不例外。我们把所有变量的父节点数量最大值记为 k,那么单个 CPT ΘX|U 的最大尺寸即为 O(dk+1),如果该网络共有 n 个变量,那么总共就是 O(ndk+1),即最大 CPT 乘以变量数量。以上面的图为例:

Biggest CPT size: O(dk+1) = O(22+1) = 8
Total is bounded by: O(ndk+1) = 5 * 8 = 40

独立性属性(Properties of Independence)

我们之前已经了解到,由贝叶斯网络 (G, Θ) 指名的概率分布 P,满足 Markov(G) 中的独立性关系。但是,这并不是全部,我们之前的例子中,可以根据其马尔科夫假设得到以下独立关系:

𝐶 ⊥ 𝐵, 𝐸, 𝑅 | 𝐴
𝑅 ⊥ 𝐴, 𝐵, 𝐶 | 𝐸
𝐴 ⊥ 𝑅 | 𝐵, 𝐸
𝐵 ⊥ 𝐸, 𝑅
𝐸 ⊥ 𝐵

但是,这个网络中实际上还有其他的独立关系。比如 𝑅 ⊥ 𝐴 | 𝐸,我们并没有根据马尔科夫假设直接得到这个关系。但是,我们必须要知道,马尔科夫假设是一个网络中最基础的独立性集合,其他的独立性都能从中推论而来,而这个推论的过程,就需要用到独立性的一些特性,这些特性也被称为石墨公理 (Graphoid Axioms),它包括对称 (Symmetry),分解 (Decomposition),弱联合 (Weak Union) 和收缩 (Contraction) 这几个特性实际上很好理解,接下来就对它们进行一个直觉的介绍。

对称 (Symmetry)

对称性是独立性最简单的一个特性:

𝑿 ⊥ 𝒀 | 𝒁 if and only if 𝒀 ⊥ 𝑿 | 𝒁

𝐴 ⊥ 𝑅 | 𝐵, 𝐸 (Markovian property for 𝐴)
𝑅 ⊥ 𝐴 | 𝐵, 𝐸 (Using symmetry)

分解 (Decomposition)

这个特性也很好理解。如果我们已经知道 YW 不会对我们对于 X 的信念度造成影响,那么 YW 也无法单独对 X 造成影响。

𝑿 ⊥ 𝒀 ∪ 𝑾 | 𝒁 only if 𝑿 ⊥ 𝒀 | 𝒁 and 𝑿 ⊥ 𝑾 | 𝒁

𝑅 ⊥ 𝐴, 𝐶, 𝐵 | 𝐸 (Markovian property for 𝐴)
𝑅 ⊥ 𝐴 | 𝐸 (using decomposition)
𝑅 ⊥ 𝐶 | 𝐸 (using decomposition)
𝑅 ⊥ 𝐵 | 𝐸 (using decomposition)


𝑋 ⊥ 𝑾 for every 𝑾 ⊆ Non_Descendants(𝑋)

分解性也能够帮助我们证明贝叶斯网络的链式法则 (Chain)

根据贝叶斯网络的定义,我们可以得到:
𝑃(𝑒, 𝑏, 𝑟, 𝑎, 𝑐) = 𝑃(𝑒) 𝑃(𝑏) 𝑃(𝑟|𝑒) 𝑃(𝑎|𝑒, 𝑏) 𝑃(𝑐|𝑎)
根据链式法则,我们能得到:
𝑃(𝑒, 𝑏, 𝑟, 𝑎, 𝑐) = 𝑃(𝑒) 𝑃(𝑏|𝑒) 𝑃(𝑟|𝑏, 𝑒) 𝑃(𝑎|𝑒, 𝑏, 𝑟) 𝑃(𝑐|𝑎, 𝑒, 𝑏, 𝑟)


According to P(b) and P(b|e): B ⊥ E
Markov assumption: B ⊥ E, R. Using decomposition: B ⊥ E & B ⊥ R


According to P(r|e) and P(r|b, e): R ⊥ B | E
Markov assumption: R ⊥ B, A, C | E. Using decomposition: R ⊥ B | E & R ⊥ A | E & R ⊥ C | E

在这里插入图片描述

弱联合(Weak Union)

如果我们已经知道 YW 不会对我们对于 X 的信念度造成影响,那么部分信息 Y 也不会让剩下的部分 WX 造成影响。

𝑿 ⊥ 𝒀 ∪ 𝑾 | 𝒁 only if 𝑿 ⊥ 𝑾 | 𝒁 ∪ 𝒀

𝐶 ⊥ 𝐵, 𝐸, 𝑅 | 𝐴 (Markovian property for 𝐴)
𝐶 ⊥ 𝑅 | 𝐴, 𝐵, 𝐸 (using decomposition)

这可以看作是 Markov(𝐺) 得出的独立性的加强版。

收缩 (Contraction)

这个特性的理解可能会稍显复杂,它的定义是:在知道 Y 为无关信息且 W 也与 X 无关之后,那么 YW 一定也与 X 无关。

𝑿 ⊥ 𝒀 | 𝒁 and 𝑿 ⊥ 𝑾 | 𝒁 ∪ 𝒀 only if 𝑿 ⊥ 𝒀 ∪ 𝑾 | 𝒁

这一特性的证明会稍微复杂一些,我们用一个新的更简单的网络:

在这里插入图片描述

根据马尔科夫假设可得:X3 ⊥ X1 | X2
X3 ⊥ X1 | X2 = X1⊥ X3 | X2 (Symmetric)


根据马尔科夫假设可得:X4 ⊥ X1 , X2 | X3
X4 ⊥ X1 , X2 | X3
= X4 ⊥ X1 | X3 , X2 (Weak Union)
= X1⊥ X4 | X3 , X2 (Symmetric)


X1⊥ X4, X3| X2

交集(Intersection)

该特性的核心思想为:如果我们知道给定 Y 时,信息 WX 不相关,并且给定 W 时,信息 YX 不相关,那么 YWX 不相关。

𝑿 ⊥ 𝒀 | 𝒁 ∪ 𝑾 and 𝑿 ⊥ 𝑾 | 𝒁 ∪ 𝒀 only if 𝑿 ⊥ 𝒀 ∪ 𝑾 | 𝒁

需要特别注意的是,这个特性只适用于严格正分布 (Strictly Positive Distributions) ,所谓严格正分配,指的是不会有为 0 的概率,这也意味着不会有为 1 的概率,因此,严格正分配实际上就表示不会有完全确知概率。

这里我们用一个电路图来进行理解:
在这里插入图片描述

E ⊥ A | C
E ⊥ C | A
在本例中 𝒁 = ∅ ,所以可以得到:
E ⊥ A, C
但是,这个结论是不正确的,这意味着这个电路的输出和左半边的电路完全没有关系,显然这不可能。造成这个结果的原因就在于,电路图的概率分布不是严格正分布,它一定包含确知概率。

独立性的图形测试(Graphical Test of Independence)

我们现在已经知道,根据贝叶斯网络 (G, Θ)Markov(G) ,我们可以通过之前介绍的一系列石墨公理 (Graphoid Axioms) 推论出其中的所有独立关系,但是这个过程会显得比较复杂。这里,我们介绍一个更加简单的方式来找到这些独立关系,这种方式直接使用图来进行测试,十分直观和简单,被称为 D-Separation

D-Separation

我们假设三个变量 X, YZ 。如果变量 XYZ D-Separation,那么就意味着在 DAG G 中,节点 X 和节点 Y 之间的每一条路径都会被 Z 阻断,因此对于从 DAG G 得到的所有概率分布,都满足 𝑿 ⊥ 𝒀 | 𝒁

为了便于理解,我们来回顾一下之前我所做的一个比喻,将节点看作 “阀门”,将 “影响” 看作是管道中流动的水。这个思想将帮助我们更好地理解 D-Separation 的概念。那么,首先我们来看一看,整个 “管道系统” 中会有哪些不同的 “阀门”。

一般来说,总共有 3 种不同的阀门:

在这里插入图片描述

我们用 Z 表示已被观察到的节点集合,也就是我们所谓的证据 (Evidence)

名称意义关闭条件
顺序阀 (sequential valve)N1 → W → N2W 是它的原因 N1 和它的影响 N2 的中介 (Intermediary)如果 W 出现在 Z 中,则顺序阀关闭
分歧阀 (divergent valve)N1 ← W → N2WN1N2 的共同原因 (Common Cause)如果 W 出现在 Z 中,则分歧阀关闭
收敛阀 (convergent valve)N1 → W ← N2W 两个原因 N1N2 的共同结果 (Common Effect)如果 W 和其任何后继节点都没有出现在 Z 中,则收敛阀关闭

在有了以上这些信息之后,我们要做的就只有将整个通路分割为一段段来进行检查,只要有一段通路的阀门关闭,则整条通路就一定是关闭的,此时就达成了 D-Separation,也就得到了独立性关系。

接下来,我们还是用之前的地震警报的贝叶斯网络,来看几个具体的例子:

在这里插入图片描述

Case 1:X = R, Y = C, Z = Ø
首先检查有无通路。若 R 和 C 之间没有通路,那么 R 和 C 一定独立,但此处存在通路 R - E - A - C.
通路的第一部分为 R ← E → A 的分歧阀,E 未被观察到,即 E 不在 Z 中,因此通路为 Open
通路的第二部分为 E → A → C 的顺序阀,A 未被观察到,即 A 不在 Z 中,因此通路为 Open
因此整条通路允许 “影响” 流通,所以 R 和 C 不满足 D-Separation,此时,它们不独立


Case 2:X = R, Y = C, Z = E
这是的情况和之前只改变了一点,那就是 E 被观察到了,即 E 在 Z 中,那么我们知道,R ← E → A 的分歧阀为 Close,整条路径不通。因此 R 和 C 满足 D-Separation,所以 R ⊥ C | E


Case 4:X = R, Y = B, Z = Ø
首先确认, R 和 B 之间有路径
第一部分为 R ← E → A 的 Divergent,因为 E 为Open,通路。
第二部分为 E → A ← B 的 Convergent,因为 A 或 A 的后继都不在 Z 中,因此 Close,不通,所以 R 和 B 满足 D-Separation,因此 R ⊥ B


Case Five:X = R, Y = B, Z = A
第一部分和上述 Case 4 相同,第二部分因为 A 在 Z 中,所以Open,所以 R 和 B 不满足 D-Separation

对于 D-Separation 的检测

我们根据 D-Separation 的定义可以知道,想要检测在 DAG G 中, XY 是否被 Z D-Separation,其实就是在看 XY 是否在一幅新的图 G’ 中不相连

具体的操作很简单,我们把 G 中所有不属于 XYZ 的叶节点 (Leaf Node) 全部删除,直到删无可删。之后,再把所有来自 Z 中的边全部删除,此时,如果 XY 不相连,那么满足 D-Separation。

在这里插入图片描述

比如我们想要检测 T,C 是否和 BS,X D-Separation。此时,X = {T, C}, Y = {B}, Z = {S, X}
首先,我们删除叶节点,因为 XXYZ 中,因此,我们只能删除 D 以及它的两条边
此时叶节点只剩 X 和 B,它们都在 XYZ 中,无法继续删除
删除所有来自 Z 中的边,即从 S 出发的两条边,这时我们已经能看到,T,CB 没有路径相连,因此 T,CB 满足D-Separation

可靠性和完备性(Soundness and Completeness)

直接看结论:

  • D-Separation 是可靠的 (Sound) 。 如果 P 是由贝叶斯网络 (G, Θ) 的概率分布,那么只有 𝑿 ⊥ 𝒀 | 𝒁,才有 dsep(X, Z, Y)。我们可以放心地使用 D-Separation 来推导 P 中的独立性陈述。
  • D-Separation 不是完备 (Complete) 的。 它无法推断出 P 中的所有独立性陈述。因为有一些独立性隐藏在网络的参数之中。

在这里插入图片描述
比如在上图这个例子中,我们可以看到,在这个参数化下,A 的取值不会影响 B,B ⊥ A。但是这个独立性是无法用 D-Separation 推论出来的,因为 A 和 B 两个节点是直接相连的。

造成这一结果的原因其实非常简单,这源于 D-Separation 本身的性质,我们之前说过 D-Separation 是一种 “图形测试方法”,我们是根据网络的图形特性来进行推论的,因此对于具体的参数化,这一“数”的领域,难以触及。

因此,我们可以得到如下结论,给定一个从贝叶斯网络 (G, Θ) 得出的分布 P :

  • 如果变量 XYZ D-Separation ,那么给定ZXY 相互独立对于所有的参数化都成立
  • 如果 变量 XY 不被 Z D-Separation,那么给定ZXY 是否相互独立取决于具体的参数化 Θ

当然,我们在对贝叶斯网络进行参数化时候,也可以人为保障 D-Separation 的完备性,比如我们规定:对于每一个 DAG G,都有一个参数化 Θ 使得 dsep(X, Z, Y) 当且仅当 𝑿 ⊥ 𝒀 | 𝒁。 也就是人为限制参数化中,隐性独立关系的出现。这一举措也体现了我们并不能对 D-Separation 算法本身进行提升,因为这个算法是直接根据图进行的计算。

独立关系图(Independence Maps)

I-MAP

独立关系图 (Independence Map, I-MAP) 描述了 DAG 中的独立性与概率分布之间的关系,它有助于理解 DAG 作为独立声明语言的表达能力。

比如我们用 G 表示 DAG,P 表示相同变量的概率分布。那么 G 是 P 的独立关系图 (I-MAP),当且仅当 dsep(X, Z, Y) only if 𝑿 ⊥ 𝒀 | 𝒁。这意味着 D-Separation 声明的每个独立性都在 P 中成立。

我们可以把所有能够从P中得到的独立性看作一个集合,那么 D-Separation 就是其子集。但这里我们并未限制 D-Separation 的尺寸,随着我们往 G 中添加 Edge,其尺寸可能会越来越小。当G变为一个全连接图 (Fully Connected Graph) ,很有可能 D-Separation 会变为一个空集,但此时它仍为 P 的 I-MAP,因为空集是任何集合的子集。

我们还定义最小的 (Minimal) 的 I-MAP。最小的 I-MAP 指的是,如果我们删除图 G 中的任意一条边,G 不再为 I-MAP ,那么此时的 G 就是最小的 I-MAP。 因为删除任何一条边都意味着,增加了一部分独立性。

在这里插入图片描述

如果P由贝叶斯网络 (G, Θ) 推导出的,则 G 一定是 P 的 I-MAP,但不一定是最小的 I-MAP。

D-MAP

G是一张依赖图 (Dependency Map, D-MAP) 意味着 G 中缺乏 D-Separation 即表示 P 中存在依赖性。

𝑿 ⊥ 𝒀 | 𝒁 only if dsep(X, Z, Y)

这个结论显得比较片面,因为如果 P 是由贝叶斯网络(𝐺,Θ)推导出的,则 G 不一定是 P 的 D-MAP。因为我们之前已经说过,可能会有一些独立性隐藏在参数化之中,因此如果我们能够进行人为限制,那么 G 可能会是 P 的 D-MAP。

P-MAP

如果一张图 G 既是 I-MAP 又是 D-MAP,那么它就是完美图 (Perfect Map, P-MAP)。这是我们最希望得到的图,因为它意味着 D-Separation 能够得到一个贝叶斯网络中的所有独立性。

在这里插入图片描述
但是我们需要注意的是,有一些概率分布是无法得到 P-MAP 的。假设我们有以下 4 个变量和 1 个仅满足这些依赖关系的分布 P:

𝑋1 ⊥ 𝑋2 | 𝑌1, 𝑌2
𝑋2 ⊥ 𝑋1 | 𝑌1, 𝑌2
𝑌1 ⊥ 𝑌2 | 𝑋1, 𝑋2
𝑌2 ⊥ 𝑌1 | 𝑋1, 𝑋2

我们能得到如下网络,可以看到,这个网络中总会有一些独立关系与前提矛盾:
在这里插入图片描述
我们可以得出结论:P-MAP 是 D-Separation 和 P 的 Independence 的完美匹配,如果没有 CPT 中隐藏的对立关系,有可能实现。但对于有一些关系集合,我们根本无法用图去完全实现它们,因此不可能会有 P-MAP。

接下来我们来看,给定一个概率分布 P,如果构建一个 DAG G,使其为 P 的最小 (Minimal) I-MAP。具体的步骤为:

  1. 为 P 中的变量 X1, X2, X3, … Xn 选择一个顺序(不同的顺序会生成不同的图)
  2. 构想一个新的图 G’,并按照选择的顺序依次考虑变量 Xi
  3. 对于每个变量 Xi 确定一个最小子集 S = {X1, …, Xi-1
  4. S 作为 Xi 的父节点

接下来看一个具体的例子:

在这里插入图片描述
在这里插入图片描述
根据该图,我们能画出如下网络:
在这里插入图片描述
这也就印证了我们在之前提出的两个网络的等价陈述。但我们要牢记,一开始的顺序选择,会产生完全不同的结果图。

在这里插入图片描述
进行一下总结:

  • G’ 一定会是最小的 I-MAP。所以删除任何一条边都会使其不再是 I-MAP(即使是看似多余的 B → E)
  • G’ 与因果关系不相容。
  • 最小 (Minimal) I-MAP 不唯一,取决于变量顺序。反之,对于一个顺序,也可能会有多个 I-MAP,这是因为对于同一个变量可能会找到多个不同的最小子集 S

马尔科夫毯(Markov Blanket)

我们需要知道那些变量能使 A 与其他所有变量独立/不相关,也就是其他所有变量都不会影响我们对 A 的信念度。为此我们需要关注 A 的 Parent, Effect 以及和A有着共同Effect 的 Spouse。这一系列变量就是马尔科夫毯 (Markov Blanket)。

在这里插入图片描述
如果该马尔科夫毯已是最小的,即该马尔科夫毯内已无其他任何子集也为马尔科夫毯,则其为马尔科夫边界 (Markov Boundary)

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
用python写的一段贝叶斯网络的程序 This file describes a Bayes Net Toolkit that we will refer to now as BNT. This version is 0.1. Let's consider this code an "alpha" version that contains some useful functionality, but is not complete, and is not a ready-to-use "application". The purpose of the toolkit is to facilitate creating experimental Bayes nets that analyze sequences of events. The toolkit provides code to help with the following: (a) creating Bayes nets. There are three classes of nodes defined, and to construct a Bayes net, you can write code that calls the constructors of these classes, and then you can create links among them. (b) displaying Bayes nets. There is code to create new windows and to draw Bayes nets in them. This includes drawing the nodes, the arcs, the labels, and various properties of nodes. (c) propagating a-posteriori probabilities. When one node's probability changes, the posterior probabilities of nodes downstream from it may need to change, too, depending on firing thresholds, etc. There is code in the toolkit to support that. (d) simulating events ("playing" event sequences) and having the Bayes net respond to them. This functionality is split over several files. Here are the files and the functionality that they represent. BayesNetNode.py: class definition for the basic node in a Bayes net. BayesUpdating.py: computing the a-posteriori probability of a node given the probabilities of its parents. InputNode.py: class definition for "input nodes". InputNode is a subclass of BayesNetNode. Input nodes have special features that allow them to recognize evidence items (using regular-expression pattern matching of the string descriptions of events). OutputNode.py: class definition for "output nodes". OutputBode is a subclass of BayesNetNode. An output node can have a list of actions to be performed when the node's posterior probability exceeds a threshold ReadWriteSigmaFiles.py: Functionality for loading and saving Bayes nets in an XML format. SampleNets.py: Some code that constructs a sample Bayes net. This is called when SIGMAEditor.py is started up. SIGMAEditor.py: A main program that can be turned into an experimental application by adding menus, more code, etc. It has some facilities already for loading event sequence files and playing them. sample-event-file.txt: A sequence of events that exemplifies the format for these events. gma-mona.igm: A sample Bayes net in the form of an XML file. The SIGMAEditor program can read this type of file. Here are some limitations of the toolkit as of 23 February 2009: 1. Users cannot yet edit Bayes nets directly in the SIGMAEditor. Code has to be written to create new Bayes nets, at this time. 2. If you select the File menu's option to load a new Bayes net file, you get a fixed example: gma-mona.igm. This should be changed in the future to bring up a file dialog box so that the user can select the file. 3. When you "run" an event sequence in the SIGMAEditor, the program will present each event to each input node and find out if the input node's filter matches the evidence. If it does match, that fact is printed to standard output, but nothing else is done. What should then happen is that the node's probability is updated according to its response method, and if the new probability exceeds the node's threshold, then its successor ("children") get their probabilities updated, too. 4. No animation of the Bayes net is performed when an event sequence is run. Ideally, the diagram would be updated dynamically to show the activity, especially when posterior probabilities of nodes change and thresholds are exceeded. To use the BNT, do three kinds of development: A. create your own Bayes net whose input nodes correspond to pieces of evidence that might be presented and that might be relevant to drawing inferences about what's going on in the situation or process that you are analyzing. You do this by writing Python code that calls constructors etc. See the example in SampleNets.py. B. create a sample event stream that represents a plausible sequence of events that your system should be able to analyze. Put this in a file in the same format as used in sample-event-sequence.txt. C. modify the code of BNT or add new modules as necessary to obtain the functionality you want in your system. This could include code to perform actions whenever an output node's threshold is exceeded. It could include code to generate events (rather than read them from a file). And it could include code to describe more clearly what is going on whenever a node's probability is updated (e.g., what the significance of the update is -- more certainty about something, an indication that the weight of evidence is becoming strong, etc.)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值