概率图形模型(PGM)学习笔记(四)-贝叶斯网络-伯努利贝叶斯-贝叶斯多项式

之前忘记强调重要的差异:链式法则的条件概率和贝叶斯网络的链式法则之间的差异

条件概率链式法则

P\left({D,I,G,S,L} \right) = P\left( D \right)P\left( {I\left| D \right.}\right)P\left( {G\left| {D,I} \right.} \right)P\left( {S\left| {D,I,G} \right.}\right)P\left( {L\left| {D,I,G,S} \right.} \right)" >

贝叶斯网络链式法则,如图1

图1

乍一看非常easy认为贝叶斯网络链式法则不就是大家曾经学的链式法则么,事实上不然,后面详述。

上一讲谈到了概率分布的因式分解

能够看到条件概率的独立性能够直接从概率分布表达式看出来。

我们已经用概率图模型把概率关系用图形化G表示了,独立性能从图上直接看出来吗?

当然。上一讲已经详解过了概率图中概率的流动关系.

当G已知时,S和D之间的概率才干相互影响。

以下定义一个依赖隔离的概念。

依赖隔离(D-separation)

在Z已知的情况下,X与Y之间没有通路。

则称之为X与Y依赖隔离。记作

介绍个定理:“图不通就独立定理”(当然是为了好理解)

这个定理是说。若概率图满足依赖隔离

则有X与Y条件独立

来证明一下,如今用的是贝叶斯网络链式法则。如图2

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWNoZW5nX3NqdHU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >

图2

利用的还是之前那个把求和拆分的Trick。这里要注意一開始求和的脚标是G、I、L

如今分给了3部分L和G部分求和后当然就等于了1,可是I部分则不然,被求和的部分是S,而求和脚标是I,这样就没法继续合并了。

只是我们回忆之前的独立等价条件最后一条是说:

P\left({X,Y,Z} \right) \propto {\phi _1}\left( {X,Z} \right)\phi \left( {Y,Z} \right)" >

这样就搞定了。发现D与S还是独立的。这样就证明了“图不通就独立定理”。

那么不禁要问,图什么情况下不通呢?

先说结论:在已知父节点时,该节点与后代节点以外的节点不通。

姑且叫做“不通原则”

说的好啰嗦,直接看图,如图3

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWNoZW5nX3NqdHU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >

图3

我们以Letter节点作为样例。他的父节点时Grade,他的子孙是Job和Happy,所以他和剩下来的SAT、Intelligence、Difficulty、Coherence不通了。

粗略分析下,这个环上面走不通是由于Grade已知了;以下走不通是由于Job不知道。分析原理上一讲已经详述了。

定义一个Imap

既然图不通就独立,假设这个不通的图G相应的概率分布是P,我们就称G是P的I-map(independencymap)。

假设独立的概率分布P能够依照某个图G分解。那么G就是P的Imap。

反过来,假设G是概率分布P的Imap,那么P能够依照G来进行分解。

因此概率图的就有了2种等价的观点

1.概率图G是用来表示概率分布P的。

2.P是用来表达概率图G所展示的独立关系的。

证明一下概率图和概率分布为啥是一回事

先写出图1中的条件,如图4所看到的,用条件概率的链式法则写出P,由G中连接关系能够化简成为贝叶斯网络的链式法则。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWNoZW5nX3NqdHU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >

图4

尤其注意为什么有

P\left( {L\left| {D,I,G,S}\right.} \right) = P\left( {L\left| G \right.} \right)" >

这里要用到之前说明的“不通原则”。L在已知D、G、I、S的前提下,他的非后代节点(他也没有后代节点)是D、I、S,所以直接去掉。

这就说明了概率独立关系与概率图的连接关系事实上是一回事。

以下介绍朴素贝叶斯模型

这个朴素贝叶斯叫做(Na?ve Bayes)又叫(IdiotBayes…)

主要的朴素贝叶斯模型如图5。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWNoZW5nX3NqdHU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >

图5

全部的X都是条件独立的,即

