第二课.多元高斯分布与其几何特征

多元高斯分布

一元高斯与多元高斯

在第一课的一元高斯分布中,处理的是一组样本 X = ( x 1 , x 2 , . . . , x N ) X=(x_{1},x_{2},...,x_{N}) X=(x1,x2,...,xN),每个样本都是一个随机变量,可以粗略地认为就是随机的"数值";对于多元高斯分布,同样也有一组样本 X X X,但每个样本不是单值的随机变量,而是多维的随机向量,假设每个样本有 p p p维:
x = [ x 1 , x 2 , . . . , x p ] T x=[x_{1},x_{2},...,x_{p}]^{T} x=[x1,x2,...,xp]T
假设有 N N N个样本,则这组样本表示为:
fig1
一元高斯分布的样本可以看作多元高斯分布样本在 p = 1 p=1 p=1下的情况;

多元高斯分布的参数

和一元高斯分布类似,多元高斯分布的参数包含两个部分:均值,方差;但注意,描述分布均值的 μ \mu μ不再是一个数值,而是一个 p p p维向量:
μ = [ μ 1 , μ 2 , . . . , μ p ] T \mu=[\mu_{1},\mu_{2},...,\mu_{p}]^{T} μ=[μ1,μ2,...,μp]T
向量 μ \mu μ的每一维 μ i \mu_{i} μi反映了样本 X X X中第 i i i个特征的均值;

反映方差的参数同样不再是一个数值,而是协方差矩阵 Σ \Sigma Σ,这是一个 p × p p\times p p×p的矩阵:
fig2
在协方差矩阵中,方阵对角线的值 σ i i \sigma_{ii} σii表示的是分布中第 i i i个特征的方差,非对角线上的值 σ i j \sigma_{ij} σij表示分布中第 i i i个特征和第 j j j个特征的协方差,反映两个特征之间的相关性;

特别的,当协方差矩阵是一个对角阵,即非对角线上值为0时,代表该分布中,不同特征之间不存在相关性(这也是PCA白化的目标,回顾:算法栈-PCA主成分分析);

二元高斯分布

以二元高斯分布为例,设置不同的参数,直观感受参数对样本分布的影响:

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

mean_1 = np.array([0, 0])
conv_1 = np.array([[1, 0],
                 [0, 1]])

mean_2 = np.array([0, -7])
conv_2 = np.array([[4, 0],
                 [0, 0.25]])

mean_3 = np.array([4, 4])
conv_3 = np.array([[4, -3],
                 [-3, 0.25]])

# np.random.normal(loc=0.0:"均值", scale=1.0:"标准差", size=None)用于生成一元高斯分布并采样
# np.random.multivariate_normal根据指定的均值和协方差生成多元高斯分布并采样,size为样本数量
# 本例np.random.multivariate_normal(mean=mean_1, cov=conv_1, size=2000)形状为(2000,2),经过转置用于x_1,y_1解包unpack
x_1, y_1 = np.random.multivariate_normal(mean=mean_1, cov=conv_1, size=2000).T
x_2, y_2 = np.random.multivariate_normal(mean=mean_2, cov=conv_2, size=2000).T
x_3, y_3 = np.random.multivariate_normal(mean=mean_3, cov=conv_3, size=2000).T

plt.plot(x_1, y_1, 'ro', alpha=0.05)
plt.plot(x_2, y_2, 'bo', alpha=0.05)
plt.plot(x_3, y_3, 'go', alpha=0.05)

# gca()获取当前坐标轴,axes.set_xlim()移动坐标轴到指定范围
plt.gca().axes.set_xlim(-10, 10)
plt.gca().axes.set_ylim(-10, 10)

plt.grid()
plt.show()

fig3
以上演示中,分别设置了三组不同的参数:
fig4

  • 红色分布:均值均为0,方差均为1,协方差均为0,因此,整个分布的中心点为 ( 0 , 0 ) (0,0) (0,0),两特征彼此不相关,形态为一个标准的正圆;
  • 蓝色分布:第二个特征均值为-7,整个分布的中心点位于 ( 0 , − 7 ) (0,-7) (0,7),协方差矩阵为对角阵,两特征彼此不相关,即椭圆的长轴和短轴在方向上与 x x x y y y轴一致,没有倾斜,但第一维特征的方差大于第二维特征的方差,所以分布沿着 x x x轴看起来更加分散;
  • 绿色分布:协方差矩阵不再是对角阵,两个特征的协方差为-3,呈现负相关,即椭圆表现为向左倾斜(类比直线 y = − x y=-x y=x);

多元高斯分布的几何特征

几何特征

