概率图模型-原理与技术 第二章 基础知识 学习笔记

概率图模型-原理与技术 第二章 基础知识 学习笔记

概率图模型-原理与技术 总目录


    本章主要回顾了概率论与图论的基础知识,是后面学习的基石。

1.概率论

1.1 空间与事件

形式上,假定存在一个可能结果的约定空间来定义事件,空间用 Ω 表示,事件集合用S表示,代表着所有可能的事件。
比如掷色子,可能出现1,2,3,4,5,6。那么空间 Ω 就可以表示成{1,2,3,4,5,6}。
事件集合S中任何一个事件都是 Ω 的子集:
事件1:抛出的结果是1,即α={1} αSΩ
事件2:抛出的结果奇数,即 β={1,3,5} βSΩ
特别的,还有平凡事件 Ω

事件空间满足的三个性质:
1. ΩSS

2.如果 αSβS ,那么 αβS
如上例1,2 αβ={1}S

3.如果 αS ,那么 ΩαS
如上例2, βS ,那么 Ωβ={2,4,6}S ,即事件抛出的结果偶数。

1.2 概率与分布

事件 α 的概率 P(α) 量化了事件 α 发生的可信度,当 P(α)=1 时,可以确定事件 α 中总有一个结果会发生,但如果 P(α)=0 ,就认为 α 中的所有结果都不会发生。

定义在事件空间 (Ω,S) 的概率分布是事件集合S到实数R上的一个映射,且满足:
1.对所有 αSP(α)0
概率为0就已经表示一定不会发生,所以概率为负数没有意义。

2. P(Ω)=1
平凡事件包括了所有可能的结果,其中有且只有一个必然会发生,所以概率为1。

3.如果 α,βS αβ= ,那么 P(αβ)=P(α)+P(β)
一般情况下 P(αβ)=P(α)+P(β)+P(αβ) ,由于 P(αβ)=P()=0 ,所以写成上式。

假设色子是均匀的,即抛出1-6的可能性是相同的,上述性质如下表:

事件描述概率解释
{1} α 1/6包含6种中的1种可能
{3,5} β 1/3包含6种中的2种可能
{1,2,3,4,5,6}Ω1包含所有可能,必然发生其中一种
{} 0不包含任何可能,永远不会发生
{1,3,5} αβ 1/2包含6种中的3种可能

1.3 条件概率与贝叶斯法则

条件概率考虑两个事件的相关性,如果一个事件已经发生了,那么是否会改变另一个事件发生的概率呢?
用一个实例来解释一下,比如黑盒子中有3个球,两个黑球一个白球,采用 的方式摸球。
事件:第一次摸出黑球。
事件 β :第二次摸出黑球。

那么:
P(α)=23
P(β)=2312+1322=23
事件 αβ :第一次摸出黑球且第二次也摸出黑球
P(αβ)=2312=13

下面的问题是,如果已知第一次摸出的是黑球,那么第二次摸出黑球的概率是多少?
即事件 β|α :已知第一次摸出的是黑球,第二次摸出黑球\
依常识老分析,既然已知第一次摸的是黑球,那么可以假设袋子中只有一个黑球和一个白球,那么从袋子中摸出黑球的概率就应该是 12

考虑如下表:

事件第一次第二次概率
10
2 1/3
3 1/3
4 1/3

当已知第一次摸出黑球,对应着上表事件3、4,此时第二次摸出黑球,对应事件4,那么此时的条件概率应该就是 P(β|α)=P(4)P(3)+P(4)=P(αβ)P(α)=12

条件概率也满足概率的三点性质,具体看习题2.4

可以看出,如果一个事件已经发生,是有可能影响另一个事件发生的概率的。

由条件概率公式可以得到
P(αβ)=P(β|α)P(α)
交换事件的位置
P(αβ)=P(α|β)P(β)

由此推出贝叶斯规则
P(α|β)=P(β|α)P(α)P(β)
贝叶斯规则的重点在已知某条件概率 P(β|α) 可以推出它的逆条件概率P(\alpha | \beta)。
这里书上的例子十分清楚,即讲述了计算方法,也解释了逆条件概率可能包涵的意义。

1.4 随机变量

上面讨论概率时都是用的事件,但是用事件描述时十分麻烦,每个事件都需要一个符号。如果用一种泛化的表示,在表示时不再去注重具体值,而是某一种属性,这样会使得描述时更加简洁,这就是随机变量。

