概率图模型之:贝叶斯网络

摘要:
比率P(B|A)/P有时也称为标准相似性。贝叶斯定理可以表示为:后验概率=标准相似度*先验概率假设{Ai}是事件集中的部分集合。对于任何Ai,贝叶斯定理可以用以下公式表示:2.贝叶斯网络贝叶斯网络由有向无环图和条件概率表组成。贝叶斯网络使用有向无环图来表示一组随机变量对它们的条件依赖性。

1、贝叶斯定理

P(AB)=P(A)P(BA)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,贝叶斯定理可用下式表示:
概率图模型之:贝叶斯网络第1张

2、贝叶斯网络

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

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

P(a,b,c)=P(ca,b)P(ba)P(a)

这里写图片描述

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

P(x1,x2,x3,x4,x5,x6,x7)=P(x1)P(x2)P(x3)P(x4x1,x2,x3)P(x5x1,x3)P(x6x4)P(x7x4,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的概率表:

获取结点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.30.050.90.5 │
├─────┼─────┼──────┼──────┼─────┤
│ G_1 │ 0.40.250.080.3 │
├─────┼─────┼──────┼──────┼─────┤
│ G_2 │ 0.30.70.020.2 │
╘═════╧═════╧══════╧══════╧═════╛

获取结点G的基数:

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

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

In[7]: infer.map_query('G')
Out[7]: {'G': 
概率图模型之:贝叶斯网络第5张

转自:http://blog.csdn.net/gnahznib/article/details/70244175

免责声明:文章转载自《概率图模型之:贝叶斯网络》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MSSQL 插入数据时候,如果存在则更新的方法分享SpringMvc @ResponseBody下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

论文笔记:(2021CVPR)PAConv: Position Adaptive Convolution with Dynamic Kernel Assembling on Point Clouds

目录 摘要 1、引言 2、相关工作 将点云映射到常规二维或三维栅格(体素) 基于MLPs的点表示学习 基于点卷积的点表示学习 动态卷积和条件卷积 3、方法 3.1 回顾 3.2 动态内核组装 Weight Bank ScoreNet. Kernel generation 3.3 权重正则化 3.4 与前期工作的关系 4、骨干网体系结...

Separate to Adapt: Open Set Domain Adaptation via Progressive Separation论文笔记

Separate to Adapt: Open Set Domain Adaptation via Progressive Separation论文笔记 Abstract Domain adaptation问题在利用源域的标注数据为未标记的目标域学习准确的分类器方面已经有较大成功,但是Open Set Domain Adaptation问题中的目标域中存在...

贝叶斯方法的m-估计

为什么要有m-估计? 当我们通过在全部事件的基础上观察某事件出现的比例来估计概率时,例如:P=nc/n.,其中nc为该类别中的样本数量,n为总样本数量。若n=5,当P=0.6时,则nc为3。多数情况下该比例是对概率的一个良好的估计。但当nc很小时估计会较差,例如:P=0.08,样本中同样有5个样例,那么对于nc最可能的取值只有0,。这会导致两个问题: 1、...

信用评分卡模型分析(基于Python)--理论部分

信用风险计量体系包括主体评级模型和债项评级两部分。主体评级和债项评级均有一系列评级模型组成,其中主体评级模型可用“四张卡”来表示,分别是A卡、B卡、C卡和F卡;债项评级模型通常按照主体的融资用途,分为企业融资模型、现金流融资模型和项目融资模型等。 我们主要讨论主体评级模型的开发过程。 在互金公司等各种贷款业务机构中,普遍使用信用评分,对客户实行打分制,...

DCOM

DCOM   求助编辑百科名片   DCOM DCOM(分布式组件对象模型,分布式组件对象模式)是一系列微软的概念和程序接口,利用这个接口,客户端程序对象能够请求来自网络中另一台计算机上的服务器程序对象。DCOM基于组件对象模型(COM),COM提供了一套允许同一台计算机上的客户端和服务器之间进行通信的接口(运行在Windows95或者其后的版本...

从网络I/O模型到Netty,先深入了解下I/O多路复用

微信搜索【阿丸笔记】,关注Java/MySQL/中间件各系列原创实战笔记,干货满满。 本文是Netty系列第3篇 上一篇文章我们了解了Unix标准的5种网络I/O模型,知道了它们的核心区别与各自的优缺点。尤其是I/O多路复用模型,在高并发场景下,有着非常好的优势。而Netty也采用了I/O多路复用模型。 那Netty是如何实现I/O多路复用的呢? Nett...