[PGM] Exact Inference for calculating marginal distribution
如何在贝叶斯网络中求解某变量的边缘分布?
这是一个问题。
贝叶斯网络如下:
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( L, C)
= Σ ... Σ 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
= ΣH Σ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 ) * Σv p(C=high|V) * p(V|L=true )
2. p(L=false) * Σv 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) * Σv 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) = Σo ψ(VSO) = Σo 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的更多相关文章
- [Bayesian] “我是bayesian我怕谁”系列 - Exact Inference
要整理这部分内容,一开始我是拒绝的.欣赏贝叶斯的人本就不多,这部分过后恐怕就要成为“从入门到放弃”系列. 但,这部分是基础,不管是Professor Daphne Koller,还是统计学习经典,都有 ...
- Exact Inference in Graphical Models
独立(Independence) 统计独立(Statistical Independence) 两个随机变量X,Y统计独立的条件是当且仅当其联合概率分布等于边际概率分布之积: \[ X \perp Y ...
- 【概率论】3-5:边缘分布(Marginal Distribution)
title: [概率论]3-5:边缘分布(Marginal Distribution) categories: Mathematic Probability keywords: Marginal p. ...
- 机器学习 —— 概率图模型(Homework: Exact Inference)
在前三周的作业中,我构造了概率图模型并调用第三方的求解器对器进行了求解,最终获得了每个随机变量的分布(有向图),最大后验分布(双向图).本周作业的主要内容就是自行编写概率图模型的求解器.实际上,从根本 ...
- [Bayesian] “我是bayesian我怕谁”系列 - Exact Inferences
要整理这部分内容,一开始我是拒绝的.欣赏贝叶斯的人本就不多,这部分过后恐怕就要成为“从入门到放弃”系列. 但,这部分是基础,不管是Professor Daphne Koller,还是统计学习经典,都有 ...
- 本人AI知识体系导航 - AI menu
Relevant Readable Links Name Interesting topic Comment Edwin Chen 非参贝叶斯 徐亦达老板 Dirichlet Process 学习 ...
- 机器学习&数据挖掘笔记_20(PGM练习四:图模型的精确推理)
前言: 这次实验完成的是图模型的精确推理.exact inference分为2种,求边缘概率和求MAP,分别对应sum-product和max-sum算法.这次实验涉及到的知识点很多,不仅需要熟悉图模 ...
- PGM:概率图模型Graphical Model
http://blog.csdn.net/pipisorry/article/details/51461878 概率图模型Graphical Models简介 完全通过代数计算来对更加复杂的模型进行建 ...
- 概率图模型(PGM)综述-by MIT 林达华博士
声明:本文转载自http://www.sigvc.org/bbs/thread-728-1-1.html,个人感觉是很好的PGM理论综述,高屋建瓴的总结了PGM的主要分支和发展趋势,特收藏于此. “概 ...
随机推荐
- PHP把2个二维数组合并一个二维数组
$a = array(0 => Array(id => 66,class_name => www.iiwnet.com),1 => Array(id => 67,clas ...
- 解决发http get请求的时候不成功,出现android.os.NetworkOnMainThreadException的异常
问题描述:在接游戏sdk的时候,由于游戏要求购买的时候是在主线程里面进行的,但是发http请求是不能在主线程里面发,否则就会出现android.os.NetworkOnMainThreadExcept ...
- 推荐一个基于Vue2.0的的一款移动端开发的UI框架,特别好用。。。
一丶YDUI 一只注重审美,且性能高效的移动端&微信UI. 下面为地址自己研究去吧! 我的项目正在用,以前用的Mint-ui但是现在感觉还是这个好一点,官方给出的解释很清楚,很实用. 官方地址 ...
- 【知识整理】这可能是最好的RxJava 2.x 入门教程(五)
这可能是最好的RxJava 2.x入门教程系列专栏 文章链接: 这可能是最好的RxJava 2.x 入门教程(一) 这可能是最好的RxJava 2.x 入门教程(二) 这可能是最好的RxJava 2. ...
- MAC开发环境安装
MAC开发环境安装 安装sancha cmd: 安装: https://www.sencha.com/products/extjs/cmd-download/ cmd运行 $ open .bash_p ...
- man ssh翻译(ssh命令中文手册)
本文为命令ssh的man文档翻译,翻译了90%的内容,剩余是一些没必要翻译的东西,请见谅. 如此文有所疑惑,希望我的另一篇文章能解惑: SSH(1) BSD Ge ...
- python 写csv文件
一.只有一列内容: def create_file(self, a, b): # 上传csv 文件 # os.remove('openfile.csv') open_file = open('5000 ...
- usaco 2002 月赛 Chores 题解
Description Farmer John's family pitches in with the chores during milking, doing all the chores as ...
- 【使用WCF,发布服务端浏览报错】未能从程序集“System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089” 中加载类型 “System.ServiceModel.Activation.HttpModule”。
问题: 在WIN7中的IIS服务器中部署WCF服务程序时,通过浏览器访问报出如下错误: 未能从程序集"System.ServiceModel, Version=3.0.0.0, Cultur ...
- Memcached的安装与使用
这一段折腾了下Memcached,有所收获吧,记录一下. 1.什么是Memcached memcached是一种缓存技术, 他可以把你的数据放入内存,从而通过内存访问提速,因为内存最快的, memca ...