【有啥问啥】多维高斯分布(Multivariate Gaussian Distribution,MGD)的采样过程是什么样的?

多维高斯分布

多维高斯分布(Multivariate Gaussian Distribution,MGD)的采样过程是什么样的?

在机器学习、统计学和信号处理等领域,多维高斯分布(Multivariate Gaussian Distribution)是一个非常重要的概念。多维高斯分布不仅仅是高斯分布在高维空间的推广,它在处理具有相关性的多变量数据时表现得尤为出色。本文将详细介绍多维高斯分布的采样过程,帮助大家理解如何从多维高斯分布中生成样本。

一、多维高斯分布的定义

多维高斯分布是一个 n n n 维随机向量 x ∈ R n \mathbf{x} \in \mathbb{R}^n xRn 的概率分布,其概率密度函数 (PDF) 定义如下:

p ( x ) = 1 ( 2 π ) n / 2 ∣ Σ ∣ 1 / 2 exp ⁡ ( − 1 2 ( x − μ ) ⊤ Σ − 1 ( x − μ ) ) p(\mathbf{x}) = \frac{1}{(2\pi)^{n/2}|\Sigma|^{1/2}} \exp\left(-\frac{1}{2}(\mathbf{x} - \boldsymbol{\mu})^\top \Sigma^{-1} (\mathbf{x} - \boldsymbol{\mu})\right) p(x)=(2π)n/2∣Σ1/21exp(21(xμ)Σ1(xμ))

其中:

  • μ ∈ R n \boldsymbol{\mu} \in \mathbb{R}^n μRn 是均值向量。
  • Σ ∈ R n × n \Sigma \in \mathbb{R}^{n \times n} ΣRn×n 是协方差矩阵,且为对称正定矩阵。
  • ∣ Σ ∣ |\Sigma| ∣Σ∣ 是协方差矩阵的行列式。
  • Σ − 1 \Sigma^{-1} Σ1 是协方差矩阵的逆矩阵。

多维高斯分布在数据中的作用是非常广泛的,例如在图像处理中的噪声模型、聚类分析中的分布假设等。

二、从多维高斯分布采样的步骤

采样是指从一个给定的概率分布中生成符合该分布的随机样本。对于多维高斯分布,采样过程可以分为以下几个步骤:

1. 生成标准正态分布的样本

首先,从标准正态分布(即均值为0,方差为1的高斯分布)中生成 n n n 维样本 z ∼ N ( 0 , I ) \mathbf{z} \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) zN(0,I)。 这里的 I \mathbf{I} I n × n n \times n n×n 的单位矩阵。

在代码实现中,常用的做法是直接调用随机数生成库。例如,使用 numpy 库的 numpy.random.randn(n) 函数即可生成一个 n n n 维标准正态分布的样本。

2. 进行线性变换

生成的标准正态分布样本 z \mathbf{z} z 需要经过一个线性变换,以使其符合给定的多维高斯分布。这个线性变换由协方差矩阵 Σ \Sigma Σ 的 Cholesky 分解决定。

Cholesky 分解将协方差矩阵 Σ \Sigma Σ 分解为一个下三角矩阵 L \mathbf{L} L,满足 Σ = L L ⊤ \Sigma = \mathbf{L}\mathbf{L}^\top Σ=LL。接着,通过如下线性变换生成目标分布的样本:

x = μ + L z \mathbf{x} = \boldsymbol{\mu} + \mathbf{L}\mathbf{z} x=μ+Lz

其中 L z \mathbf{L}\mathbf{z} Lz 的含义是将原始的标准正态分布样本 z \mathbf{z} z 进行伸缩和平移,以使得样本的协方差结构与目标分布的协方差矩阵 Σ \Sigma Σ 一致。

  • Cholesky分解:Cholesky分解是一种将对称正定矩阵分解为一个下三角矩阵和其转置乘积的方法。在多维高斯分布的采样中,Cholesky分解被用来将协方差矩阵 Σ \Sigma Σ分解为一个下三角矩阵 L \mathbf{L} L,使得 Σ = L L ⊤ \Sigma = \mathbf{L}\mathbf{L}^\top Σ=LL。这样,我们就可以通过 L z \mathbf{L}\mathbf{z} Lz将标准正态分布的样本 z \mathbf{z} z变换为符合目标协方差结构的样本。

3. 实现

以下是使用 Python 代码实现从多维高斯分布中采样的完整过程:

import numpy as np

def sample_multivariate_gaussian(mu, Sigma, num_samples=1):
    # Cholesky分解
    L = np.linalg.cholesky(Sigma)
    # 生成标准正态分布的样本
    z = np.random.randn(len(mu), num_samples)
    # 进行线性变换
    samples = mu[:, np.newaxis] + L @ z
    return samples.T