\left( {{X_i} \bot {X_j}\left| C\right.} \right),\forall X" >

由贝叶斯网络的链式法则easy得到

有2类经常使用的朴素贝叶斯模型

举个样例说明两种贝叶斯模型各自是怎么起作用的。如今有一篇文档,由非常多单词组成。如今有2个类别可供选择各自是“有关財务”和“有关宠物”。如今要把这篇文章归档。

其一:伯努利朴素贝叶斯(Bernoulli Naive Bayes)

伯努利朴素贝叶斯如图6。

图6

这样的方式实质上是“查字典”。它把cat、dog、buy这些当做字典里的词目。

之所以伯努利是由于。这样的方式仅仅管分析文章里面有没有出现词典里的词目,而无论出现了多少次。词典的条目都是仅仅有0-1的二项分布随机变量。

文档属于这两类的概率分别为

每个小乘积项代表了“假设这是一篇財务文档,能出现cat字眼的概率是0.001”这种意义。

为啥这个朴素了,由于它如果了每一个词的条目出现是相互不影响的。

其二:多项式朴素贝叶斯(Multinomial Na?ve Bayes)

这样的方式与伯努利有本质不同,如图7

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWNoZW5nX3NqdHU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >

图7

W这些单元再也不是词典的条目了,而是待分类文章中的真实单词。

假如这篇文章写了1991个词,那么就有1991个W

文档属于这两类的概率依旧分别为

\frac{{P\left( {C = {c^1}\left|{{x_1}, \ldots ,{x_n}} \right.} \right)}}{{P\left( {C = {c^2}\left| {{x_1},\ldots ,{x_n}} \right.} \right)}} = \frac{{P\left( {C = {c^1}}\right)}}{{P\left( {C = {c^2}} \right)}}\prod\limits_{i = 1}^n {\frac{{P\left({{x_i}\left| {C = {c^1}} \right.} \right)}}{{P\left( {{x_i}\left| {C = {c^2}}\right.} \right)}}}" >

每个小乘积项代表了“假设这是一篇財务文档。在文章里随意一个位置出现cat的概率是0.001”这种意思。你看表还是那张表。可是如今全然不一样了。由于如今要求cat+dog+buy+sell这些概率加起来要等于1。而伯努利没这个限制,随意等于多少。这个差别非常重要。

为什么这个贝叶斯也是朴素的呢?由于它假定了在文章全部位置出现cat的概率是满足相同的分布的,实际明显不可能好不好。

就像“敬爱的”必定一般都会出如今开头。谁会在文章写到一半来句这个。。。

总之朴素贝叶斯确实朴素,它仅仅能用于随机变量相关性较弱的情况,但非常多情况实际确实挺弱的。。。所以朴素贝叶斯的效果Surprisingly effective

朴素贝叶斯被广泛使用于各种领域。这里就不展开了。长处还蛮多的。

欢迎參与讨论并关注本博客微博以及知乎个人主页兴许内容继续更新哦~

转载请您尊重作者的劳动。完整保留上述文字以及文章链接,感谢您的支持!

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-10-09 22:59:21

概率图形模型(PGM)学习笔记(四)-贝叶斯网络-伯努利贝叶斯-贝叶斯多项式的相关文章

概率图模型(PGM)学习笔记(四)-贝叶斯网络-伯努利贝叶斯-多项式贝叶斯

指针悬空 指针悬空在我们使用指针的时候很容易被忽视,主要的表现是:指针所指向的内存 释放,指针并没有置为NULL,致使一个不可控制的指针. #include<stdio.h> #include<stdlib.h> int *pointer; void func() { int n=8; pointer=&n; printf("pointer point data is %d\n",*pointer); // pointer=NULL; } int mai

NLTK学习笔记(四):自然语言处理的一些算法研究

