多元高斯分布概率密度函数(PDF)示例
多元高斯分布(Multivariate Gaussian Distribution)适用于 高维数据,用于建模数据的联合分布。其概率密度函数(PDF)如下:
p ( x ∣ μ , Σ ) = 1 ( 2 π ) D / 2 ∣ Σ ∣ 1 / 2 exp ( − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ) p(x \mid \mu, \Sigma) = \frac{1}{(2\pi)^{D/2} |\Sigma|^{1/2}} \exp\left( -\frac{1}{2} (x - \mu)^T \Sigma^{-1} (x - \mu) \right) p(x∣μ,Σ)=(2π)D/2∣Σ∣1/21exp(−21(x−μ)TΣ−1(x−μ))
其中:
- x x x 为 D D D 维随机向量。
- μ \mu μ 为均值向量( D × 1 D \times 1 D×1)。
- Σ \Sigma Σ 为协方差矩阵( D × D D \times D D×D)。
- ∣ Σ ∣ |\Sigma| ∣Σ∣ 表示协方差矩阵的行列式(用于归一化)。
- Σ − 1 \Sigma^{-1} Σ−1 为协方差矩阵的逆矩阵(用于衡量偏离均值的程度)。
示例:二维高斯分布
假设我们有一个二维( D = 2 D = 2 D=2)高斯分布,其均值和协方差矩阵如下:
μ = [ 1 2 ] , Σ = [ 2 0.5 0.5 1 ] \mu = \begin{bmatrix} 1 \\ 2 \end{bmatrix}, \quad \Sigma = \begin{bmatrix} 2 & 0.5 \\ 0.5 & 1 \end{bmatrix} μ=[12],Σ=[20.50.51]
现在计算一个样本点 x = [ 2 , 3 ] T x = [2, 3]^T x=[2,3]T 的概率密度。
-
计算偏移向量:
x − μ = [ 2 3 ] − [ 1 2 ] = [ 1 1 ] x - \mu = \begin{bmatrix} 2 \\ 3 \end{bmatrix} - \begin{bmatrix} 1 \\ 2 \end{bmatrix} = \begin{bmatrix} 1 \\ 1 \end{bmatrix} x−μ=[23]−[12]=[11] -
计算协方差矩阵的逆:
Σ − 1 = [ 2 0.5 0.5 1 ] − 1 = [ 0.545 − 0.273 − 0.273 1.091 ] \Sigma^{-1} = \begin{bmatrix} 2 & 0.5 \\ 0.5 & 1 \end{bmatrix}^{-1} = \begin{bmatrix} 0.545 & -0.273 \\ -0.273 & 1.091 \end{bmatrix} Σ−1=[20.50.51]−1=[0.545−0.273−0.2731.091] -
计算二次型(Mahalanobis 距离):
( x − μ ) T Σ − 1 ( x − μ ) = [ 1 1 ] [ 0.545 − 0.273 − 0.273 1.091 ] [ 1 1 ] (x - \mu)^T \Sigma^{-1} (x - \mu) = \begin{bmatrix} 1 & 1 \end{bmatrix} \begin{bmatrix} 0.545 & -0.273 \\ -0.273 & 1.091 \end{bmatrix} \begin{bmatrix} 1 \\ 1 \end{bmatrix} (x−μ)TΣ−1(x−μ)=[11][0.545−0.273−0.2731.091][11]计算:
[ 1 1 ] [ 0.272 0.818 ] = 1.09 \begin{bmatrix} 1 & 1 \end{bmatrix} \begin{bmatrix} 0.272 \\ 0.818 \end{bmatrix} = 1.09 [11][0.2720.818]=1.09 -
计算 PDF:
- ∣ Σ ∣ = 2 × 1 − ( 0.5 × 0.5 ) = 1.75 |\Sigma| = 2 \times 1 - (0.5 \times 0.5) = 1.75 ∣Σ∣=2×1−(0.5×0.5)=1.75
- 归一化项:
1 ( 2 π ) 2 / 2 ∣ Σ ∣ 1 / 2 = 1 2 π 1.75 \frac{1}{(2\pi)^{2/2} |\Sigma|^{1/2}} = \frac{1}{2\pi \sqrt{1.75}} (2π)2/2∣Σ∣1/21=2π1.751 - 指数项:
exp ( − 1 2 × 1.09 ) = e − 0.545 \exp\left(-\frac{1}{2} \times 1.09 \right) = e^{-0.545} exp(−21×1.09)=e−0.545 - 计算最终值(数值计算部分可用 Python 验证)。
参数估计(MLE)示例
1. 估计均值向量
给定 N N N 个样本:
x 1 , x 2 , . . . , x N x_1, x_2, ..., x_N x1,x2,...,xN
均值向量的极大似然估计(MLE)为:
μ
^
=
1
N
∑
n
=
1
N
x
n
\hat{\mu} = \frac{1}{N} \sum_{n=1}^{N} x_n
μ^=N1n=1∑Nxn
示例
假设我们有 3 维数据的 5 个样本:
x 1 = [ 2 3 5 ] , x 2 = [ 3 4 6 ] , x 3 = [ 4 2 7 ] , x 4 = [ 5 5 5 ] , x 5 = [ 1 2 4 ] x_1 = \begin{bmatrix} 2 \\ 3 \\ 5 \end{bmatrix}, x_2 = \begin{bmatrix} 3 \\ 4 \\ 6 \end{bmatrix}, x_3 = \begin{bmatrix} 4 \\ 2 \\ 7 \end{bmatrix}, x_4 = \begin{bmatrix} 5 \\ 5 \\ 5 \end{bmatrix}, x_5 = \begin{bmatrix} 1 \\ 2 \\ 4 \end{bmatrix} x1= 235 ,x2= 346 ,x3= 427 ,x4= 555 ,x5= 124
计算均值向量:
μ
^
=
1
5
(
x
1
+
x
2
+
x
3
+
x
4
+
x
5
)
\hat{\mu} = \frac{1}{5} \left( x_1 + x_2 + x_3 + x_4 + x_5 \right)
μ^=51(x1+x2+x3+x4+x5)
= 1 5 [ ( 2 + 3 + 4 + 5 + 1 ) ( 3 + 4 + 2 + 5 + 2 ) ( 5 + 6 + 7 + 5 + 4 ) ] = \frac{1}{5} \begin{bmatrix} (2+3+4+5+1) \\ (3+4+2+5+2) \\ (5+6+7+5+4) \end{bmatrix} =51 (2+3+4+5+1)(3+4+2+5+2)(5+6+7+5+4)
= 1 5 [ 15 16 27 ] = [ 3 3.2 5.4 ] = \frac{1}{5} \begin{bmatrix} 15 \\ 16 \\ 27 \end{bmatrix} = \begin{bmatrix} 3 \\ 3.2 \\ 5.4 \end{bmatrix} =51 151627 = 33.25.4
2. 估计协方差矩阵
协方差矩阵的极大似然估计(MLE):
Σ
^
=
1
N
∑
n
=
1
N
(
x
n
−
μ
^
)
(
x
n
−
μ
^
)
T
\hat{\Sigma} = \frac{1}{N} \sum_{n=1}^{N} (x_n - \hat{\mu})(x_n - \hat{\mu})^T
Σ^=N1n=1∑N(xn−μ^)(xn−μ^)T
示例
计算偏差向量:
(
x
1
−
μ
^
)
=
[
2
3
5
]
−
[
3
3.2
5.4
]
=
[
−
1
−
0.2
−
0.4
]
(x_1 - \hat{\mu}) = \begin{bmatrix} 2 \\ 3 \\ 5 \end{bmatrix} - \begin{bmatrix} 3 \\ 3.2 \\ 5.4 \end{bmatrix} = \begin{bmatrix} -1 \\ -0.2 \\ -0.4 \end{bmatrix}
(x1−μ^)=
235
−
33.25.4
=
−1−0.2−0.4
计算协方差矩阵:
Σ
^
=
1
5
∑
n
=
1
5
(
x
n
−
μ
^
)
(
x
n
−
μ
^
)
T
\hat{\Sigma} = \frac{1}{5} \sum_{n=1}^{5} (x_n - \hat{\mu})(x_n - \hat{\mu})^T
Σ^=51n=1∑5(xn−μ^)(xn−μ^)T
完整计算可以用 Python 验证。
Python 代码验证
可以用 Python 计算 PDF 和 MLE 估计值:
import numpy as np
import scipy.stats as stats
# 定义均值和协方差矩阵
mu = np.array([1, 2])
Sigma = np.array([[2, 0.5], [0.5, 1]])
# 定义样本点
x = np.array([2, 3])
# 计算多元正态分布的概率密度
pdf_value = stats.multivariate_normal.pdf(x, mean=mu, cov=Sigma)
print(f"PDF 值: {pdf_value}")
# 生成样本数据
X = np.array([[2, 3, 5],
[3, 4, 6],
[4, 2, 7],
[5, 5, 5],
[1, 2, 4]])
# 计算 MLE 估计的均值
mu_hat = np.mean(X, axis=0)
print("MLE 估计的均值向量:", mu_hat)
# 计算 MLE 估计的协方差矩阵
Sigma_hat = np.cov(X, rowvar=False, bias=True)
print("MLE 估计的协方差矩阵:\n", Sigma_hat)
总结
- 多元高斯分布 PDF 计算涉及 协方差矩阵的行列式、逆矩阵、指数项,用于计算某个点的概率密度。
- MLE 估计均值 即样本的平均值。
- MLE 估计协方差矩阵 计算样本的偏差并求外积的均值。