联合分布 (joint distribution)是多个变量的概率分布。在单个变量上的分布称为 单变量分布 (univariate distribution,或称为一元分布、一维分布),在多个变量上的分布称为 多变量分布 (multivariate distribution,或称为多元分布、多维分布)。如果在两个离散变量 X 和 Y 上具有联合分布,则 P ( X , Y )表示 X = x 和 Y = y 的概率。
根据联合分布,我们可以使用 全概率法则 (law of total probability,或称为全概率公式、全概率定律、总概率法则等),通过计算所有其他变量的概率之和,得出一个变量或一组变量的边缘分布(marginal distribution) [8] :
该属性的使用将贯穿全书。
现实中的决策通常需要对涉及多个变量的联合分布进行推理。有时变量之间存在复杂的关系,且这些关系非常重要。根据变量所取的数值是离散的还是连续的,我们可以使用不同的策略来表示联合分布。
如果变量是离散数据,那么联合分布可以使用表2-1所示的数据来表示。表2-1列出了3个二元变量(binary variable)的所有可能赋值。每个二元变量的取值只能是0或1,结果存在2 3 =8种可能。与其他离散分布一样,表2-1中的概率总和必须为1。因此,尽管表2-1中有8个数据条目,但只有7个数据条目是 独立的 。如果用 θ i 表示表2-1中第 i 行的概率,那么我们只需要用参数 θ 1 ,…, θ 7 表示分布,因为可以根据下式计算出 θ 8 的概率值: θ 8 =1—( θ 1 +…+ θ 7 )。
如果有 n 个二元变量,那么需要多达2 n —1个独立参数来指定联合分布。参数数量的这种指数增长特性使得在内存中对分布进行存储变得非常困难。在某些情况下,我们可以假设变量是 独立的 (independent),这意味着一个变量的实现不会影响另一个变量的概率分布。如果变量 X 和变量 Y 是相互独立的(有时记作 X ⊥ Y ),那么对于所有 x 和 y 满足 P ( x , y )= P ( x ) P ( y )。假设 n 个二元变量 X 1 ,…, X n 相互独立,从而得出 P ( x 1 :n )=∏ i P ( x i )。这种因式分解允许我们仅用 n 个独立参数来表示联合分布。当不能假设变量之间存在独立性时,则需要2 n —1个参数(见表2-2)。虽然独立性可以大大降低表达式的复杂性,但这个假设通常过于苛刻。
表2-1 包括3个二元变量 X 、 Y 和 Z 的联合分布示例
表2-2 如果我们知道表2-1中的各个变量之间是相互独立的,那么可以使用乘积 P ( X ) P ( Y ) P ( Z )来表示 P ( X , Y , Z )的值。对于三个单变量分布中的每一个分布,这种表示只需要一个参数
我们可以使用因子来表示联合分布。一组变量上的 因子 (factor) ϕ 是将这些变量赋值为实数的函数。为了表示概率分布,因子中的实数必须是非负的。具有非负值的因子可以被归一化(normalized),从而表示概率分布。算法2-1提供了离散因子的实现,示例2-3演示了离散因子是如何工作的。
算法2-1 与处理一组离散变量上的因子相关的类型和函数。变量被赋予一个名称(用一个符号表示),取值为1到 m 之间的整数。赋值是一种映射,即从变量名称映射到整数值。因子由因子表定义,因子表将一组不同的值分配给一组变量,它是赋值到实值的映射。此映射由字典表示,其中未包含的任何赋值都被设置为0。这个算法中还包括一些实用函数,用于返回与因子相关的变量名称、选择所赋值的子集、枚举可能的赋值以及归一化因子。如附录G.3.3所述,product用于计算一组集合的笛卡儿乘积,可以从Base.Iterators导入该函数
示例2-3 构造离散因子。利用附录G.5中定义的实用函数,使用命名元组构建因子表 。我们可以以表2-1为例,使用Factor类型编写如下代码。
为了有效地减少具有重复值的联合分布所需的存储空间,我们还可以使用 决策树 (decision tree)。涉及三个离散变量的决策树如示例2-4所示。虽然在这个示例中,参数数量的减少并不显著,但在存在许多变量和重复值的情况下,参数数量的减少可能会变得相当可观。
示例2-4 与表相比,决策树可以更有效地表示联合分布 。假设表2-3表示联合概率分布。我们可以使用右侧的决策树来更简洁地表示表中的值。当变量值为0时,跟随灰色箭头,当变量值为1时,跟随黑色箭头。使用树的表示只需存储如图2-8所示的5个概率,无须存储8个概率。
表2-3 联合概率分布
图2-8 决策树表示联合分布
我们还可以定义多个连续变量的联合分布。一个非常简单的分布是 多变量均匀分布 (multivariate uniform distribution),该分布为支撑集中的每个值分配一个恒定的概率密度。我们可以使用 U ( a , b )表示长方体上的均匀分布,这也是各个区间的笛卡儿乘积,其中第 i 个区间间隔表示为[ a i , b i ]。这个均匀分布类型是一种特殊类型的 多变量乘积分布 (multivariate product distribution),是以单变量分布的乘积来定义的一种分布。在上述情况下,满足公式:
我们可以从多变量均匀分布的加权集合中创建一个混合模型,就像可以使用单变量分布一样。如果存在一个联合分布,包含 n 个变量和 k 个混合分量,那么需要定义 k (2 n +1)—1个独立参数。对于 k 个分量,我们需要定义每个变量的上限、下限以及权重。参数的个数可以减去1,因为权重之和必须等于1。图2-9为一个由5个分量表示的混合模型示例。
图2-9 多变量均匀分布混合的密度函数
还有一种常见的方法是通过独立地对每个变量进行离散化来表示分段恒定密度函数。离散化由每个变量的一组箱边界表示。这些箱边界定义了变量上的网格。然后,我们将恒定的概率密度与每个网格单元相关联。箱边界不必均匀分隔。在某些情况下,可能需要在某些值附近增加分辨率。不同的变量可能具有与变量相关联的不同的箱边界。如果存在 n 个变量,每个变量分成 m 个箱,那么除了定义箱边界的值之外,我们还需要 m n —1个独立参数来定义分布。
在某些情况下,与离散联合分布类似,将连续联合分布表示为决策树可能会更节省内存。内部节点将变量与阈值进行比较,叶节点是密度值。图2-10为图2-7中密度函数所对应的决策树。
另一种实用的分布是多变量高斯分布,其密度函数定义如下:
图2-10 一个决策树的示例,表示区间[—10,10] 2 上 x 1 和 x 2 上定义的分段恒定联合概率密度
其中, x 属于 ℝ n , μ 是 均值向量 (mean vector), ∑ 是 协方差矩阵 (covariance matrix)。此处给出的密度函数要求 ∑ 是正定的(positive definite) 。独立参数的数量为 n +( n +1) n /2,即 μ 的分量数量加上矩阵 ∑ 上三角(upper triangle)的分量数量 [9] 。附录B中包含了不同的多变量高斯密度函数的图。我们还可以定义 多变量高斯混合模型 (multivariate Gaussian mixture model)。图2-11为一个包含三个分量的多变量高斯混合模型的示例。
图2-11 具有三个分量的多变量高斯混合模型。各分量分别以0.1、0.5和0.4的权重混合在一起
如果多变量高斯分布的所有变量都是相互独立的,那么协方差矩阵 ∑ 是对角矩阵,只有 n 个独立的参数。事实上,我们可以将密度函数写成单变量高斯密度的乘积: