I never considered a difference of opinion in politics, in religion, in philosophy, as cause for withdrawing from a friend. —Thomas Jefferson
本文大纲如下:
本系列将介绍概率图模型,图的基础知识在[[图论(一):图和子图]]进行简单介绍。本文初始是为了引入因果图模型,在几经思考之后,表示、推断、学习、决策是统计、机器学习重要的组成部分,为了更好的引入后续知识、并构建自己的知识体系。决定从概率图开始介绍。
八个变量一共有个状态。我们是否需要表示所有的状态?如果有更多的变量怎么般?图模型的主要好处之一是在表示联合分布时可以节省成本。用图形和条件来模拟变量之间的依赖关系可以大大减少描述联合分布所需的参数数量。
学习: 我们如何得到这些概率?使用最大似然估计法吗?需要多少数据来实现?可以使用其他估计方法吗?怎么在变量之间关系和概率方面纳入专业知识?
推断: 如果不是所有的变量都是可观察的,我们如何计算给定证据的潜在变量条件分布?计算图中的需要对所有个未观察到的变量配置进行求和。这需要大量的计算能力。
当我们引入专业知识后,八个变量之间的关系可以用上图表示。这时候联合分布可以由条件独立性计算:
结合专业知识和结构之后,联合分布表示的成本由 降为,缩减了倍。
非正式地讲,图模型只是一个代表随机变量之间关系的图形。节点是随机变量(特征),边(或没有边)代表随机变量之间的关系或随机变量之间的依赖关系。关系的概念根据图的不同而不同。
对于避免不同人对同一现象的多重表述,严格定义一个图模型的每一个组成部分是至关重要的。首先深入严格定义两个随机变量之间的可能关系。严格定义两个随机变量之间的可能关系。这些随机变量可能有许多类型的的关系:
同样,有许多,其中一些在下面列出和讨论,每一个都有其 充分和不足之处。选择一个衡量标准并不是一项琐碎的任务,因为,虽然人们可以任意选择这样一个衡量标准,用数据画出图表,并从图表中提供令人信服的 '故事'。除非严格选择衡量标准,否则该论证很容易被来自相同数据的反例所推翻。因此,了解每一种措施所带来的影响是至关重要的。
皮尔逊相关系数(表示为ρ)是衡量随机变量之间关联的最著名和最基本的方法之一,其定义如下:
两个独立变量相关系数为0,则两变量是不相关的;但是,反之则不成立。例如,有两个随机变量X、Y是这样的:. 那么,Y依赖于X,它们是不相关的,因为:
从上面的例子中可以看出,皮尔逊相关度只能捕捉到线性依赖。这反过来意味着皮尔逊相关在捕捉独立性方面是非常弱的。
上面介绍的皮尔逊相关系数的局限性使得我们希望有新的衡量方法,可以捕捉到非线性依存关系。衡量两个密度和之间距离的最常见的方法之一是Kullback-Leibler散度,简称KL-散度。
当P和Q相等时,KL散度返回0,即,当和进一步偏离时,KL散度返回一个更大的正值。由于我们同样希望距离为0,当时,我们希望二者距离为0,否则为正,可以利用KL散度来获得所期望的衡量标准,也就是所谓的互信息。
当且仅当.这种方法确实成功地捕捉到了非线性的依赖关系。然而,它带来了计算方面的问题 因为对非高斯、多模态、甚至可能是非参数密度的复杂组合j计算密度时非常困难的。
最近的一个发现是HSIC(Gretton等人,2005),也能捕捉到非线性的依赖关系。它被定义为联合密度和边际分布乘积之间的最大平均差异(MMD)。对于任意两个密度P,Q:
该方法的一个重要属性是,当且仅当。
两个随机变量之间的关联度量可以用来定义一个边际相关/依赖图。这种模型缺点是这种类型的图形模型信息量不大,原因是两个随机变量很少会有非零的关联度。我们几乎总能在一对变量之间找到一些统计学上的关联,要么是由于某些影响两个变量的基本过程,要么有时是由于随机。考虑以下例子: X=孩子的身高,Y=孩子的词汇量,Z=孩子的年龄。如果我们计算这些变量之间的成对关联度,我们期望发现所有这些变量都是非零的。然而,我们从 '常识 '中知道,孩子的身高和词汇量没有直接关系,相反,孩子的年龄是影响这两个值的基本变量。
我们可以在给定另一个变量的情况下,定义新的两个变量之间的相关度量。我们可以把它看作是给定另一个变量Z为条件后,或消除了Z的线性影响后,在两个变量X和Y之间测量的相关性。这被称为局部/条件相关性。
这是Z与X和Z与Y线性回归的残差之间的相关性。类似于皮尔逊的相关性。
现在可以构建一个比边际依赖图更有意义的图模型。如果一对变量在其他变量的情况下具有非显著的部分相关性,我们就把它们连接起来。这个模型的一个可能的问题是,计算每一对变量在所有其他变量上的部分相关是很昂贵的,因为我们需要首先为每个条件变量拟合(线性)回归模型。然而,事实证明,偏相关矩阵有一个与反协方差矩阵相关的简单形式:
条件独立性有助于降低统计和计算的复杂性。条件独立性的经典符号是,X、Y、Z是随机变量。定义:
如果想使用强依赖性度量或局部相关作为工具,提取条件独立性是一个艰难的任务。一个捷径是简单地对感兴趣的随机变量施加高斯假设。详细来说,假设(X, Y, Z)是同高斯的,我们有。
节点对应于随机变量,而边对应于成对(非因果)关系。无向图模型是,即随机变量的概率分布,其参数由图决定。UGM例子:物理学模型、社会网络、蛋白质交互网络、建模围棋、.... 在信息检索等领域,这种模型可以用来描述概念之间的关系和实体之间的关系。
无向图模型表示一个由无向图定义的分布,以及一组与的边相关的势函数(potential functions):
其中Z被称为配分函数(partition function), 也被称为。
给定一个图,确定图模型中存在的所有 'Cliques'。这也被称为马尔科夫随机场、马尔科夫网络,...
将Clique位势限制为正值可能是不方便的。用一个实值 '能量 '函数以无约束的形式表示位势。联合概率有一个很好的加性结构:
是自由能, 在物理上称之为玻尔兹曼分布,统计上成为对数线性模型:
整体能量函数可以表示为:. 我们将利用这点从数据中恢复图的结构。特别是当是稀疏的时候,那么和之间就没有边。
对于,一个完全子图(Clique)是一个子图,这样中的节点是完全相连的。一个极大团是一个完整的子图,使得任何超集都不是一个团。
上图中,最大团是{A,B,D},{B,C,D},而子团是{A,B},{C,D},...所有的边和单节点。使用团的原因: 团是基本单位,它捕捉了所有可能的依赖关系,而且不会被遗漏。如果我们从团内的子图开始构建,将它们相互连接,我们可能会有失去对一些相互依赖关系建模的风险。
团势能是前概率性的权变函数,它提供了恢复或指定随机变量配置的偏差的方法。在有向图形模型中,顶点的联合分布可以被分解为边际和条件分布的乘积。然而,在无向图形模型中,联合分布可以被分解为团势能的乘积。这些团势能不一定是边际分布。它们只代表变量的 '良好性 '或 '兼容性 '的概念。为了说明为了说明这一点,请考虑图中所示的图形。该图表示,联合分布可以表示为,但它也可以用其他形式写成图中所示。
如何使用图来表示一个概率分布?定义I-maps是为了利用条件独立性定义图和分布之间的关系。表示为一个图将使描述的所有条件独立性变得更加容易。将I(P)定义为所有在P中成立的形式的独立性断言的集合(与参数值无关)。图和其独立性断言集合,如果, 是一个I-maps.可以发现只要是 I(P) 的子集,其对应的 G 就是概率分布 P 的 I-map,所以 I-map 可以有很多。只有 I(G) = I(P) 时,对应的 Graph 才可以等价地表示这个概率分布,也叫做 P 的 (Perfect-map)。
什么样的分布可以由无向图来表示变量之间的独立性关系? 无定向图H的全局马尔可夫属性是:
也就是说,在给定集合Z的情况下,这两个集合被集合Z分开, 随机变量集合X和Y是独立的。
一个概率分布P满足无向图H的全局马尔科夫属性,如果对于任何不相交的X、Y和Z,使Y将X和Z分开,在给定Y的情况下,X是独立于Z的:
是一个I-map.
无向图中一个节点的相邻节点的集合被称为马尔科夫毯(表示为)。
与H相关的局部马尔科夫独立性是:
其中B是H中所有节点的集合。这意味着给定(图中的蓝色节点)的马尔科夫毯(图中的红色节点), 是独立于H中的所有其他节点(图中的白色节点).
可靠性(从图到分布):P为一个分布,H是一个马尔可夫结构, 如果P是H上的吉布斯分布,那么保H是P的I-map。
完备性:H为一个马尔可夫网结构, 如果在给定Z时,X与Y在图H上不可分,则在给定Z时,X与Y在某些H上因子分解的分布中存在依赖关系。需要注意:
图和分布之间没有严格的等价关系!
在有向图形模型中,代表随机变量的节点由有向边连接,表示节点之间的因果关系。这种类型的有向GM被称为贝叶斯网络或有向图模型。
Bayesian Networks(贝叶斯网络,BN)是一个有向图模型,其节点代表随机变量,其边缘代表随机变量之间的定向影响。
给定一个有向无环图(DAG),概率分布形式是符合的图的特点,根据 '节点给定其父节点'连乘。
其中是的父节点,为图中节点数量。
给定父节点B,解耦A和C:
给定节点B,解耦A和C:
给定节点C,耦合A和B:
同样使用I-maps来建立图和分布之间的关系。一个分布P满足与图G相关的局部独立性,当且仅当P可表示为与图G相关的一组条件概率分布(Conditional Probability DistributionsCPD)。
设P是X上的一个分布。我们定义*I(P)*为在P中成立的形式的独立性断言的集合。
K是任意一个与一组独立性集合I(K)相关的图。如果, 则K是一个I-map 。
要使G成为P的I-map,就必须使G中任何独立性在P中也必须成立。
贝叶斯网络结构是一个有向无环图(DAG),其节点代表随机变量。让表示G中的父母,表示图中是的非后裔的变量。那么G编码了以下一组局部条件独立性假设:
每个节点在给定其父节点的情况下都独立于其非后裔变量。
如果变量和在道德化(moralized)祖先图中是分离的,那么在给定z的情况下,它们是D分离(D-separated)的(条件独立)。
通过删除感兴趣的随机变量及其祖先以外的所有节点来构建祖先图。然后对祖先图进行道德化处理,去除边上的所有方向,并将原本不相连且有一个共同子节点的节点连接起来。如果有一种方法可以从一个节点到另一个节点,那么这两个节点就不是条件独立的。
如果不能将 '贝叶斯球(Bayes-ball) '从X中的任何节点发送到Z中的任何节点,那么在给定Y的情况下,X与Z之间是DD-separated。
Y 没有观测 ,路径是Acitvate的
Y 没有观测 ,路径是Acitvate的
Y 或者Y的后代被观测 ,路径是Acitvate的
图中的分离属性意味着相关变量的独立属性。在构建分布时,我们可以直接使用因子化法来机械地组装一个分布,即
为了建立下面这个带有连续随机变量的图形的联合分布,我们可以使用条件概率密度函数。下面是一个定义连续随机变量依赖的例子:
对于离散变量,我们看下图的例子:
from pgmpy.models import BayesianModel
from pgmpy.factors.discrete import TabularCPD
# 定义模型结构
model = BayesianModel([('D', 'G'), ('I', 'G'), ('G', 'L'), ('I', 'S')])
# 定义 CPDs.
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]])
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。看CPDs是否求和为1
print(model.check_model())
print(model.get_cpds('G'))
可靠性:如果一个分布P根据G进行因子化,那么(保证)。完备性: 对于任何根据G分解的分布P,如果,那么 (不保证)
联系客服