1、贝叶斯定理

P(A∣B)=P(A)P(B∣A)P(B)

P(A \mid B) = \frac{P(A)P(B \mid A)}{P(B)}

P(A|B)是已知B发生后A的条件概率,也由于得自B的取值而被称作A的后验概率。
P(B|A)是已知A发生后B的条件概率,也由于得自A的取值而被称作B的后验概率。
P(A)是A的先验概率或边缘概率。之所以称为”先验”是因为它不考虑任何B方面的因素。
P(B)是B的先验概率或边缘概率。
贝叶斯定理可表述为:后验概率 = (相似度 * 先验概率) / 标准化常量
也就是说,后验概率与先验概率和相似度的乘积成正比。
比例P(B|A)/P(B)也有时被称作标准相似度,贝叶斯定理可表述为:后验概率 = 标准相似度 * 先验概率
假设{Ai}是事件集合里的部分集合,对于任意的Ai,贝叶斯定理可用下式表示:

2、贝叶斯网络

贝叶斯网络,由一个有向无环图(DAG)和条件概率表(CPT)组成。
贝叶斯网络通过一个有向无环图来表示一组随机变量跟它们的条件依赖关系。它通过条件概率分布来参数化。每一个结点都通过P(node|Pa(node))来参数化,Pa(node)表示网络中的父节点。

如图是一个简单的贝叶斯网络,其对应的全概率公式为:

P(a,b,c)=P(c∣a,b)P(b∣a)P(a)

P(a, b, c) = P(c∣a, b)P(b∣a)P(a)

较复杂的贝叶斯网络,其对应的全概率公式为:

P(x1,x2,x3,x4,x5,x6,x7)=P(x1)P(x2)P(x3)P(x4∣x1,x2,x3)P(x5∣x1,x3)P(x6∣x4)P(x7∣x4,x5)

P(x1, x2, x3, x4, x5, x6, x7)=P(x1)P(x2)P(x3)P(x4∣x1, x2, x3)P(x5∣x1, x3)P(x6∣x4)P(x7∣x4, x5)

3、贝叶斯网络Student模型

一个学生拥有成绩、课程难度、智力、SAT得分、推荐信等变量。通过一张有向无环图可以把这些变量的关系表示出来,可以想象成绩由课程难度和智力决定,SAT成绩由智力决定,而推荐信由成绩决定。该模型对应的概率图如下:

4、通过概率图python类库pgmpy构建Student模型

代码如下:

from pgmpy.models import BayesianModel
from pgmpy.factors.discrete import TabularCPD# 通过边来定义贝叶斯模型
model = BayesianModel([('D', 'G'), ('I', 'G'), ('G', 'L'), ('I', 'S')])# 定义条件概率分布
cpd_d = TabularCPD(variable='D', variable_card=2, values=[[0.6, 0.4]])
cpd_i = TabularCPD(variable='I', variable_card=2, values=[[0.7, 0.3]])# variable:变量
# variable_card:基数
# values:变量值
# evidence:
cpd_g = TabularCPD(variable='G', variable_card=3, values=[[0.3, 0.05, 0.9,  0.5],[0.4, 0.25, 0.08, 0.3],[0.3, 0.7,  0.02, 0.2]],evidence=['I', 'D'],evidence_card=[2, 2])cpd_l = TabularCPD(variable='L', variable_card=2, values=[[0.1, 0.4, 0.99],[0.9, 0.6, 0.01]],evidence=['G'],evidence_card=[3])cpd_s = TabularCPD(variable='S', variable_card=2,values=[[0.95, 0.2],[0.05, 0.8]],evidence=['I'],evidence_card=[2])# 将有向无环图与条件概率分布表关联
model.add_cpds(cpd_d, cpd_i, cpd_g, cpd_l, cpd_s)# 验证模型:检查网络结构和CPD,并验证CPD是否正确定义和总和为1
model.check_model()

获取上述代码构建的概率图模型:

