贝叶斯网络条件概率表概率表怎么看

为什么贝叶斯网络中,一个点的概率分布和样本的概率分布是不同的?_百度知道
为什么贝叶斯网络中,一个点的概率分布和样本的概率分布是不同的?
而实际上样本中这个点的分布却是(85%,发现使用不同的方法构建用同一份样本数据,有时是(90%,同一个点(yes or no)的概率分布是不一样的,构建贝叶斯网络的过程中,20%)。比如,15%),10%)有时是(80%
我有更好的答案
用来描述泊松过程的,就是gamma分布描述的是当这家店有n个客人到达所需要的时间,同样的第1个到第2个,那么从0个客人到第1个客人经过的时间服从指数分布.。之间的时间间隔都服从指数分布而且指数分布的参数是(1&#47,λ),4,2,就是从0个客人到第2个客人(中间有两个时间间隔Y2=X1+X2)的时间服从Gamma(2这三个东西就是好基友。这三个好基友就是用来这样描述泊松过程的.,同理n=1;λ),.,然后指数分布是上一个客人到下一个客人的时间间隔.,gamma分布就是把这些时间间隔加起来.N,第2到第3个。.,假设你开了一家店每小时有λ(假设等于4个)个客人光顾并服从泊松分布,如果你gamma分布的n=2。。,3
其他类似问题
为您推荐:
贝叶斯网络的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁您的位置: &
基于CREAM和贝叶斯网络的航空维修人为差错概率预测
优质期刊推荐(点击上方蓝字,可快速关注我们)2.1、摘要在上一篇文章中我们讨论了朴素贝叶斯分类。朴素贝叶斯分类有一个限制条件,就是特征属性必须有条件独立或基本独立(实际上在现实应用中几乎不可能做到完全独立)。当这个条件成立时,朴素贝叶斯分类法的准确率是最高的,但不幸的是,现实中各个特征属性间往往并不条件独立,而是具有较强的相关性,这样就限制了朴素贝叶斯分类的能力。这一篇文章中,我们接着上一篇文章的例子,讨论贝叶斯分类中更高级、应用范围更广的一种算法——贝叶斯网络(又称贝叶斯信念网络或信念网络)。2.2、重新考虑上一篇的例子上一篇文章我们使用朴素贝叶斯分类实现了SNS社区中不真实账号的检测。在那个解决方案中,我做了如下假设:i、真实账号比非真实账号平均具有更大的日志密度、各大的好友密度以及更多的使用真实头像。ii、日志密度、好友密度和是否使用真实头像在账号真实性给定的条件下是独立的。但是,上述第二条假设很可能并不成立。一般来说,好友密度除了与账号是否真实有关,还与是否有真实头像有关,因为真实的头像会吸引更多人加其为好友。因此,我们为了获取更准确的分类,可以将假设修改如下:i、真实账号比非真实账号平均具有更大的日志密度、各大的好友密度以及更多的使用真实头像。ii、日志密度与好友密度、日志密度与是否使用真实头像在账号真实性给定的条件下是独立的。iii、使用真实头像的用户比使用非真实头像的用户平均有更大的好友密度。上述假设更接近实际情况,但问题随之也来了,由于特征属性间存在依赖关系,使得朴素贝叶斯分类不适用了。既然这样,我去寻找另外的解决方案。下图表示特征属性之间的关联:上图是一个有向无环图,其中每个节点代表一个随机变量,而弧则表示两个随机变量之间的联系,表示指向结点影响被指向结点。不过仅有这个图的话,只能定性给出随机变量间的关系,如果要定量,还需要一些数据,这些数据就是每个节点对其直接前驱节点的条件概率,而没有前驱节点的节点则使用先验概率表示。例如,通过对训练数据集的统计,得到下表(R表示账号真实性,H表示头像真实性):纵向表头表示条件变量,横向表头表示随机变量。上表为真实账号和非真实账号的概率,而下表为头像真实性对于账号真实性的概率。这两张表分别为“账号是否真实”和“头像是否真实”的条件概率表。有了这些数据,不但能顺向推断,还能通过贝叶斯定理进行逆向推断。例如,现随机抽取一个账户,已知其头像为假,求其账号也为假的概率:也就是说,在仅知道头像为假的情况下,有大约35.7%的概率此账户也为假。如果觉得阅读上述推导有困难,请复习概率论中的条件概率、贝叶斯定理及全概率公式。如果给出所有节点的条件概率表,则可以在观察值不完备的情况下对任意随机变量进行统计推断。上述方法就是使用了贝叶斯网络。2.3、贝叶斯网络的定义及性质有了上述铺垫,我们就可以正式定义贝叶斯网络了。一个贝叶斯网络定义包括一个有向无环图(DAG)和一个条件概率表集合。DAG中每一个节点表示一个随机变量,可以是可直接观测变量或隐藏变量,而有向边表示随机变量间的条件依赖;条件概率表中的每一个元素对应DAG中唯一的节点,存储此节点对于其所有直接前驱节点的联合条件概率。贝叶斯网络有一条极为重要的性质,就是我们断言每一个节点在其直接前驱节点的值制定后,这个节点条件独立于其所有非直接前驱前辈节点。这个性质很类似Markov过程。其实,贝叶斯网络可以看做是Markov链的非线性扩展。这条特性的重要意义在于明确了贝叶斯网络可以方便计算联合概率分布。一般情况先,多变量非独立联合条件概率分布有如下求取公式:而在贝叶斯网络中,由于存在前述性质,任意随机变量组合的联合条件概率分布被化简成其中Parents表示xi的直接前驱节点的联合,概率值可以从相应条件概率表中查到。贝叶斯网络比朴素贝叶斯更复杂,而想构造和训练出一个好的贝叶斯网络更是异常艰难。但是贝叶斯网络是模拟人的认知思维推理模式,用一组条件概率函数以及有向无环图对不确定性的因果推理关系建模,因此其具有更高的实用价值。2.4、贝叶斯网络的构造及学习构造与训练贝叶斯网络分为以下两步:1、确定随机变量间的拓扑关系,形成DAG。这一步通常需要领域专家完成,而想要建立一个好的拓扑结构,通常需要不断迭代和改进才可以。2、训练贝叶斯网络。这一步也就是要完成条件概率表的构造,如果每个随机变量的值都是可以直接观察的,像我们上面的例子,那么这一步的训练是直观的,方法类似于朴素贝叶斯分类。但是通常贝叶斯网络的中存在隐藏变量节点,那么训练方法就是比较复杂,例如使用梯度下降法。由于这些内容过于晦涩以及牵扯到较深入的数学知识,在此不再赘述,有兴趣的朋友可以查阅相关文献。2.5、贝叶斯网络的应用及示例贝叶斯网络作为一种不确定性的因果推理模型,其应用范围非常广,在医疗诊断、信息检索、电子技术与工业工程等诸多方面发挥重要作用,而与其相关的一些问题也是近来的热点研究课题。例如,Google就在诸多服务中使用了贝叶斯网络。就使用方法来说,贝叶斯网络主要用于概率推理及决策,具体来说,就是在信息不完备的情况下通过可以观察随机变量推断不可观察的随机变量,并且不可观察随机变量可以多于以一个,一般初期将不可观察变量置为随机值,然后进行概率推理。下面举一个例子。还是SNS社区中不真实账号检测的例子,我们的模型中存在四个随机变量:账号真实性R,头像真实性H,日志密度L,好友密度F。其中H,L,F是可以观察到的值,而我们最关系的R是无法直接观察的。这个问题就划归为通过H,L,F的观察值对R进行概率推理。推理过程可以如下表示:1、使用观察值实例化H,L和F,把随机值赋给R。2、计算。其中相应概率值可以查条件概率表。由于上述例子只有一个未知随机变量,所以不用迭代。更一般得,使用贝叶斯网络进行推理的步骤可如下描述:1、对所有可观察随机变量节点用观察值实例化;对不可观察节点实例化为随机值。2、对DAG进行遍历,对每一个不可观察节点y,计算,其中wi表示除y以外的其它所有节点,a为正规化因子,sj表示y的第j个子节点。3、使用第三步计算出的各个y作为未知节点的新值进行实例化,重复第二步,直到结果充分收敛。4、将收敛结果作为推断值。以上只是贝叶斯网络推理的算法之一,另外还有其它算法,这里不再详述。原文出处:张洋的博客(@敲代码的张洋)原文链接:/leoo2sk/archive//bayes-network.html『CPP开发者』分享 C 和 C++ 相关技术文章、工具资源、精选课程、热点资讯,欢迎关注。微信号:{ cppFans } (长按上图,弹出「识别二维码」后可快速关注) 
 文章为作者独立观点,不代表微头条立场
的最新文章
一个例子记住C++对象的生存周期你可能不知道的 C++(二)此为《你可能不知道的 C++》的第一部分,讨论 C & C++,编译单元,及对象。Java的反射机制很酷, 只需知道类的名字就能够加载调用. 这个功能很实用, 想象一下, 用户只需指定类的名称, 就可以动态绑定类型, 而且只需通过字符串指定, 字符串的使用可以使得用户的修改只需修改一个配置文件就行在我的早期印象中,C++这门语言是软件工程发展过程中,出于对面向对象语言级支持不可或缺的情况下,一群曾经信誓旦旦想要用C统治宇宙的极客们妥协出来的一个高性能怪咖。C++ 中的基类与派生类很多年前我进入硅谷人才市场,当时是想找一份高级工程师的职位。《effective STL》中有句忠告,尽量用算法替代手写循环;查找少不了循环遍历,在这里总结下常用的STL查找算法C++11中对类(class)新增的特性C++11带来的优雅语法Facebook的总部位于美国加州的Menlo Park,这里曾经是Sun公司的驻地。在其入口处,一个“zan”的标志牌(“zan”就是一个竖大拇指的姿势)赫然树立。(点击上方公号,可快速关注)来自:快科技链接:/articles/(点击上方公号,可快速关注)译文: 伯乐在线 - 小谢英文:Jonathan链接:http://jonath面向对象编程,面向设计模式编程(亦即设计模式),面向接口编程,面向模板编程(亦即泛型编程),面向函数编程(亦山重水复疑无路经过再次重构后的 create_chain_node 看上去要好了一些,但是依然有两段代码存在每一盒香烟的包装上都会写『吸烟有害健康』。白酒瓶上也写了『过度饮酒,有害健康』。本文的外包装上写的则是『阅读有害健康』,特别是『甩掉强迫症』那一节,它适合我自己阅读,但不一定适合你。(点击上方公号,可快速关注)来自:程序员的那些事严格来说,本文题目应该是我的数据结构和算法学习之路,但这个写傅里叶变换像是一种数学棱镜——你输入一个波形并且将这种波形分解为不同成分——这些音符(正弦曲线)会相互叠加而形成新的重建波形。(点击上方公号,可快速关注)作者: menjitianya网址: http://www.cppblog.co虽然自己敲了4年多代码了,虽然一直交叉的敲着 C 和 c plus plus 两种语言,但是其实自己就是使用一下常用的语法。工作后又没有那么时间来看书,于是研究了一些C语言的细节来学习学习。12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存,看看你能做出几个!数学和编程有一种容易让人误解的联系。许多人认为在开始学习编程之前必须对数学很在行或者数学分数很高。但一个人为了编程的话,需要学习多少数学呢?实际上不需要很多。这篇文章中我会深入探讨编程中所需要的数学知识。你可能已经都知道了。C++代码一直以其运行时的高性能高调面对世人, 但是说起编译速度,却只有低调的份了。可以想象,如果不加以重视,编译速度极有可能会成为开发过程中的一个瓶颈。那么,为什么C++它就编译的这么慢呢?成为优秀的开发人员,可以没有数学技能,但成为卓越的开发人员,不能没有。计算机的存储层次(memory hierarchy)之中,寄存器(register)最快,内存其次,最慢的是硬盘。同样都是晶体管存储设备,为什么寄存器比内存快呢?Cecily 在这篇文章分享她在编程道路上的所感所想,给出很多值得思考的编程箴言以及一些思想误区,比如在你学习编程之前思考一下你的目标、编程不是什么神秘的东西、坚持比方法更重要等,可以让我们在编程路上少走一些弯路,从而有更多的时间学习技术。如果你正在读这篇文章,很有可能你已经是一个编程人员或者想成为一名编程人员。幸运的是,这里正是你要找的地方,在这篇文章中我收集了一些C编程的网址或者教程可以帮助你成为一名好的C语言编程人员。这些网址或教程会帮助你学习C语言知识和编程技巧。(点击上方公众号,可快速关注)来自: solidot网址: http://www.solidot.org/s本文将介绍几种常用的内存池技术的实现,这是我最近学习各大开源的内存池技术遗留下来的笔记,其主要内容包括:STL内存池以及类STL内存池实现,Memcached内存池实现,固定规格内存池实现,Nginx内存池实现。不久前,byvoid面阿里星计划的面试结果截图泄漏,引起无数IT屌丝的敬仰。看看这些牛人,NOI金牌,开源社区名人,三年级开始写Basic…在跪拜之余我们不禁要想,和这些牛人比,作为绝大部分技术屌丝的同学,是否真的与国内IT巨头遥不可及呢?前几天看到这样一篇博客《那些年·我们读过的专业书籍》,里面列了很多大家认为很好的书,加上自己在自学C++的工程中也看了不少书,感觉并不是所有的书都值得花时间去看的,在这么多大家都认为是经典的书中,选出几本真正适合自己的才是王道。最近两年 C++又有很多人出来追捧,并且追捧者充满了各种优越感,似乎不写 C++你就一辈子是低端程序员了,面对这种现象,要不要出来适时的黑一下 C++呢?呵呵呵。从11岁时,我就一直在编程,并且一直都很喜欢技术和编程。这些年来,我积累了一些艰难又容易的经验。作为一名程序员,你或许还没这些经验,但我会把它们献给那些想从中学到更多的朋友。传统上,编写语法分析器有两种方法,一种是自顶向下,一种是自底自上。自顶向下是从起始非终结符开始,不断地对非终结符进行分解,直到匹配输入的终结符;自底向上是不断地将终结符进行合并,直到合并成起始的非终结符。虽然上面写完了词法分析器,但还有一个问题需要考虑,那就是“关键字”,例如 if,while, return 等。它们不能被作为普通的标识符,因为有特殊的含义。词法分析器用于对源码字符串做预处理,以减少语法分析器的复杂程度。词法分析器以源码字符串为输入,输出为标记流(token stream),即一连串的标记,每个标记通常包括: (token, token value) 即标记本身和标记的值。“手把手教你构建 C 语言编译器” 这一系列教程将带你从头编写一个 C 语言的编译器。希望通过这个系列,我们能对编译器的构建有一定的了解,同时,我们也将构建出一个能用的 C 语言编译器,尽管有许多语法并不支持。有个国外团队检测了 200 多个 C/C++ 开源项目,包括了 Php、Qt 和 Linux 内核等知名项目。于是他们每天分享一个错误案例,并给出相应建议。伯乐在线翻译组正在翻译这个系列。今天的案例来自 MySQL 源代码。有个国外团队检测了 200 多个 C/C++ 开源项目,包括了 Php、Qt 和 Linux 内核等知名项目。于是他们每天分享一个错误案例,并给出相应建议。 今天的案例来自 LibreOffice 项目。koz.ross 维护的一个 C 语言资源列表,包括了:构建系统、编译器、数据库、加密、初中高的教程/指南、书籍、库等等。静态代码分析工具可简化编码过程,检测出错误并帮助修复。有个国外团队检测了 200 多个 C/C++ 开源项目,包括了 Php、Qt 和 Linux 内核等知名项目。于是他们每天分享一个错误案例,并给出相应建议。面向对象的语言更接近人的思维方式,而且在很大程度上降低了代码的复杂性,同时提高了代码的可读性和可维护性,传统的 C 代码同样可以设计出比较易读,易维护,复杂度较低的优美代码,本文将通过一个实际的例子来说明这一点。国外有个团队检测了 200 多个C/C++ 开源项目,从中发现了很多错误。于是他们针对这些错误,编写了一系列的文章。伯乐在线翻译组正在翻译这个系列,并取名《每天学点C++知识》。今天开始,主页君为大家推荐。Twitter发展太快,一切转瞬即过,但 Twitter已经长大了。它从一开始一个在Ruby on Rails上苦苦挣扎的小网站变成一个以服务为 核心驱动的漂亮站点,服务停掉都难得一见,很大的一个转变服务端/后台开发中如何生成id是每个开发者都会遇到的问题,在电商、游戏领域尤其突出。如何保证生成id的唯一性、可靠性、高可用性,如何组织id的格式,在不同的应用场景和限制下实现方式也不尽相同。cppFans关注 C 和 C++ 啦热门文章最新文章cppFans关注 C 和 C++ 啦后使用快捷导航没有帐号?
查看: 3519|回复: 3
从贝叶斯方法谈到贝叶斯网络
金牌会员, 积分 1343, 距离下一级还需 1657 积分
论坛徽章:13
本帖最后由 饭别稀 于
17:50 编辑
0 引言& & 事实上,介绍贝叶斯定理、贝叶斯方法、贝叶斯推断的资料、书籍不少,比如《数理统计学简史》,以及《统计决策论及贝叶斯分析 James O.Berger著》等等,然介绍贝叶斯网络的中文资料则非常少,中文书籍总共也没几本,有的多是英文资料,但初学者一上来就扔给他一堆英文论文,因无基础和语言的障碍而读得异常吃力导致无法继续读下去则是非常可惜的(当然,有了一定的基础后,便可阅读更多的英文资料)。& & 11月9日上午,第9次课,邹博讲贝叶斯网络,其帮助大家提炼了贝叶斯网络的几个关键点:贝叶斯网络的定义、3种结构形式、因子图、以及Summary-Product算法等等,知道了贝叶斯网络是啥,怎么做,目标是啥之后,相信看英文论文也更好看懂了。
& & 故本文结合邹博第9次课贝叶斯网络的 及相关参考资料写就,从贝叶斯方法讲起,重点阐述贝叶斯网络,依然可以定义为一篇读书笔记或学习笔记,有任何问题,欢迎随时不吝指出,thanks。
1 贝叶斯方法& & 长久以来,人们对一件事情发生或不发生的概率,只有固定的0和1,即要么发生,要么不发生,从来不会去考虑某件事情发生的概率有多大,不发生的概率又是多大。而且概率虽然未知,但最起码是一个确定的值。比如如果问那时的人们一个问题:“有一个袋子,里面装着若干个白球和黑球,请问从袋子中取得白球的概率是多少?”他们会想都不用想,会立马告诉你,取出白球的概率就是1/2,要么取到白球,要么取不到白球,即θ只能有一个值,而且不论你取了多少次,取得白球的概率θ始终都是1/2,即不随观察结果X 的变化而变化。& & 这种频率派的观点长期统治着人们的观念,直到后来一个名叫Thomas Bayes的人物出现。1.1 贝叶斯方法的提出& & 托马斯·贝叶斯Thomas Bayes()在世时,并不为当时的人们所熟知,很少发表论文或出版著作,与当时学术界的人沟通交流也很少,用现在的话来说,贝叶斯就是活生生一民间学术“屌丝”,可这个“屌丝”最终发表了一篇名为“An essay towards solving a problem in the doctrine of chances”,翻译过来则是:机遇理论中一个问题的解。你可能觉得我要说:这篇论文的发表随机产生轰动效应,从而奠定贝叶斯在学术史上的地位。& && && && &
& & 事实上,上篇论文发表后,在当时并未产生多少影响,在20世纪后,这篇论文才逐渐被人们所重视。对此,与梵高何其类似,画的画生前一文不值,死后价值连城。& & 回到上面的例子:“有一个袋子,里面装着若干个白球和黑球,请问从袋子中取得白球的概率θ是多少?”贝叶斯认为取得白球的概率是个不确定的值,因为其中含有机遇的成分。比如,一个朋友创业,你明明知道创业的结果就两种,即要么成功要么失败,但你依然会忍不住去估计他创业成功的几率有多大?你如果对他为人比较了解,而且有方法、思路清晰、有毅力、且能团结周围的人,你会不由自主的估计他创业成功的几率可能在80%以上。这种不同于最开始的“非黑即白、非0即1”的思考方式,便是贝叶斯式的思考方式。& & 继续深入讲解贝叶斯方法之前,先简单总结下频率派与贝叶斯派各自不同的思考方式:频率派把需要推断的参数θ看做是固定的未知常数,即概率虽然是未知的,但最起码是确定的一个值,同时,样本X 是随机的,所以频率派重点研究样本空间,大部分的概率计算都是针对样本X 的分布;而贝叶斯派的观点则截然相反,他们认为参数是随机变量,而样本X 是固定的,由于样本是固定的,所以他们重点研究的是参数的分布。
& & 相对来说,频率派的观点容易理解,所以下文重点阐述贝叶斯派的观点。& & 贝叶斯派既然把看做是一个随机变量,所以要计算的分布,便得事先知道的无条件分布,即在有样本之前(或观察到X之前),有着怎样的分布呢?& & 比如往台球桌上扔一个球,这个球落会落在何处呢?如果是不偏不倚的把球抛出去,那么此球落在台球桌上的任一位置都有着相同的机会,即球落在台球桌上某一位置的概率服从均匀分布。这种在实验之前定下的属于基本前提性质的分布称为先验分布,或的无条件分布。& & 至此,贝叶斯及贝叶斯派提出了一个思考问题的固定模式:先验分布 + 样本信息
& & 上述思考模式意味着,新观察到的样本信息将修正人们以前对事物的认知。换言之,在得到新的样本信息之前,人们对的认知是先验分布,在得到新的样本信息后,人们对的认知为。& && &&&其中,先验信息一般来源于经验跟历史资料。比如林丹跟某选手对决,解说一般会根据林丹历次比赛的成绩对此次比赛的胜负做个大致的判断。再比如,某工厂每天都要对产品进行质检,以评估产品的不合格率θ,经过一段时间后便会积累大量的历史资料,这些历史资料便是先验知识,有了这些先验知识,便在决定对一个产品是否需要每天质检时便有了依据,如果以往的历史资料显示,某产品的不合格率只有0.01%,便可视为信得过产品或免检产品,只每月抽检一两次,从而省去大量的人力物力。& & 而后验分布一般也认为是在给定样本的情况下的条件分布,而使达到最大的值称为最大后验估计,类似于经典统计学中的极大似然估计。& & 综合起来看,则好比是人类刚开始时对大自然只有少得可怜的先验知识,但随着不断是观察、实验获得更多的样本、结果,使得人们对自然界的规律摸得越来越透彻。所以,贝叶斯方法既符合人们日常生活的思考方式,也符合人们认识自然的规律,经过不断的发展,最终占据统计学领域的半壁江山,与经典统计学分庭抗礼。& & 此外,贝叶斯除了提出上述思考模式之外,还特别提出了举世闻名的贝叶斯定理。1.2 贝叶斯定理& & 在引出贝叶斯定理之前,先学习几个定义:条件概率(又称后验概率)就是事件A在另外一个事件B已经发生条件下的发生概率。条件概率表示为P(A|B),读作“在B条件下A的概率”。
& & & & 比如,在同一个样本空间Ω中的事件或者子集A与B,如果随机从Ω中选出的一个元素属于B,那么这个随机选择的元素还属于A的概率就定义为在B的前提下A的条件概率,所以:P(A|B) = |A∩B|/|B|,接着分子、分母都除以|Ω|得到file:///C:/Users/zhoulei/AppData/Local/Temp/TempPic/PACK%7BQRE%4YI_FSJANQFAZD.tmp
联合概率表示两个事件共同发生的概率。A与B的联合概率表示为或者。边缘概率(又称先验概率)是某个事件发生的概率。边缘概率是这样得到的:在联合概率中,把最终结果中那些不需要的事件通过合并成它们的全概率,而消去它们(对离散随机变量用求和得全概率,对连续随机变量用积分得全概率),这称为边缘化(marginalization),比如A的边缘概率表示为P(A),B的边缘概率表示为P(B)。
& & 接着,考虑一个问题:P(A|B)是在B发生的情况下A发生的可能性。首先,事件B发生之前,我们对事件A的发生有一个基本的概率判断,称为A的先验概率,用P(A)表示;其次,事件B发生之后,我们对事件A的发生概率重新评估,称为A的后验概率,用P(A|B)表示;类似的,事件A发生之前,我们对事件B的发生有一个基本的概率判断,称为B的先验概率,用P(B)表示;同样,事件A发生之后,我们对事件B的发生概率重新评估,称为B的后验概率,用P(B|A)表示。
& & 贝叶斯定理便是基于下述贝叶斯公式:
& & 上述公式的推导其实非常简单,就是从条件概率推出。
& & 根据条件概率的定义,在事件B发生的条件下事件A发生的概率是
& & 同样地,在事件A发生的条件下事件B发生的概率
& & 整理与合并上述两个方程式,便可以得到:file:///C:/Users/zhoulei/AppData/Local/Temp/TempPic/OBU@BFN4$LJJBPWQW9]1%60%60N.tmp
& & 接着,上式两边同除以P(B),若P(B)是非零的,我们便可以得到贝叶斯定理的公式表达式:
& & 所以,贝叶斯公式可以直接根据条件概率的定义直接推出。即因为P(A,B) = P(A)P(B|A) = P(B)P(A|B),所以P(A|B) = P(A)P(B|A)&&/ P(B)。1.3 应用:拼写检查& & 经常在网上搜索东西的朋友知道,当你不小心输入一个不存在的单词时,搜索引擎会提示你是不是要输入某一个正确的单词,比如当你在Google中输入“”时,系统会猜测你的意图:是不是要搜索“July”,如下图所示:
& & 这叫做拼写检查。根据谷歌一员工写的显示,Google的拼写检查基于贝叶斯方法。下面我们就来看看,怎么利用贝叶斯方法,实现&拼写检查&的功能。& & 用户输入一个单词时,可能拼写正确,也可能拼写错误。如果把拼写正确的情况记做c(代表correct),拼写错误的情况记做w(代表wrong),那么&拼写检查&要做的事情就是:在发生w的情况下,试图推断出c。换言之:已知w,然后在若干个备选方案中,找出可能性最大的那个c,也就是求的最大值。
& & 而根据贝叶斯定理,有:
& & 由于对于所有备选的c来说,对应的都是同一个w,所以它们的P(w)是相同的,因此我们只要最大化
& & 即可。其中:P(c)表示某个正确的词的出现&概率&,它可以用&频率&代替。如果我们有一个足够大的文本库,那么这个文本库中每个单词的出现频率,就相当于它的发生概率。某个词的出现频率越高,P(c)就越大。比如在你输入一个错误的词“Julw”时,系统更倾向于去猜测你可能想输入的词是“July”,而不是“Jult”,因为“July”更常见。P(w|c)表示在试图拼写c的情况下,出现拼写错误w的概率。为了简化问题,假定两个单词在字形上越接近,就有越可能拼错,P(w|c)就越大。举例来说,相差一个字母的拼法,就比相差两个字母的拼法,发生概率更高。你想拼写单词July,那么错误拼成Julw(相差一个字母)的可能性,就比拼成Jullw高(相差两个字母)。值得一提的是,一般把这种问题称为“编辑距离”,参见博客中的文章。
& & 所以,我们比较所有拼写相近的词在文本库中的出现频率,再从中挑出出现频率最高的一个,即是用户最想输入的那个词。具体的计算过程及此方法的缺陷请参见。
2 贝叶斯网络2.1 贝叶斯网络的定义& & 贝叶斯网络(Bayesian network),又称信念网络(Belief Network),或有向无环图模型(directed acyclic graphical model),是一种概率图模型,于1985年由Judea Pearl首先提出。它是一种模拟人类推理过程中因果关系的不确定性处理模型,其网络拓朴结构是一个有向无环图(DAG)。 & & 贝叶斯网络的有向无环图中的节点表示随机变量,它们可以是可观察到的变量,或隐变量、未知参数等。认为有因果关系(或非条件独立)的变量或命题则用箭头来连接。若两个节点间以一个单箭头连接在一起,表示其中一个节点是“因(parents)”,另一个是“果(children)”,两节点就会产生一个条件概率值。& & 总而言之,连接两个节点的箭头代表此两个随机变量是具有因果关系,或非条件独立。& & 例如,假设节点E直接影响到节点H,即E→H,则用从E指向H的箭头建立结点E到结点H的有向弧(E,H),权值(即连接强度)用条件概率P(H|E)来表示,如下图所示:
& & 简言之,把某个研究系统中涉及的随机变量,根据是否条件独立绘制在一个有向图中,就形成了贝叶斯网络。其主要用来描述随机变量之间的条件依赖,用圈表示随机变量(random variables),用箭头表示条件依赖(conditional dependencies)。& & 令G = (I,E)表示一个有向无环图(DAG),其中I代表图形中所有的节点的集合,而E代表有向连接线段的集合,且令X = (Xi)i ∈ I为其有向无环图中的某一节点i所代表的随机变量,若节点X的联合概率可以表示成:
& & 则称X为相对于一有向无环图G 的贝叶斯网络,其中,file:///C:/Users/zhoulei/AppData/Local/Temp/TempPic/00R1TR254XBMA)GVYY@]62T.tmp表示节点i之“因”,或称pa(i)是i的parents(父母)。
& & 此外,对于任意的随机变量,其联合概率可由各自的局部条件概率分布相乘而得出:
& & & & 如下图所示,便是一个简单的贝叶斯网络:
& & 因为a导致b,a和b导致c,所以有
2.2 贝叶斯网络的3种结构形式& & 给定如下图所示的一个贝叶斯网络:
& & 从图上可以比较直观的看出:1. x1,x2,…x7的联合分布为
2. x1和x2独立(对应head-to-head);3. x6和x7在x4给定的条件下独立(对应tail-to-tail)。
& & 根据上图,第1点可能很容易理解,但第2、3点中所述的条件独立是啥意思呢?其实第2、3点是贝叶斯网络中3种结构形式中的其中二种。为了说清楚这个问题,需要引入D-Separation(D-分离)这个概念。& & D-Separation是一种用来判断变量是否条件独立的图形化方法。换言之,对于一个DAG(有向无环图)E,D-Separation方法可以快速的判断出两个节点之间是否是条件独立的。2.2.1 形式1:head-to-head& & 贝叶斯网络的第一种结构形式如下图所示:
& & 所以有:P(a,b,c) = P(a)*P(b)*P(c|a,b)成立,化简后可得:
& & 即在c未知的条件下,a、b被阻断(blocked),是独立的,称之为head-to-head条件独立,对应本节中最开始那张图中的“x1、x2独立”。
2.2.2 形式2:tail-to-tail& & 贝叶斯网络的第二种结构形式如下图所示
& & 考虑c未知,跟c已知这两种情况:在c未知的时候,有:P(a,b,c)=P(c)*P(a|c)*P(b|c),此时,没法得出P(a,b) = P(a)P(b),即c未知时,a、b不独立。在c已知的时候,有:P(a,b|c)=P(a,b,c)/P(c),然后将P(a,b,c)=P(c)*P(a|c)*P(b|c)带入式子中,得到:P(a,b|c)=P(a,b,c)/P(c) = P(c)*P(a|c)*P(b|c) / P(c) = P(a|c)*P(b|c),即c已知时,a、b独立。
& & 所以,在c给定的条件下,a,b被阻断(blocked),是独立的,称之为tail-to-tail条件独立,对应本节中最开始那张图中的“x6和x7在x4给定的条件下独立”。
2.2.3 形式3:head-to-tail& & 贝叶斯网络的第三种结构形式如下图所示:
& & 还是分c未知跟c已知这两种情况:c未知时,有:P(a,b,c)=P(a)*P(c|a)*P(b|c),但无法推出P(a,b) = P(a)P(b),即c未知时,a、b不独立。c已知时,有:P(a,b|c)=P(a,b,c)/P(c),且根据P(a,c) = P(a)*P(c|a) = P(c)*P(a|c),可化简得到:
& & 所以,在c给定的条件下,a,b被阻断(blocked),是独立的,称之为head-to-tail条件独立。
& & 插一句:这个head-to-tail其实就是一个链式网络,如下图所示:
& & 根据之前对head-to-tail的讲解,我们已经知道,在xi给定的条件下,xi+1的分布和x1,x2…xi-1条件独立。意味着啥呢?意味着:xi+1的分布状态只和xi有关,和其他变量条件独立。通俗点说,当前状态只跟上一状态有关,跟上上或上上之前的状态无关。这种顺次演变的随机过程,就叫做马尔科夫链(Markov chain)。且有:
& & 接着,将上述结点推广到结点集,则是:对于任意的结点集A,B,C,考察所有通过A中任意结点到B中任意结点的路径,若要求A,B条件独立,则需要所有的路径都被阻断(blocked),即满足下列两个前提之一:
A和B的“head-to-tail型”和“tail-to-tail型”路径都通过C;A和B的“head-to-head型”路径不通过C以及C的子孙;
& & 最后,举例说明上述D-Separation的3种情况(即贝叶斯网络的3种结构形式),则是如下图所示:& & & && &
& & 上图中左边部分是head-to-tail,给定 T 时,A 和 X 独立;右边部分的右上角是tail-to-tail,给定S时,L和B独立;右边部分的右下角是head-to-head,未给定D时,L和B独立。2.3 贝叶斯网络的实例
& & 给定如下图所示的贝叶斯网络:
& & 其中,各个单词、表达式表示的含义如下:smoking表示吸烟,其概率用P(S)表示,lung Cancer表示的肺癌,一个人在吸烟的情况下得肺癌的概率用P(C|S)表示,X-ray表示需要照医学上的X光,肺癌可能会导致需要照X光,吸烟也有可能会导致需要照X光(所以smoking也是X-ray的一个因),所以,因吸烟且得肺癌而需要照X光的概率用P(X|C,S)表示。Bronchitis表示支气管炎,一个人在吸烟的情况下得支气管炎的概率用P(B|S),dyspnoea表示呼吸困难,支气管炎可能会导致呼吸困难,肺癌也有可能会导致呼吸困难(所以lung Cancer也是dyspnoea的一个因),因吸烟且得了支气管炎导致呼吸困难的概率用P(D|C,B)表示。
& & lung Cancer简记为C,Bronchitis简记为B,dyspnoea简记为D,且C = 0表示lung Cancer不发生的概率,C = 1表示lung Cancer发生的概率,B等于0(B不发生)或1(B发生)也类似于C,同样的,D=1表示D发生的概率,D=0表示D不发生的概率,便可得到dyspnoea的一张概率表,如上图的最右下角所示。2.4 因子图& & 回到2.3节中那个实例上,如下图所示:
& & 对于上图,在一个人已经呼吸困难(dyspnoea)的情况下,其抽烟(smoking)的概率是多少呢?即:& &&&咱们来一步步计算推导下:
& & 解释下上述式子推导过程:
第二行:对联合概率关于b,x,c求和(在d=1的条件下),从而消去b,x,c,得到s和d=1的联合概率。第三行:最开始,所有变量都在sigma(d=1,b,x,c)的后面(sigma表示对“求和”的称谓),但由于P(s)和“d=1,b,x,c”都没关系,所以,可以提到式子的最前面。而且P(b|s)和x、c没关系,所以,也可以把它提出来,放到sigma(b)的后面,从而式子的右边剩下sigma(x)和sigma(c)。
& & 此外,图中Variable elimination表示的是变量消除的意思。为了更好的解决此类问题,咱们得引入因子图的概念。2.4.1 因子图的定义& & wikipedia上是这样定义因子图的:将一个具有多变量的全局函数因子分解,得到几个局部函数的乘积,以此为基础得到的一个双向图叫做因子图(Factor Graph)。& & 比如,假定对于函数,有下述式子成立:
& & 其中,其对应的因子图包括:
变量节点 因子(函数)节点边,边通过下列因式分解结果得到:在因子(函数)节点和变量节点之间存在边的充要条件是存在。
& & 正式的定义果然晦涩!我相信你没看懂。通俗来讲,所谓因子图就是对函数进行因子分解得到的一种概率图。一般内含两种节点:变量节点和函数节点。我们知道,一个全局函数通过因式分解能够分解为多个局部函数的乘积,这些局部函数和对应的变量关系就体现在因子图上。& & 举个例子,现在有一个全局函数,其因式分解方程为:
& & 其中fA,fB,fC,fD,fE为各函数,表示变量之间的关系,可以是条件概率也可以是其他关系(如马尔可夫随机场Markov Random Fields中的势函数)。& & 为了方便表示,可以写成:
& & 其对应的因子图为:
& & 且上述因子图等价于:
& & 所以,在因子图中,所有的顶点不是变量节点就是函数节点,边线表示它们之间的函数关系。& & 但搞了半天,虽然知道了什么是因子图,但因子图到底是干嘛的呢?为何要引入因子图,其用途和意义何在?事实上,因子图跟贝叶斯网络和马尔科夫随机场(Markov Random Fields)一样,也是概率图的一种。& & 既然提到了马尔科夫随机场,那顺便说下有向图、无向图,以及条件随机场等相关概念。我们已经知道,有向图模型,又称作贝叶斯网络(Directed Graphical Models, DGM, Bayesian Network)。
但在有些情况下,强制对某些结点之间的边增加方向是不合适的。使用没有方向的无向边,形成了无向图模型(Undirected Graphical Model,UGM), 又被称为马尔科夫随机场或者马尔科夫网络(Markov Random Field,&&MRF or Markov network)。
设X=(X1,X2…Xn)和Y=(Y1,Y2…Ym)都是联合随机变量,若随机变量Y构成一个无向图 G=(V,E)表示的马尔科夫随机场(MRF),则条件概率分布P(Y|X)称为条件随机场(Conditional Random Field, 简称CRF,后续新的博客中可能会阐述CRF)。如下图所示,便是一个线性链条件随机场的无向图模型:
& & 回到本文的主旨上来。在概率图中,求某个变量的边缘分布是常见的问题。这问题有很多求解方法,其中之一就是把贝叶斯网络或马尔科夫随机场转换成因子图,然后用sum-product算法求解。换言之,基于因子图可以用sum-product 算法高效的求各个变量的边缘分布。& & 先通过一些例子分别说明如何把贝叶斯网络(和马尔科夫随机场),以及把马尔科夫链、隐马尔科夫模型转换成因子图后的情形,然后在2.4.2节,咱们再来看如何利用因子图的sum-product算法求边缘概率分布。& & 给定下图所示的贝叶斯网络或马尔科夫随机场:
& & 根据各个变量对应的关系,可得:
& & 其对应的因子图为(以下两种因子图的表示方式皆可):
& & 由上述例子总结出由贝叶斯网络构造因子图的方法:
贝叶斯网络中的一个因子对应因子图中的一个结点贝叶斯网络中的每一个变量在因子图上对应边或者半边结点g和边x相连当且仅当变量x出现在因子g中。
& & 再比如,对于下图所示的由马尔科夫链转换而成的因子图:
& & 而对于如下图所示的由隐马尔科夫模型转换而成的因子图:
2.4.2 Sum-product算法& & 我们已经知道,对于下图所示的因子图:
& & 下面,咱们来考虑一个问题:即如何由联合概率分布求边缘概率分布。& & 首先回顾下联合概率和边缘概率的定义,如下:联合概率表示两个事件共同发生的概率。A与B的联合概率表示为或者。边缘概率(又称先验概率)是某个事件发生的概率。边缘概率是这样得到的:在联合概率中,把最终结果中不需要的那些事件合并成其事件的全概率而消失(对离散随机变量用求和得全概率,对连续随机变量用积分得全概率)。这称为边缘化(marginalization)。A的边缘概率表示为P(A),B的边缘概率表示为P(B)。
& & 事实上,某个随机变量fk的边缘概率可由x1,x2,x3, ..., xn的联合概率求到,具体公式为:
& & 啊哈,啥原理呢?原理很简单,还是它:对x3外的其它变量的概率求和,最终剩下x3的概率!& & 此外,换言之,如果有
& & 上述式子如何进一步化简计算呢?考虑到我们小学所学到的乘法分配率,可知a*b + a*c = a*(b + c),前者2次乘法1次加法,后者1次乘法,1次加法。我们这里的计算是否能借鉴到分配率呢?别急,且听下文慢慢道来。& & 假定现在我们需要计算计算如下式子的结果:
& & 同时,f 能被分解如下:
& & 借鉴分配率,我们可以提取公因子:
& &&&因为变量的边缘概率等于所有与他相连的函数传递过来的消息的积,所以计算得到:
& & 仔细观察上述计算过程,可以发现,其中用到了类似“消息传递”的观点,且总共两个步骤。& & 第一步、对于f 的分解图,根据蓝色虚线框、红色虚线框围住的两个box外面的消息传递:
& & 计算可得:
& & 第二步、根据蓝色虚线框、红色虚线框围住的两个box内部的消息传递:
& & 根据,我们有:
& & 就这样,上述计算过程将一个概率分布写成两个因子的乘积,而这两个因子可以继续分解或者通过已知得到。这种利用消息传递的观念计算概率的方法便是sum-product算法。前面说过,基于因子图可以用sum-product算法可以高效的求各个变量的边缘分布。& & 到底什么是sum-product算法呢?sum-product算法,也叫belief propagation,有两种消息:一种是变量(Variable)到函数(Function)的消息:,如下图所示
& & 此时,变量到函数的消息为。
另外一种是函数(Function)到变量(Variable)的消息:。如下图所示:
& & 此时,函数到变量的消息为:。
& & 以下是sum-product算法的总体框架:
1、给定如下图所示的因子图:
2、sum-product 算法的消息计算规则为:
3、根据sum-product定理,如果因子图中的函数f 没有周期,则有:
& & 值得一提的是:如果因子图是无环的,则一定可以准确的求出任意一个变量的边缘分布,如果是有环的,则无法用sum-product算法准确求出来边缘分布。& & 比如,下图所示的贝叶斯网络:
& & 其转换成因子图后,为:
& & 可以发现,若贝叶斯网络中存在“环”(无向),则因此构造的因子图会得到环。而使用消息传递的思想,这个消息将无限传输下去,不利于概率计算。
& & 解决方法有3个:
1、删除贝叶斯网络中的若干条边,使得它不含有无向环
& & 比如给定下图中左边部分所示的原贝叶斯网络,可以通过去掉C和E之间的边,使得它重新变成有向无环图,从而成为图中右边部分的近似树结构:
& & 具体变换的过程为最大权生成树算法MSWT(详细建立过程请参阅此 第60页),通过此算法,这课树的近似联合概率P'(x)和原贝叶斯网络的联合概率P(x)的相对熵(如果忘了什么叫相对熵,请参阅:)最小。
2、重新构造没有环的贝叶斯网络3、选择loopy belief propagation算法(你可以简单理解为sum-product 算法的递归版本),此算法一般选择环中的某个消息,随机赋个初值,然后用sum-product算法,迭代下去,因为有环,一定会到达刚才赋初值的那个消息,然后更新那个消息,继续迭代,直到没有消息再改变为止。唯一的缺点是不确保收敛,当然,此算法在绝大多数情况下是收敛的。
& & 此外,除了这个sum-product算法,还有一个max-product 算法。但只要弄懂了sum-product,也就弄懂了max-product 算法。因为max-product 算法就在上面sum-product 算法的基础上把求和符号换成求最大值max的符号即可!& & 最后,sum-product 和 max-product 算法也能应用到隐马尔科夫模型hidden Markov models上,后面有机会的话可以介绍。本文完。
新手上路, 积分 34, 距离下一级还需 16 积分
论坛徽章:2
学到了。。。。。。。。
注册会员, 积分 60, 距离下一级还需 140 积分
论坛徽章:0
好棒啊,,,,,,,,,,,,,,,,
新手上路, 积分 12, 距离下一级还需 38 积分
论坛徽章:0
非常详细,谢谢楼主。mark了~~~~

我要回帖

更多关于 贝叶斯网络 概率推理 的文章

 

随机推荐