# 示例
mu = np.array([0, 0])
Sigma = np.array([[1, 0.8], [0.8, 1]])
samples = sample_multivariate_gaussian(mu, Sigma, 1000)

4. 举个栗子

假设我们需要从一个二维高斯分布中采样,该分布的均值向量为 μ = [ 1 , 2 ] \boldsymbol{\mu} = [1, 2] μ=[1,2],协方差矩阵为:

Σ = ( 1 0.5 0.5 2 ) \Sigma = \begin{pmatrix} 1 & 0.5 \\ 0.5 & 2 \end{pmatrix} Σ=(10.50.52)

我们可以按照上面的步骤进行采样:

  1. 生成标准正态分布样本:首先,我们生成一个二维标准正态分布的样本 z ∼ N ( 0 , I ) \mathbf{z} \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) zN(0,I)。假设我们生成的样本为 z = [ 0.3 , − 0.2 ] \mathbf{z} = [0.3, -0.2] z=[0.3,0.2]

  2. 进行线性变换:接下来,我们对 z \mathbf{z} z 进行线性变换。首先对协方差矩阵 Σ \Sigma Σ 进行 Cholesky 分解:

    Σ = ( 1 0.5 0.5 2 ) = L L ⊤ \Sigma = \begin{pmatrix} 1 & 0.5 \\ 0.5 & 2 \end{pmatrix} = \mathbf{L}\mathbf{L}^\top Σ=(10.50.52)=LL

    经过计算,得到下三角矩阵 L \mathbf{L} L 为:

    L = ( 1 0 0.5 1.322 ) \mathbf{L} = \begin{pmatrix} 1 & 0 \\ 0.5 & 1.322 \end{pmatrix} L=(10.501.322)

    然后,计算 L z \mathbf{L}\mathbf{z} Lz

    L z = ( 1 0 0.5 1.322 ) ( 0.3 − 0.2 ) = ( 0.3 − 0.0344 ) \mathbf{L}\mathbf{z} = \begin{pmatrix} 1 & 0 \\ 0.5 & 1.322 \end{pmatrix} \begin{pmatrix} 0.3 \\ -0.2 \end{pmatrix} = \begin{pmatrix} 0.3 \\ -0.0344 \end{pmatrix} Lz=(10.501.322)(0.30.2)=(0.30.0344)

    最后,加上均值向量 μ \boldsymbol{\mu} μ,得到最终样本 x \mathbf{x} x

    x = μ + L z = ( 1 2 ) + ( 0.3 − 0.0344 ) = ( 1.3 1.9656 ) \mathbf{x} = \boldsymbol{\mu} + \mathbf{L}\mathbf{z} = \begin{pmatrix} 1 \\ 2 \end{pmatrix} + \begin{pmatrix} 0.3 \\ -0.0344 \end{pmatrix} = \begin{pmatrix} 1.3 \\ 1.9656 \end{pmatrix} x=μ+Lz=(12)+(0.30.0344)=(1.31.9656)

    因此,最终的采样结果为 x = [ 1.3 , 1.9656 ] \mathbf{x} = [1.3, 1.9656] x=[1.3,1.9656]

通过这个具体的例子,我们可以更直观地理解从多维高斯分布中采样的整个过程。

三、直观理解

从几何角度来看,标准正态分布 z \mathbf{z} z 是单位圆内的均匀分布。而线性变换 L z \mathbf{L}\mathbf{z} Lz 将这个单位圆拉伸、旋转为具有目标协方差结构的椭圆,从而生成符合多维高斯分布的样本。

这个过程的核心在于如何使用 Cholesky 分解对标准正态分布样本进行适当的变换,以得到具有指定均值和协方差的样本。这也解释了为什么多维高斯分布能够很好地描述具有相关性的数据:通过协方差矩阵,我们可以精确控制数据在不同维度上的相关性。

四、应用场景

多维高斯分布的采样在许多领域中都有广泛的应用。例如:

  1. 贝叶斯推断:在贝叶斯推断中,多维高斯分布通常用于描述后验分布。通过采样,可以近似后验分布的各种统计量。

  2. 卡尔曼滤波:卡尔曼滤波算法中,状态和观测误差通常假设为多维高斯分布,通过采样来预测和更新状态。

  3. 高斯混合模型 (GMM):GMM 是一种常见的聚类模型,其中每个聚类中心用一个多维高斯分布表示,通过采样可以生成仿真的数据点来评估模型性能。

五、总结

从多维高斯分布采样是一个非常重要的操作,其核心思想是通过线性变换将标准正态分布的样本映射到具有指定均值和协方差的目标分布上。这个过程不仅在理论上有着深厚的数学基础,在实际应用中也具有广泛的用途。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有啥问啥

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值