In[1]:model.get_cpds()
Out[1]:
[<TabularCPD representing P(D:2) at 0x10286e198>,<TabularCPD representing P(I:2) at 0x10286e160>,<TabularCPD representing P(G:3 | I:2, D:2) at 0x100d69710>,<TabularCPD representing P(L:2 | G:3) at 0x10286e1d0>,<TabularCPD representing P(S:2 | I:2) at 0x1093f6358>]

获取结点G的概率表:

In[2]:print(model.get_cpds('G'))
╒═════╤═════╤══════╤══════╤═════╕
│ I   │ I_0 │ I_0  │ I_1  │ I_1 │
├─────┼─────┼──────┼──────┼─────┤
│ D   │ D_0 │ D_1  │ D_0  │ D_1 │
├─────┼─────┼──────┼──────┼─────┤
│ G_0 │ 0.3 │ 0.05 │ 0.9  │ 0.5 │
├─────┼─────┼──────┼──────┼─────┤
│ G_1 │ 0.4 │ 0.25 │ 0.08 │ 0.3 │
├─────┼─────┼──────┼──────┼─────┤
│ G_2 │ 0.3 │ 0.7  │ 0.02 │ 0.2 │
╘═════╧═════╧══════╧══════╧═════╛

获取结点G的基数:

In[3]: model.get_cardinality('G')
Out[3]: 3

获取整个贝叶斯网络的局部依赖:

In[4]: model.local_independencies(['D', 'I', 'S', 'G', 'L'])
Out[4]:
(D _|_ I, S)
(I _|_ D)
(S _|_ D, L, G | I)
(G _|_ S | I, D)
(L _|_ I, S, D | G)

通过贝叶斯网络计算联合分布

条件概率公式如下:

P(A,B)=P(A|B)∗P(B)

P(A, B) = P(A | B) * P(B)

Student模型中,全概率公式的表示:

P(D,I,G,L,S)=P(L|S,G,D,I)∗P(S|G,D,I)∗P(G|D,I)∗P(D|I)∗P(I)

P(D, I, G, L, S) = P(L| S, G, D, I) * P(S | G, D, I) * P(G | D, I) * P(D | I) * P(I)

通过本地依赖条件,可得:

P(D,I,G,L,S)=P(L|G)∗P(S|I)∗P(G|D,I)∗P(D)∗P(I)

P(D, I, G, L, S) = P(L|G) * P(S|I) * P(G| D, I) * P(D) * P(I)

由上面等式可得,联合分布产生于图中所有的CPD,因此编码图中的联合分布有助于减少我们所要存储的参数。

推导 Bayiesian Model

因此,我们可能想知道一个聪明的学生在艰难的课程中可能的成绩,因为他在SAT中打得很好。 因此,为了从联合分配计算这些值,我们必须减少给定的变量,即I=1 I = 1 ,D=1 D = 1 ,S=1 S = 1 ,然后将L L 的其他变量边际化 得到

P(G|I=1,D=1,S=1)

P(G | I = 1,D = 1,S = 1)

在知道一个聪明的学生、他的一门比较难的课程及其SAT成绩较高的情况。为了从联合分布计算这些值,必须减少给定的变量I=1 I = 1 ,D=1 D = 1 ,S=1 S = 1 ,然后将L L 的其他变量边缘化得到

P(G|I=1,D=1,S=1)

P(G | I=1, D=1, S=1)

变量消除

P(D,I,G,L,S)=P(L|G)∗P(S|I)∗P(G|D,I)∗P(D)∗P(I)

P(D, I, G, L, S) = P(L|G) * P(S|I) * P(G|D, I) * P(D) * P(I)

如果我们只想计算G的概率,需要边缘化其他所给的参数

P(G)=∑D,I,L,SP(D,I,G,L,S) P(G) = \sum_{D, I, L, S} P(D, I, G, L, S)
P(G)=∑D,I,L,SP(L|G)∗P(S|I)∗P(G|D,I)∗P(D)∗P(I) P(G) = \sum_{D, I, L, S} P(L|G) * P(S|I) * P(G|D, I) * P(D) * P(I)
P(G)=∑D∑I∑L∑SP(L|G)∗P(S|I)∗P(G|D,I)∗P(D)∗P(I) P(G) = \sum_D \sum_I \sum_L \sum_S P(L|G) * P(S|I) * P(G|D, I) * P(D) * P(I)