考虑上面的例子,用随机变量X表示第一次摸出球的颜色,随机变量Y表示第一次摸出球的颜色。
那么当X=黑球时,代表着第一次摸出了黑球,Y=黑球时,代表着第二次摸出了黑球。
此时用X,Y两个符号就能描述摸两次球的所有可能事件。

1.4.1 随机变量的联合分布

很多情况下,我们对多个随机变量同时的取值有兴趣,这个时候就要用到联合分布。
如上例随机变量X,Y的联合分布

联合分布X=黑球X=白球P(Y)
Y=黑球1/31/32/3
Y=白球1/301/3
P(X)2/31/3

其中我们对每一行求和来计算Y的边缘分布,对每一列求和来计算X的边缘分布。
当给出联合分布时,可以直接查出所有随机变量在任何取值下的概率,但是由于联合分布表太大,一般情况分布表不会以全部属性的联合分布给出。

1.4.2 随机变量的条件分布

和事件的条件概率一样,随机变量也有条件分布,即在某一些随机变量在特定取值时,其他随机变量的概率分布。
条件分布公式 P(X|Y)=P(X,Y)P(Y)

条件分布X=黑球(条件)X=白球(条件)
Y=黑球1/21
Y=白球1/20

这里与事件不同的是,随机变量用P(X,Y)来表示联合分布,而事件用 P(αβ) 来表示两个事件同时发生。

1.5 独立性

如果一个事件(随机变量)的发生对另一个事件(随机变量)发生概率不产生影响,则认为这两个事件(随机变量)相互独立。
对于事件 P(α|β)=P(α) ,事件 α β 独立。
对于随机变量 P(X|Y)=P(X) ,随机变量X与Y独立。

独立是一个很有用的性质,但是现实中很少碰见独立的事件。更普遍的情况是,在给定额外的事件时,两个事件相互独立,即事件(随机变量)的条件独立。

随机变量条件独立的几点性质

这里写图片描述

具体描述见习题2.7

2 图

2.1 有向与无向

图由节点和边组成,每条边连接着两个节点,记作 κ{χ,ε} 。边可能有方向。也可能没方向,如果一个图包含有向的边,那么这个图就是有向图,否则就是无向图。

一个图的例子

这里写图片描述

2.2 子图与团

对任意的 Xχ ε 表示对任意 x,yX 的所有边,那么 κ{X,ε} κ{χ,ε} 在X上的导出子图。

如果X中任意两个节点都有一条边,则称X上的子图为完全子图。集合X称为团;对于节点的任意超集 YX ,如果Y不是团,那么X称为一个极大团。
若团中节点个数为n个,那么边数应该是 C2n

2.3 路径与迹

在考虑边的方向时(仅能沿着有向边方向和无向边移动),如果一个节点X能沿着边到达节点Y,则称X到Y经过的所有节点的顺序为一条路径。
在不考虑边的方向时,如果一个节点X能沿着边到达节点Y,则称X到Y经过的所有节点的顺序为一条迹。
所以路径一定是一条迹,但迹不一定是路径。

如果一条路径的首尾节点是相同的,则说明图中有圈,如果图不包含圈,那么这个图是一个无圈图。
一个包含有向边和无向边的无圈图叫做部分有向无圈图,部分有向无圈图的具体介绍在习题2.23

