如何在贝叶斯网络中求解某变量的边缘分布?

这是一个问题。


贝叶斯网络如下:

CPTs如下:

(1) How to compute p( L | C = high )?


p( L | C = high )

= p(L, C=high) / p(C=high)   // Bayesian Theorem.

= Joint dist / p(C=high)  // 但是这里需要的却是joint dist!

求 Joint dist,便想到 变量消减,如下:

p( LC)

Σ ... Σ p(H) * p(L) * p(A) * p(V|H,L) * p(S|H,L) * p(C|V) * p(O|V,S) * p(B|O,T) * p(T|A)  // 积分掉与L,C没任何关系的部分,加和=1

ΣΣV p(H) * p(L) * p(V|H,L) * p(C|V)   // 可见,结果只保留了与L,C有关的部分;因为H,V与L,C有牵扯,所以没法加和消减掉变量

= p(LΣV p(C|V) ΣH p(H) * p(V|H,L)

注意:消元的顺序不能胡来:

比如p(O|V,S)是可以最终消掉的,但O还作为了p(B|O,T)的条件部分,所以,

  • 先消掉p(B|O,T)  (如果B此时能消,也即是不在其他地方充当条件)
  • 然后才能消O。

之后就是穷举V, H的过程。

先处理这一个部分:

ΣH p(H) * p(V|H,L)   // 可见,除了H,剩余的两个变量(V,L)需要穷举所有离散情况,以便消减掉H

1. ΣH p(H) * p(V=low |H,L=true )

2. ΣH p(H) * p(V=high|H,L=true ) = 1 - ΣH p(H) * p(V=low|H,L=true )   // 求出1,即自动得出2

3. ΣH p(H) * p(V=low |H,L=false)

4. ΣH p(H) * p(V=high|H,L=false) = 1 - ΣH p(H) * p(V=low|H,L=false)   // 求出3,即自动得出4

计算过程:

1. ΣH p(H) * p(V=low |H,L=true ) 等价于 p(V=low |L=true )

= p(H=true) * p(V=low|H=true,L=true) + p(H=false) * p(V=low |H=false,L=true)   // 变为了可查表的形式

= 0.2 * 0.95 + 0.8 * 0.01

= 0.198

2. ΣH p(H) * p(V=high|H,L=true ) 等价于 p(V=high|L=true )

= 1 - ΣH p(H) * p(V=low|H,L=true )

= 1 - 0.198

= 0.802

3. ΣH p(H) * p(V=low |H,L=false等价于 p(V=low |L=false)

= p(H=true) * p(V=low|H=true,L=false) + p(H=false) * p(V=low |H=false,L=false)   // 变为了可查表的形式

= 0.2 * 0.98 + 0.8 * 0.05

= 0.236

4. ΣH p(H) * p(V=high|H,L=false) 等价于 p(V=high|L=false)

= 1 - ΣH p(H) * p(V=low|H,L=false)

= 1 - 0.236

= 0.764

再处理剩下的部分:

p(L) * Σv p(C|V) * p(V|L)   // 可见,除了V,剩余的两个变量(C,L)需要穷举所有离散情况,以便消减掉V

1. p(L=true ) * Σp(C=high|V) * p(V|L=true ) 

2. p(L=false) * Σp(C=high|V) * p(V|L=false)  // 注意,Σv外有p(L),故不能直接采用补集的方法计算

计算过程:

1. p(L=true ) * Σv p(C=high|V) * p(V|L=true ) 等价于 p(L=true, C=high)

= p(L=true ) * p(C=high|V=low ) * p(V=low |L=true)p(L=true ) * p(C=high|V=high) * p(V=high|L=true ) 

= 0.05 * 0.01 * 0.198 + 0.05 * 0.7 * 0.802

= 0.028169

2. p(L=false) * Σp(C=high|V) * p(V|L=false) 等价于 p(L=false, C=high)

= p(L=false) * p(C=high|V=low ) * p(V=low |L=false) + p(L=false) * p(C=high|V=high) * p(V=high|L=false

= 0.95 * 0.01 * 0.236 + 0.95 * 0.7 * 0.764

= 0.510302

Result:

p( L | C = high )

= p(L, C=high) / { p(C=high) }  // Bayesian Theorem.

= p(L, C=high) / { p(L=true, C=high) + p(L=false, C=high) }

= p(L, C=high) / { 0.028169 + 0.510302 }

可见,结果就是Bernoulli distribution with probability with theta = 0.028169/(0.028169 + 0.510302)=0.052312938

(2) Then, compute p( L | C = high ) using the Junction Tree Algorithm. 


1. Moralisation

2. Triangulation

得到clique:{A, T}, {O,T,B}, {V, S,O}, {V, C}, {V, H, L, S}

3. Construction of the junction tree

4. Assignment of potentials

ψ(CV)   = P(C|V)
ψ(VSO) = P(O|V,S)
ψ(VHLS) = P(V|H,L)P(S|H,L)P(H)P(L)
ψ(OTB) = P(B|O,T)
ψ(TA) = P(T|A)P(A)
Φ(V) = Φ(VS) = Φ(O) = Φ(T) = 1

根据以下算法更新evidence:

  

  From left to right: 

Φ(V) = 1

Φ*(V) = Σc ψ(CV) = Σc P(C|V) = P(C = high|V)

From right to left: 

Φ(T) = 1

Φ*(T) = Σa ψ(TA) = Σa P(T|A)P(A) = P*(T)

ψ(OTB) = P(B|O,T)

ψ*(OTB) = ψ(OTB) x Φ*(T)/Φ(T) = ψ(OTB)

Φ(O) = 1

Φ*(O) = Σtb ψ(OTB) = Σtb P(B|O,T) = 1

ψ(VSO) = P(O|V,S)

ψ*(VSO) = ψ(VSO) x Φ*(O)/Φ(O) = ψ(VSO)

Φ(VS) = 1

Φ*(VS) = Σψ(VSO) = ΣP(O|V,S) = 1

更新 { V H L S }:

ψ*(VHLS)

= ψ(VHLS) x { Φ*(V) x Φ*(VS) } / { Φ(V) x Φ(VS) }

= P(V|H,L) * P(S|H,L) * P(H) * P(L) * { P(C = high|V) * 1 } / { 1 * 1 }

P(V|H,L) * P(S|H,L) * P(H) * P(L) * P(C = high|V) 

注意:我们当下已获得了置信传播的一个结果,就是 ψ*(VHLS),消息从左右两边都传递到了这里。

接下来,我们会如何用这个结果呢?这个结果又能给我们带来怎样的好处呢?

以下用于下一步的类比参考。

(1)用置信传播结果表示边缘条件概率

(2)头上加了小弯弯表示是已知变量,就是条件部分的变量。

照猫画虎就是如下:

p(L|C=high)

= p(L,C=high) / p(C=high)  // Bayesian Theorem.

注意这里,分子分母的计算与传统方法比较时开始发生变化的地方,要体会。

已知:ψ*(VHLS)

分子:ΣVHS ψ*(VHLS)

分母:ΣVHSL ψ*(VHLS)

分母:(L这种情况下消不掉)

P(V|H,L) * P(S|H,L) * P(H) * P(L) * P(C = high|V) 

变为:ΣVHL{ P(V|H,L) * P(H) * P(L) * P(C = high|V) 

分子:

P(V|H,L) * P(S|H,L) * P(H) * P(L) * P(C = high|V) 

变为:ΣVH{ P(V|H,L) * P(H) * P(L) * P(C = high|V) 

可见,还是变为了穷举V,H的结果,最终也得到了方案(1)相同的结论。

后记:

这个例子可能不太完美,建议自己做一次P(O|H=true, L=true, A=true)。过程当中尤其体会对变量A的处理。

因为A是条件中的变量,所以在方法一中不能消去,这导致了计算资源的浪费;

在方法二中,就没有这个问题。好运。

[PGM] Exact Inference for calculating marginal distribution的更多相关文章

  1. [Bayesian] “我是bayesian我怕谁”系列 - Exact Inference

    要整理这部分内容,一开始我是拒绝的.欣赏贝叶斯的人本就不多,这部分过后恐怕就要成为“从入门到放弃”系列. 但,这部分是基础,不管是Professor Daphne Koller,还是统计学习经典,都有 ...

  2. Exact Inference in Graphical Models

    独立(Independence) 统计独立(Statistical Independence) 两个随机变量X,Y统计独立的条件是当且仅当其联合概率分布等于边际概率分布之积: \[ X \perp Y ...

  3. 【概率论】3-5:边缘分布(Marginal Distribution)

    title: [概率论]3-5:边缘分布(Marginal Distribution) categories: Mathematic Probability keywords: Marginal p. ...

  4. 机器学习 —— 概率图模型(Homework: Exact Inference)

    在前三周的作业中,我构造了概率图模型并调用第三方的求解器对器进行了求解,最终获得了每个随机变量的分布(有向图),最大后验分布(双向图).本周作业的主要内容就是自行编写概率图模型的求解器.实际上,从根本 ...

  5. [Bayesian] “我是bayesian我怕谁”系列 - Exact Inferences

    要整理这部分内容,一开始我是拒绝的.欣赏贝叶斯的人本就不多,这部分过后恐怕就要成为“从入门到放弃”系列. 但,这部分是基础,不管是Professor Daphne Koller,还是统计学习经典,都有 ...

  6. 本人AI知识体系导航 - AI menu

    Relevant Readable Links Name Interesting topic Comment Edwin Chen 非参贝叶斯   徐亦达老板 Dirichlet Process 学习 ...

  7. 机器学习&数据挖掘笔记_20(PGM练习四:图模型的精确推理)

    前言: 这次实验完成的是图模型的精确推理.exact inference分为2种,求边缘概率和求MAP,分别对应sum-product和max-sum算法.这次实验涉及到的知识点很多,不仅需要熟悉图模 ...

  8. PGM:概率图模型Graphical Model

    http://blog.csdn.net/pipisorry/article/details/51461878 概率图模型Graphical Models简介 完全通过代数计算来对更加复杂的模型进行建 ...

  9. 概率图模型(PGM)综述-by MIT 林达华博士

    声明:本文转载自http://www.sigvc.org/bbs/thread-728-1-1.html,个人感觉是很好的PGM理论综述,高屋建瓴的总结了PGM的主要分支和发展趋势,特收藏于此. “概 ...

随机推荐

  1. Flash TextField selectable bug block TextEvent.Link solution

    There is an old version Felx SDK bug(in my case it's Flex SDK v3.3.0.4852) that when TextField.selec ...

  2. 亲测有效!一种完美动态阈值白平衡算法 Java实现。

    几年没发文了,重新拿起技术! 最近做图像处理,要自动处理颜色平衡问题,很多什么直方图优化之类的,都不完美.所以在博客园找到了这个前辈的文章. http://www.cnblogs.com/Images ...

  3. CSS雪碧图自动生成软件

    下载地址 http://www.99css.com/1524/ 包含详细的下载地址.下载步骤以及使用教程 亮点:自动合成雪碧图+自动生成雪碧图background-position代码 简单过程 下载 ...

  4. Linux系统介绍

    类似Windows, Linux也是一个操作系统,Linux是一套开放源代码程序,并可以自由传播的类Unix操作系统软件,多用户,多任务并且支持多线程和多CPU的操作系统. Linux系统主要被应用于 ...

  5. URLConnection调用接口

    写在前面: 项目是java web,jdk1.4,weblogic 7;对方.net系统,用wcf开发的接口.对方提供接口url地址,以及说明用post方式去调用,无需传递参数,直接返回json ar ...

  6. 错误代码是1130,ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server 是无法给远程连接的用户权限问题

    错误代码是1130,ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server 是无法给远程连接的用 ...

  7. vijos1062题解

    题目: 交谊舞是2个人跳的,而且一男一女 -____-||||. 由于交谊舞之前的节目安排,所有的表演者都站成了一排.这一排人的顺序满足2点: ①对于一对舞伴男生站在女生的左边. ②任何一对舞伴之间, ...

  8. JavaScript 第一课

    今天进入到了js的阶段,了解到了JavaScript是一个很重要的阶段,所以要好好的理清每一个知识点 JavaScript的使用:   在<head>标签里应用<script> ...

  9. java IO之 File类+字节流 (输入输出 缓冲流 异常处理)

    1. File类

  10. 【转载】CANoe 入门 Step by step系列(一)基础应用

    来源:http://www.cnblogs.com/dongdonghuihui/archive/2012/09/26/2704611.html CANoe是Vector公司的针对汽车电子行业的总线分 ...