由于并非所有的条件分布都取决于所有的变量,我们可以推出内部的求和:

P(G)=∑D∑I∑L∑SP(L|G)∗P(S|I)∗P(G|D,I)∗P(D)∗P(I) P(G) = \sum_D \sum_I \sum_L \sum_S P(L|G) * P(S|I) * P(G|D, I) * P(D) * P(I)
P(G)=∑DP(D)∑IP(G|D,I)∗P(I)∑SP(S|I)∑LP(L|G) P(G) = \sum_D P(D) \sum_I P(G|D, I) * P(I) \sum_S P(S|I) \sum_L P(L|G)

In[5]:from pgmpy.inference import VariableElimination
infer = VariableElimination(model)
print(infer.query(['G']) ['G'])
╒═════╤══════════╕
│ G   │   phi(G) │
╞═════╪══════════╡
│ G_0 │   0.3620 │
├─────┼──────────┤
│ G_1 │   0.2884 │
├─────┼──────────┤
│ G_2 │   0.3496 │
╘═════╧══════════╛

计算P(G|D=0,I=1) P(G | D=0, I=1) 的条件分布

P(G|D=0,I=1)=∑L∑SP(L|G)∗P(S|I=1)∗P(G|D=0,I=1)∗P(D=0)∗P(I=1) P(G | D=0, I=1) = \sum_L \sum_S P(L|G) * P(S| I=1) * P(G| D=0, I=1) * P(D=0) * P(I=1)
P(G|D=0,I=1)=P(D=0)∗P(I=1)∗P(G|D=0,I=1)∗∑LP(L|G)∗∑SP(S|I=1) P(G | D=0, I=1) = P(D=0) * P(I=1) * P(G | D=0, I=1) * \sum_L P(L | G) * \sum_S P(S | I=1)

在pgmpy中我们只需要省略额外参数即可计算出条件分布概率

In[6]: print(infer.query(['G'], evidence={'D': 0, 'I': 1}) ['G'])
╒═════╤══════════╕
│ G   │   phi(G) │
╞═════╪══════════╡
│ G_0 │   0.9000 │
├─────┼──────────┤
│ G_1 │   0.0800 │
├─────┼──────────┤
│ G_2 │   0.0200 │
╘═════╧══════════╛

新数据节点值的预测跟计算条件概率非常相似,我们需要查询预测变量的其他全部特征。困难在于通过分布概率去代替更多可能的变量状态。

In[7]: infer.map_query('G')
Out[7]: {'G': 2}