基于二元高斯分布的可视化,直观感受到整体呈现椭圆形状,假设 x x x是一个 p p p维随机向量,服从某个 p p p维高斯分布 θ = ( μ ∈ R p , Σ ∈ R p × p ) \theta=(\mu\in\mathbb{R}^{p},\Sigma\in\mathbb{R}^{p\times p}) θ=(μRp,ΣRp×p),则有概率密度函数:
p ( x ∣ θ ) = 1 ( 2 π ) p 2 ∣ Σ ∣ 1 2 e x p ( − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ) p(x|\theta)=\frac{1}{(2\pi)^{\frac{p}{2}}|\Sigma|^{\frac{1}{2}}}exp(-\frac{1}{2}(x-\mu)^{T}\Sigma^{-1}(x-\mu)) p(xθ)=(2π)2pΣ211exp(21(xμ)TΣ1(xμ))
协方差矩阵可以分解为 Σ = Q Λ Q T \Sigma=Q\Lambda Q^{T} Σ=QΛQT,其中, Q Q T = I QQ^{T}=I QQT=I Q = [ q 1 , . . . , q p ] Q=[q_{1},...,q_{p}] Q=[q1,...,qp],其中 Q Q Q ( p × p ) (p\times p) (p×p),而 Λ \Lambda Λ为:
fig5
因此有:
fig6
其中,对角阵 Λ − 1 \Lambda^{-1} Λ1为:
fig7
因此, Σ − 1 = ∑ i = 1 p q i 1 λ i q i T \Sigma^{-1}=\sum_{i=1}^{p}q_{i}\frac{1}{\lambda_{i}}q_{i}^{T} Σ1=i=1pqiλi1qiT,代入 ( x − μ ) T Σ − 1 ( x − μ ) (x-\mu)^{T}\Sigma^{-1}(x-\mu) (xμ)TΣ1(xμ)得到:
( x − μ ) T Σ − 1 ( x − μ ) = ( x − μ ) T [ ∑ i = 1 p q i 1 λ i q i T ] ( x − μ ) = ∑ i = 1 p ( x − μ ) T [ q i 1 λ i q i T ] ( x − μ ) (x-\mu)^{T}\Sigma^{-1}(x-\mu)=(x-\mu)^{T}[\sum_{i=1}^{p}q_{i}\frac{1}{\lambda_{i}}q_{i}^{T}](x-\mu)=\sum_{i=1}^{p}(x-\mu)^{T}[q_{i}\frac{1}{\lambda_{i}}q_{i}^{T}](x-\mu) (xμ)TΣ1(xμ)=(xμ)T[i=1pqiλi1qiT](xμ)=i=1p(xμ)T[qiλi1qiT](xμ)
进行替换,令 y i = ( x − μ ) T q i y_{i}=(x-\mu)^{T}q_{i} yi=(xμ)Tqi,相当于先平移后投影:

  • 让样本 x x x整体按照 μ \mu μ平移;
  • 再向单位向量 q i q_{i} qi投影,可以得到, y 1 y_{1} y1是样本 x x x平移后在 q 1 q_{1} q1方向上的投影长度, y 2 y_{2} y2是样本 x x x平移后在 q 2 q_{2} q2方向上的投影长度;注意 q 1 q_{1} q1 q 2 q_{2} q2是彼此正交的单位向量;

p = 2 p=2 p=2为例,可以得到:
∑ i = 1 2 ( x − μ ) T [ q i 1 λ i q i T ] ( x − μ ) = y 1 1 λ 1 y 1 T + y 2 1 λ 2 y 2 T = y 1 2 λ 1 + y 2 2 λ 2 \sum_{i=1}^{2}(x-\mu)^{T}[q_{i}\frac{1}{\lambda_{i}}q_{i}^{T}](x-\mu)=y_{1}\frac{1}{\lambda_{1}}y_{1}^{T}+y_{2}\frac{1}{\lambda_{2}}y_{2}^{T}=\frac{y_{1}^{2}}{\lambda_{1}}+\frac{y_{2}^{2}}{\lambda_{2}} i=12(xμ)T[qiλi1qiT](xμ)=y1λ11y1T+y2λ21y2T=λ1y12+λ2y22
∑ i = 1 2 ( x − μ ) T [ q i 1 λ i q i T ] ( x − μ ) \sum_{i=1}^{2}(x-\mu)^{T}[q_{i}\frac{1}{\lambda_{i}}q_{i}^{T}](x-\mu) i=12(xμ)T[qiλi1qiT](xμ)固定后,样本对应的二元高斯概率密度就可以得到具体值 p ( x ∣ θ ) = v a l u e p(x|\theta)=value p(xθ)=value,即:对于满足 ∑ i = 1 2 ( x − μ ) T [ q i 1 λ i q i T ] ( x − μ ) = c \sum_{i=1}^{2}(x-\mu)^{T}[q_{i}\frac{1}{\lambda_{i}}q_{i}^{T}](x-\mu)=c i=12(xμ)T[qiλi1qiT](xμ)=c的所有样本,它们出现的概率都一样大;