自然语言处理中算法设计有两大部分:分而治之 和 转化 思想.一个是将大问题简化为小问题,另一个是将问题抽象化,向向已知转化.前者的例子:归并排序:后者的例子:判断相邻元素是否相同(与排序). 这次总结的自然语言中常用的一些基本算法,算是入个门了. 递归 使用递归速度上会受影响,但是便于理解算法深层嵌套对象.而一些函数式编程语言会将尾递归优化为迭代. 如果要计算n个词有多少种组合方式?按照阶乘定义:n! = n*(n-1)*...*1 def func(wordlist): length = le

【Unity 3D】学习笔记四十三:布料

布料 布料是特殊的组件,它可以变化成任意形状,比如说:随风飘的旗子,窗帘等 创建布料的方法有两种:创建布料对象,在游戏对象中添加布料组件.前者通过hierarchy视图中选择create--cloth即可,创建后,系统会自动将互动布料组件(interactive clothe)与布料渲染组件(cloth renderer)添加值该对象中.后者是在导航菜单中选component--physics--interactive cloth菜单项即可. 交互布料组件是由网格组成的布料,只要用于布料的逻辑判

Caliburn.Micro学习笔记(四)----IHandle&lt;T&gt;实现多语言功能

Caliburn.Micro学习笔记(四)----IHandle<T>实现多语言功能 说一下IHandle<T>实现多语言功能 因为Caliburn.Micro是基于MvvM的UI与codebehind分离, binding可以是双向的所以我们想动态的实现多语言切换很是方便今天我做一个小demo给大家提供一个思路 先看一下效果 点击英文  变成英文状态点chinese就会变成中文                          源码的下载地址在文章的最下边 多语言用的是资源文件建

代码管理工具 --- git的学习笔记四《重新整理git(1)》

1.创建版本库 mkdir  创建目录 cd  地址,到该地址下 pwd 显示当前目录 1.创建目录 $ mkdir startGit $ cd startGit $ pwd 显示当前目录 或者cd到桌面,然后再创建目录 2.初始化版本库 $ git init 初始化仓库 提示信息:Initialized empty Git repository in /Users/xingzai/Desktop/startGit/.git/ 建立一个空的git仓库在/Users/xingzai/Desktop

Linux学习笔记四:Linux的文件搜索命令

1.文件搜索命令  which 语法:which [命令名称] 范例:$which ls  列出ls命令所在目录 [[email protected] ~]$ which ls alias ls='ls --color=auto' /bin/ls 另外一个命令:whereis [名称名称],也可以列出命令所在目录. [[email protected] ~]$ whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/ma

小猪的数据结构学习笔记(四)

小猪的数据结构学习笔记(四) 线性表之静态链表 --转载请注明出处:coder-pig 本章引言: 在二,三中中我们分别学习了顺序表中的线性表与单链表,线性表有点类似于 我们前面所学的数组,而单链表使用的最多的是指针,这里问个简单的问题, 如果是在以前没有指针的话,前辈先人们怎么实现单链表呢?大家思考下! 没有指针,那么用什么来代替呢?前辈先人们非常机智,想出了使用下标+游标的方式 来实现单链表的效果!也就是今天要讲的--静态链表! 当然你也可以直接跳过本章,因为有了单链表就没有必要用静态链表了

Swift学习笔记四:数组和字典

最近一个月都在专心做unity3d的斗地主游戏,从早到晚,最后总算是搞出来了,其中的心酸只有自己知道.最近才有功夫闲下来,还是学习学习之前的老本行--asp.net,现在用.net做项目流行MVC,而不是之前的三层,既然技术在更新,只能不断学习,以适应新的技术潮流! 创建MVC工程 1.打开Visual studio2012,新建MVC4工程 2.选择工程属性,创建MVC工程 3.生成工程的目录 App_Start:启动文件的配置信息,包括很重要的RouteConfig路由注册信息 Conten

Android学习笔记四:添加Source

问题描述 Source not foundThe JAR file D:\.....\sdk\platforms\android-20\android.jar has no source attachment. 问题原因及解决办法 1. 使用SDK Manager下载最新版本的Sources for Android SDK 一般文件下载目录默认在SDK下的sources文件中即 \adt-bundle-windows-x86_64-20130522\sdk\sources\android-20