概率图模型之:贝叶斯网络相关推荐

  1. 西瓜书+实战+吴恩达机器学习(二一)概率图模型之贝叶斯网络

    文章目录 0. 前言 1. 贝叶斯网络结构 2. 近似推断 2.1. 吉布斯采样 3. 隐马尔可夫模型HMM 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~ 0. 前言 概率 ...

  2. PGM:有向图模型:贝叶斯网络

    http://blog.csdn.net/pipisorry/article/details/52489270 为什么用贝叶斯网络 联合分布的显式表示 Note: n个变量的联合分布,每个x对应两个值 ...

  3. 图网络算法——概率图介绍与贝叶斯网络

    图网络算法--概率图综述 1 概率论回顾 在介绍概率图之前,我们先来回顾一下概率论中的相关的知识. 样本空间(Ω): 样本空间描述的是一个随机试验中所有可能输出的集合.比如我们随机抛了一千次硬币,那么 ...

  4. 机器学习之概率图模型(贝叶斯概率,隐马尔科夫模型)

    一.贝叶斯公式 在学习概率图模型之前先要了解贝叶斯公式: 由公式(1),(2)可得: 这便是贝叶斯公式,其中条件概率P(A/B)称为后验概率,概率P(A),P(B)称为先验概率,条件概率P(B/A), ...

  5. 最全总结图论在识别人脑网络连通性模式中的应用——相关与相关性,主成分分析,聚类分析,互信息,格兰杰因果分析,动态因果模型,贝叶斯网络,转移熵

    图论在识别人脑网络连通性模式中的应用 具体研究问题 理论背景: 使用fMRI的连接模式 功能连接 基于模型的方法 相关和相干性 统计参数映射(SPM) 探索性的方法 成分分析(Decompositio ...

  6. 机器学习笔记之概率图模型(四)基于贝叶斯网络的模型概述

    机器学习笔记之概率图模型--基于贝叶斯网络的模型概述 引言 基于贝叶斯网络的模型 场景构建 朴素贝叶斯分类器 混合模型 基于时间变化的模型 特征是连续型随机变量的贝叶斯网络 动态概率图模型 总结 引言 ...

  7. 机器学习算法(二十七):贝叶斯网络

    目录 1. 对概率图模型的理解 2. 贝叶斯方法 2.1 频率派观点 2.2 贝叶斯学派 2.3 贝叶斯定理 2.4 应用:拼写检查 3 贝叶斯网络 3.1 贝叶斯网络的定义 3.2 贝叶斯网络的3种 ...

  8. 贝叶斯网络python代码_贝叶斯网络,看完这篇我终于理解了(附代码)!

    1. 对概率图模型的理解 概率图模型是用图来表示变量概率依赖关系的理论,结合概率论与图论的知识,利用图来表示与模型有关的变量的联合概率分布.由图灵奖获得者Pearl开发出来. 如果用一个词来形容概率图 ...

  9. 独家 | 一文读懂贝叶斯网络

    作者:Devin Soni 翻译:车前子 校对:孙韬淳 本文约1400字,建议阅读8分钟. 本文从概率论出发,为你阐述贝叶斯网络. 贝叶斯网络是一种利用贝叶斯推断进行概率计算的概率图模型.贝叶斯网络的 ...

  10. 推荐 :一文读懂贝叶斯网络

    作者:Devin Soni  翻译:车前子   校对:孙韬淳 本文约1400字,建议阅读8分钟. 本文从概率论出发,为你阐述贝叶斯网络. 贝叶斯网络是一种利用贝叶斯推断进行概率计算的概率图模型.贝叶斯 ...

最新文章

  1. eclipse配置maven插件
  2. 【网上收藏】取得网卡mac
  3. MSP430F149的ADC12应用
  4. Silverlight与WCF之间的通信(5)silverlight应用和wcf服务的发布方法
  5. jqGrid 常用方法
  6. oracle每季度补丁,Oracle 2020 年第四季度补丁发布
  7. [INS-30131] 执行安装程序验证所需的初始设置失败。
  8. Jquery改变窗体大小
  9. raft算法mysql主从复制_mysql主从复制原理
  10. 在github网页版里新建文件夹,放置很多子文件:添加斜杠自动生成文件夹
  11. tensorrt安装_[深度学习] TensorRT安装
  12. html布局四个正方形,分享一个css小技巧,实现给正方形的四个角设置小方块的方法...
  13. leetcode:Happy Number
  14. 01. Django基础:Django介绍
  15. 数据库基础知识(学习笔记)
  16. C语言获取本机IP地址
  17. 物理学上四大神兽之拉普拉斯妖是指什么
  18. pytorch张量相乘matmul函数
  19. 重要性采样(Importance Sampling)详细学习笔记
  20. iOS开发者问题答疑——买号、关联、刷评论

热门文章

  1. 宋宝华:当Linux内核遭遇鲨鱼—kernelshark
  2. dos命令如何查看计算机信息,电脑DOS命令查看进程详细信息方法图解
  3. Navicat注册机报错No all pattern found! file already patched
  4. 【Python精华】100个Python练手小程序
  5. 少儿编程scratch(源码)
  6. 云课堂让职业院校软件开发教学更简单
  7. 压测工具ab的安装(mac环境)
  8. Spring Boot pom文件详解
  9. RDPWrap,win10家庭版最新配置文件支持termsrv10.0.18362.836
  10. 小米笔记本重装系统BOOT启动菜单识别不了硬盘无法启动进入系统