进一步思考,即对于满足 y 1 2 λ 1 + y 2 2 λ 2 = c \frac{y_{1}^{2}}{\lambda_{1}}+\frac{y_{2}^{2}}{\lambda_{2}}=c λ1y12+λ2y22=c时的所有样本,样本出现的概率一样大;注意到 y 1 2 λ 1 + y 2 2 λ 2 = c \frac{y_{1}^{2}}{\lambda_{1}}+\frac{y_{2}^{2}}{\lambda_{2}}=c λ1y12+λ2y22=c正好是椭圆的方程;

椭圆方程的长轴短轴不再是经典的 x x x轴和 y y y轴,变成了向量 q 1 q_{1} q1 q 2 q_{2} q2,椭圆在两个轴上的长度分别为 c λ 1 \sqrt{c\lambda_{1}} cλ1 c λ 2 \sqrt{c\lambda_{2}} cλ2 y 1 y_{1} y1 y 2 y_{2} y2则是 x o y xoy xoy空间下的样本 x x x q 1 q_{1} q1 q 2 q_{2} q2上的投影长度,即样本 x x x q 1 q_{1} q1 q 2 q_{2} q2为坐标系的坐标值;

对于 ∑ i = 1 2 ( x − μ ) T [ q i 1 λ i q i T ] ( x − μ ) \sum_{i=1}^{2}(x-\mu)^{T}[q_{i}\frac{1}{\lambda_{i}}q_{i}^{T}](x-\mu) i=12(xμ)T[qiλi1qiT](xμ),每次固定常数 c c c后,相当于以 q 1 q_{1} q1 q 2 q_{2} q2为轴, c λ 1 \sqrt{c\lambda_{1}} cλ1 c λ 2 \sqrt{c\lambda_{2}} cλ2 为轴长,画一个椭圆,这个椭圆上所有点出现的概率都相等;

设想一下,伴随 c c c的改变, ∑ i = 1 2 ( x − μ ) T [ q i 1 λ i q i T ] ( x − μ ) \sum_{i=1}^{2}(x-\mu)^{T}[q_{i}\frac{1}{\lambda_{i}}q_{i}^{T}](x-\mu) i=12(xμ)T[qiλi1qiT](xμ)取值也在改变,于是椭圆在缩放,无数椭圆堆叠形成一个实心的"椭圆",而且注意, ∑ i = 1 2 ( x − μ ) T [ q i 1 λ i q i T ] ( x − μ ) \sum_{i=1}^{2}(x-\mu)^{T}[q_{i}\frac{1}{\lambda_{i}}q_{i}^{T}](x-\mu) i=12(xμ)T[qiλi1qiT](xμ)越大,即椭圆越大,但 p ( x ∣ θ ) p(x|\theta) p(xθ)的取值反而减小,所以越大的椭圆上,点的出现概率越小

实例演示

以二元高斯为例,设置以下参数进行演示:
fig8

import numpy as np
import matplotlib.pyplot as plt
from scipy import linalg

mean_1 = np.array([0, 0])
mean_2 = np.array([20, -20])

conv = np.array([[34, 12],
              [12, 41]])

x_1, y_1 = np.random.multivariate_normal(mean=mean_1, cov=conv, size=4000).T
x_2, y_2 = np.random.multivariate_normal(mean=mean_2, cov=conv, size=4000).T

plt.plot(x_1, y_1, 'ro', alpha=0.05)
plt.plot(x_2, y_2, 'bo', alpha=0.05)

plt.gca().axes.set_xlim(-20, 40)
plt.gca().axes.set_ylim(-40, 20)

evalue, evector = linalg.eig(conv)
print(evalue)
print(evector)

plt.grid()
plt.show()

fig9
结果为:

[25.+0.j 50.+0.j]

[[-0.8 -0.6]
 [ 0.6 -0.8]]

蓝色分布为原始的高斯分布,减去均值向量后,整体平移到 x o y xoy xoy坐标原点,即红色分布;

对协方差矩阵 Σ \Sigma Σ进行特征值分解得到特征向量 q 1 = [ − 0.8 , 0.6 ] T q_{1}=[-0.8,0.6]^{T} q1=[0.8,0.6]T q 2 = [ − 0.6 , − 0.8 ] T q_{2}=[-0.6,-0.8]^{T} q2=[0.6,0.8]T,对应特征值为 λ 1 = 25 \lambda_{1}=25 λ1=25 λ 2 = 50 \lambda_{2}=50 λ2=50;即在平移得到的红色分布上,有无数个以 [ 0 , 0 ] T [0,0]^{T} [0,0]T为中心, q 1 q_{1} q1 q 2 q_{2} q2为轴的同心椭圆,椭圆的长短轴之比为 50 / 25 \sqrt{50}/\sqrt{25} 50 /25 ,对于某个椭圆,其上的点出现概率都相等,而随着椭圆变大,样本出现的概率逐渐降低,即颜色从深变浅。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值