多维高斯分布:
f ( x ) = 1 ( 2 π ) d 2 ∣ Σ ∣ 1 2 exp [ − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ] f(\mathbf x )= \frac{1}{{(2\pi)}^{\frac{d}{2}}{\begin{vmatrix}\mathbf\Sigma\end{vmatrix}}^{\frac{1}{2}}}\exp[-\frac{1}{2}(\mathbf x-\mu)^{T}\mathbf\Sigma^{-1}(\mathbf x-\mu)] f(x)=(2π)2d Σ 211exp[−21(x−μ)TΣ−1(x−μ)]
协方差矩阵 Σ \mathbf\Sigma Σ 是一个对称矩阵,对角线外的元素表示了 x i x_i xi 和 x j x_j xj 分量之间的协方差,因而决定了多维高斯分布的形状。
以二维高斯分布为例,即: x = [ x , y ] T \mathbf x=[x,y]^T x=[x,y]T,包含以下要点:
- 协方差矩阵的对角线元素为 x x x 和 y y y 轴的方差
- 反斜对角线上的两个值为协方差,表明 x x x 和 y y y 的线性相关程度(正值时: x x x 增大, y y y 也随之增大;负值时: x x x 增大, y y y 随之减小)
以下是二维高斯分布的不同协方差矩阵时的平面图:
(
左
)
[
50
0
0
50
]
(
右
)
[
10
0
0
10
]
\qquad\qquad\quad\qquad\qquad\begin{matrix}(左) \begin{bmatrix} 50 & 0 \\ 0 & 50 \end{bmatrix} \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\ \ \ \ (右) \begin{bmatrix} 10 & 0 \\ 0 & 10 \end{bmatrix} \end{matrix}
(左)[500050] (右)[100010]
\qquad
(
左
)
[
5
0
0
1
]
(
右
)
[
10
0
0
50
]
\qquad\qquad\quad\qquad\qquad\begin{matrix}(左) \begin{bmatrix} 5 & 0 \\ 0 & 1 \end{bmatrix}\ \ \ \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\ \ \ \ (右) \begin{bmatrix} 10 & 0 \\ 0 & 50 \end{bmatrix} \end{matrix}
(左)[5001] (右)[100050]
\qquad
(
左
)
[
50
0
0
10
]
(
右
)
[
1
0
0
5
]
\qquad\qquad\quad\qquad\qquad\begin{matrix}(左) \begin{bmatrix} 50 & 0 \\ 0 & 10 \end{bmatrix} \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\ \ \ (右) \begin{bmatrix} 1 & 0 \\ 0 & 5 \end{bmatrix} \end{matrix}
(左)[500010] (右)[1005]
\qquad
(
左
)
[
50
−
10
−
10
50
]
(
右
)
[
10
−
5
−
5
10
]
\qquad\qquad\quad\qquad\qquad\begin{matrix}(左) \begin{bmatrix} 50 & -10 \\ -10 & 50 \end{bmatrix} \qquad\qquad\qquad\qquad\qquad\qquad\qquad\ \ \ \ \ (右) \begin{bmatrix} 10 & -5 \\ -5 & 10 \end{bmatrix} \end{matrix}
(左)[50−10−1050] (右)[10−5−510]
\qquad
(
左
)
[
50
−
30
−
30
50
]
(
右
)
[
10
−
8
−
8
10
]
\qquad\qquad\quad\qquad\qquad\begin{matrix}(左) \begin{bmatrix} 50 & -30 \\ -30 & 50 \end{bmatrix} \qquad\qquad\qquad\qquad\qquad\qquad\qquad\ \ \ \ \ (右) \begin{bmatrix} 10 & -8 \\ -8 & 10 \end{bmatrix} \end{matrix}
(左)[50−30−3050] (右)[10−8−810]
\qquad
(
左
)
[
50
10
10
50
]
(
右
)
[
10
5
5
10
]
\qquad\qquad\quad\qquad\qquad\begin{matrix}(左) \begin{bmatrix} 50 & 10 \\ 10 & 50 \end{bmatrix} \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\ \ \ \ (右) \begin{bmatrix} 10 & 5 \\ 5 & 10 \end{bmatrix} \end{matrix}
(左)[50101050] (右)[105510]
\qquad
(
左
)
[
50
30
30
50
]
(
右
)
[
10
8
8
10
]
\qquad\qquad\quad\qquad\qquad\begin{matrix}(左) \begin{bmatrix} 50 & 30 \\ 30 & 50 \end{bmatrix} \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\quad (右) \begin{bmatrix} 10 & 8 \\ 8 & 10 \end{bmatrix} \end{matrix}
(左)[50303050](右)[108810]
\qquad
matlab代码:
clear;close all;
Num = 500;
[x,y] = meshgrid(linspace(-20,20,Num)',linspace(-20,20,Num)');
X = [x(:) y(:)];
mu = [0 0]; %中心在原点
Sigma = [50 -30; -30 50]; %定义协方差矩阵
z = mvnpdf(X, mu, Sigma);
figure,mesh(x,y,reshape(z,Num,Num));
colormap jet;
xlabel('x');ylabel('y');axis equal;
view(0,90);
python代码:
import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np
from scipy.stats import multivariate_normal
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
X = np.arange(-20, 20, 0.2)
Y = np.arange(-20, 20, 0.2)
x, y = np.meshgrid(X, Y)
pos = np.empty(x.shape + (2,))
pos[:, :, 0] = x
pos[:, :, 1] = y
mu = [0, 0]
Sigma = [[50,30],[30,50]]
z = multivariate_normal(mu, Sigma)
surf = ax.plot_surface(x, y, z.pdf(pos), cmap=cm.jet,
linewidth=0, antialiased=False)
ax.view_init(elev=90., azim=90)
fig.colorbar(surf, shrink=0.5, aspect=5)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()
推荐材料:协方差矩阵的几何解释