本章主要介绍了概率图模型的基本概念和常见类型,以及如何利用Python实现这些模型。下面是一些笔记和代码示例。 ## 概率图模型的基本概念 概率图模型是一种用于表示和处理不确定性的图形化模型,它能够将一个复杂的联合概率分布表示为多个简单的条件概率分布的乘积形式,从而简化概率推理和模型学习的过程。概率图模型主要包括两种类型:有向图模型和无向图模型。 有向图模型(Directed Acyclic Graph, DAG)又称为贝叶斯网络(Bayesian Network, BN),它用有向边表示变量之间的因果关系,每个节点表示一个随机变量,给定父节点的条件下,每个节点的取值都可以用一个条件概率分布来描述。有向图模型可以用贝叶斯公式进行概率推理和参数学习。 无向图模型(Undirected Graphical Model, UGM)又称为马尔可夫随机场(Markov Random Field, MRF),它用无向边表示变量之间的相互作用关系,每个节点表示一个随机变量,给定邻居节点的取值,每个节点的取值都可以用一个势函数(Potential Function)来描述。无向图模型可以用和有向图模型类似的方法进行概率推理和参数学习。 ## 概率图模型的Python实现 在Python中,我们可以使用`pgmpy`库来实现概率图模型。该库提供了一个简单而强大的接口来定义和操作概率图模型,支持有向图模型和无向图模型的构建、概率推理、参数学习等功能。 ### 有向图模型 以下是一个简单的有向图模型的示例: ```python from pgmpy.models import BayesianModel model = BayesianModel([('A', 'B'), ('C', 'B'), ('B', 'D')]) ``` 其中,`BayesianModel`是有向图模型的类,`('A', 'B')`表示A节点指向B节点,即B节点是A节点的子节点,依此类推。我们可以使用以下代码查看模型的结构: ```python print(model.edges()) # 输出:[('A', 'B'), ('B', 'D'), ('C', 'B')] ``` 接下来,我们可以为每个节点定义条件概率分布。以下是一个简单的例子: ```python from pgmpy.factors.discrete import TabularCPD cpd_a = TabularCPD(variable='A', variable_card=2, values=[[0.2, 0.8]]) cpd_c = TabularCPD(variable='C', variable_card=2, values=[[0.4, 0.6]]) cpd_b = TabularCPD(variable='B', variable_card=2, values=[[0.1, 0.9, 0.3, 0.7], [0.9, 0.1, 0.7, 0.3]], evidence=['A', 'C'], evidence_card=[2, 2]) cpd_d = TabularCPD(variable='D', variable_card=2, values=[[0.9, 0.1], [0.1, 0.9]], evidence=['B'], evidence_card=[2]) model.add_cpds(cpd_a, cpd_c, cpd_b, cpd_d) ``` 其中,`TabularCPD`是条件概率分布的类,`variable`表示当前节点的变量名,`variable_card`表示当前节点的取值个数,`values`表示条件概率分布的值。对于有父节点的节点,需要指定`evidence`和`evidence_card`参数,表示当前节点的父节点和父节点的取值个数。 接下来,我们可以使用以下代码进行概率推理: ```python from pgmpy.inference import VariableElimination infer = VariableElimination(model) print(infer.query(['D'], evidence={'A': 1})) # 输出:+-----+----------+ # | D | phi(D) | # +=====+==========+ # | D_0 | 0.6000 | # +-----+----------+ # | D_1 | 0.4000 | # +-----+----------+ ``` 其中,`VariableElimination`是概率推理的类,`query`方法用于查询给定变量的概率分布,`evidence`参数用于指定给定变量的取值。 ### 无向图模型 以下是一个简单的无向图模型的示例: ```python from pgmpy.models import MarkovModel model = MarkovModel([('A', 'B'), ('C', 'B'), ('B', 'D')]) ``` 其中,`MarkovModel`是无向图模型的类,与有向图模型类似,`('A', 'B')`表示A节点和B节点之间有相互作用关系。 接下来,我们可以为每个节点定义势函数。以下是一个简单的例子: ```python from pgmpy.factors.discrete import DiscreteFactor phi_a = DiscreteFactor(['A'], [2], [0.2, 0.8]) phi_c = DiscreteFactor(['C'], [2], [0.4, 0.6]) phi_b = DiscreteFactor(['A', 'C', 'B'], [2, 2, 2], [0.1, 0.9, 0.3, 0.7, 0.9, 0.1, 0.7, 0.3]) phi_d = DiscreteFactor(['B', 'D'], [2, 2], [0.9, 0.1, 0.1, 0.9]) model.add_factors(phi_a, phi_c, phi_b, phi_d) ``` 其中,`DiscreteFactor`是势函数的类,与条件概率分布类似,需要指定变量名、变量取值个数和势函数的值。 接下来,我们可以使用以下代码进行概率推理: ```python from pgmpy.inference import BeliefPropagation infer = BeliefPropagation(model) print(infer.query(['D'], evidence={'A': 1})) # 输出:+-----+----------+ # | D | phi(D) | # +=====+==========+ # | D_0 | 0.6000 | # +-----+----------+ # | D_1 | 0.4000 | # +-----+----------+ ``` 其中,`BeliefPropagation`是概率推理的类,与有向图模型类似,`query`方法用于查询给定变量的概率分布,`evidence`参数用于指定给定变量的取值。 ## 总结 本章介绍了概率图模型的基本概念和Python实现,包括有向图模型和无向图模型的构建、条件概率分布和势函数的定义、概率推理等。使用`pgmpy`库可以方便地实现概率图模型,对于概率模型的学习和应用都有很大的帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值