本文的目的是记录一些在学习贝叶斯网络(Bayesian Networks)过程中遇到的基本问题。主要包括有向无环图(DAG),I-Maps,分解(Factorization),有向分割(d-Separation),最小I-Maps(Minimal I-Maps)等。主要参考Nir Friedman的相关PPT。
1 概率分布(Probability Distributions)
令X1,...,Xn表示随机变量;令P是X1,...,Xn的联合分布(joint distribution)。如果每个变量均可有两种取值(0-1分布),那么最终我们将得到2^n种取值,也就是说,我们需要用2^n个变量来描述P的分布。
2 随机变量的独立性
如果随机变量X和Y相互独立(independent),那么:
1)P(X=x|Y=y)=p(X=x),对于所有的x和y均成立;2)也就是说,随机变量Y的取值(或者说随机事件Y是否发生),不影响X。
3)P(X,Y)=P(X|Y)*P(Y)=P(X)*P(Y);
推广,如果X1,。。。,Xn独立,那么:
P(X1,,,,,Xn)=P(X1)...P(Xn),共需O(n)个参数。
3 条件独立(Conditional Independence)
上述独立的情况比较理想,不幸的是,现实中大多数我们感兴趣的随机变量都不是相互独立的。更加常见的假设是条件独立。两个随机变量X和Y对于给定条件Z条件独立,如果:
P(X=x|Y=y,Z=z) = P(X=x|Z=z),对于所有随机变量取值x,y,z均成立。
也就是说,当我们知道Z的取值时,Y的取值不影响X的预测。记为Ind(X;Y|Z)
4 马尔科夫假设(Markov Assumption)
马尔科夫假设是针对有向无环图做的更清晰的独立性假设。对于图G中的任意一个节点X,X代表一个随机变量,在给定X的父节点集Par(X)的情况下,X和X的所有非子节点相互独立。一般记作Ind(X;NonDesc(x)|Par(x))。这也称作变量的局部马尔科夫性。实例见下图:
5 I-Maps
一个有向无环图G是分布P的一个I-Map当对G的所有马尔科夫假设也适合于对P(假设G和P均具有相同的随机变量)。这是从有向无环图到概率公式推理的基础。
6 分解 Factorization
如果G是P的一个I-Map,那么我们能简化P的表示么?
例如,对于随机变量X和Y,如果Ind(X;Y),我们可以知道:P(X|Y)=P(X)。
根据链式法则(Chain Rules),我们知道:P(X,Y)=P(X|Y)*P(Y)=P(X)*P(Y)。
这样,我们就将P(X,Y)简化成为P(X)*P(Y)的形式。
7 分解定理
如果G是P的一个I-Map,那么:
8 最小I-Map, Minimal I-Map
一个有向无环图G是P的一个最小I-Map当:G是P的一个I-Map;如果G‘是G的子图,那么G’不是P的I-Map。
9 d-separated 有向分割
d-separated这个概念是由Judea Pearl于1988年提出的算法的名字。这个算法是用来衡量图中的所有的条件独立关系。
令X, Y和Z是一个有向无环图 G中二个不相 交节点的子集,如果在集合X和Y中所有节点间的所有路径都被集合Z所 阻塞,则称集合X和Y被Z集合d-s eparation。
也称Z 为X和Y的切割集。否则,称在给定集合Z下集合X和Y依赖。
那么,什么时候称点集X和Y中所有节点间的路径被点集Z阻塞呢?如下图所示:
1.每条从A中的变量(顶点)到B中变量(顶点)的路径都经过集合Z,则称Z分开了点集A和B;
2.Z阻塞了从A到B的所有路径。
10 信息理论
增加这个定义的原因是因为评价概率模型时常常要用到,作为笔记留作查阅。
11.扩展阅读
图模型的介绍
An introduction to graphical models,Kevin P. Murphy
关于图模型的课程:课件以书的形式给出,易读
Statistical Learning Theory,berkeley CS281A
http://www.cs.berkeley.edu/~jordan/courses/281A-fall02/
更多的tutorials
http://www.cs.ubc.ca/~murphyk/
http://research.microsoft.com/~cmbishop/talks.htm
http://research.microsoft.com/~heckerman/
http://www.autonlab.org/tutorials/
http://www.cs.berkeley.edu/~jordan/tutorials.html
一些工具/源代码
Intel Probabilistic Network Library:C++
www.intel.com/technology/computing/pnl/index.htm
Jie Cheng :KDDCup01的优胜者
http://www.cs.ualberta.ca/~jcheng/
Matlab工具:http://prdownloads.sourceforge.net/bnt/
PGM学习之六 从有向无环图(DAG)到贝叶斯网络(Bayesian Networks)的更多相关文章
-
【学习笔记】有向无环图上的DP
手动博客搬家: 本文发表于20180716 10:49:04, 原地址https://blog.csdn.net/suncongbo/article/details/81061378 首先,感谢以下几 ...
-
C#实现有向无环图(DAG)拓扑排序
对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在 ...
-
【模板整合计划】图论—有向无环图 (DAG) 与树
[模板整合计划]图论-有向无环图 (DAG) 与树 一:[拓扑排序] 最大食物链计数 \(\text{[P4017]}\) #include<cstring> #include<cs ...
-
判断有向无环图(DAG)
1.拓扑排序 bfs 所有入度为0的先入选. 2.tarjan 1个点1个集合 3.暴力 一个点不能重新到达自己
-
PGM:有向图模型:贝叶斯网络
http://blog.csdn.net/pipisorry/article/details/52489270 为什么用贝叶斯网络 联合分布的显式表示 Note: n个变量的联合分布,每个x对应两个值 ...
-
PGM学习之五 贝叶斯网络
本文的主题是“贝叶斯网络”(Bayesian Network) 贝叶斯网络是一个典型的图模型,它对感兴趣变量(variables of interest)及变量之间的关系(relationships) ...
-
【拓扑】【宽搜】CSU 1084 有向无环图 (2016湖南省第十二届大学生计算机程序设计竞赛)
题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1804 题目大意: 一个有向无环图(DAG),有N个点M条有向边(N,M<=105 ...
-
拓扑排序-有向无环图(DAG, Directed Acyclic Graph)
条件: 1.每个顶点出现且只出现一次. 2.若存在一条从顶点 A 到顶点 B 的路径,那么在序列中顶点 A 出现在顶点 B 的前面. 有向无环图(DAG)才有拓扑排序,非DAG图没有拓扑排序一说. 一 ...
-
有向无环图的应用—AOV网 和 拓扑排序
有向无环图:无环的有向图,简称 DAG (Directed Acycline Graph) 图. 一个有向图的生成树是一个有向树,一个非连通有向图的若干强连通分量生成若干有向树,这些有向数形成生成森林 ...
随机推荐
-
c#基础汇总-------------封装
说到封装,其实是比较基础类的问题,它为程序设计提供了系统与系统,模块与模块,类与类之间交互的实现手段.在.Net中,一切看起来都已经被包装在.Net FrameWork这一复杂的网络中,提供给最终开发 ...
-
关闭编译器FPO优化
// The release libs don't include FPO debug information, so FPO// optimization will interfere with s ...
-
Week3(9月26日):做完后,总结下
Part I:提问 =========================== 1.linq小回顾 (1)Movies控制器中Index动作,显示全部电影信息. public ActionResult ...
-
构建一个真实的应用电子商务SportsStore(十)
构建一个真实的应用电子商务SportsStore(十) 我们现在还需要为管理员提供一个途径,使他能方便的管理网站的商品目录,这也是所有网站都需要的功能,常用到了几乎所有开发人员都要开发这种功能的地步, ...
-
Android性能优化之TraceView和Lint使用详解
Android lint工具是Android studio中集成的一个代码提示工具,它主要负责对你的代码进行优化提示,包括xml和java文件,很强大.编写完代码及时进行lint测试,会让我们的代码变 ...
-
C++各个存储区
#include<iostream.h>void main(){char a[]="abc";栈 char b[]="abc";栈 char* c= ...
-
[Big Data - Kafka] kafka学习笔记:知识点整理
一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险. ...
-
Grep console 设置
Grep console DEBUG 9961B8 INFO 4B5E76 WARN 8A8A00 ERROR 9F6B00 8A7674
-
cobbler配置解析
1.Cobbler命令说明: 命令名称 命令用途 cobbler check 检查cobbler配置 cobbler list 列出所有的cobbler元素 cobbler report 列出元素的详 ...
-
ActiveMQ之VirtualTopic是什么?
一句话总结: VirtualTopic是为了解决持久化模式下多消费端同时接收同一条消息的问题. 想象这样一个场景: 生产端产生了一笔订单,作为消息MessageOrder发了出去. 这笔订单既 ...