对于高维随机变量,样本均值为
和协方差矩阵
,服从多元高斯分布的概率密度函数(Probability Density Function, PDF)为:
令,
其中样本均值就是各个维度的均值,设一共有
个样本
,有:
而协方差矩阵可以参考另一篇文章。
本文不涉及多元高斯分布的数学推导,只希望对多元高斯分布的表达式进行直观的剖析,解释多元高斯分布中协方差矩阵的作用。详细高斯分布的数学推导,可以参考文章。
1 一维高斯分布
高斯分布(Gaussian distribution)又被称为正态分布(normal distribution)。一维随机变量服从于均值为
方差为
的高斯分布可以被记为
,其概率密度函数 PDF 为
其中可以看作是归一化因子,主要是为了
。BTW,这里插一句证明高斯概率密度函数的积分为 1。
这个积分无法直接求出,需要通过一点 trick。
要证明,只需要证明
,进而只需证明
。接下来证明:
首先看到对于积分的值没有贡献,所以只需证明
。
将转换到极坐标:
%22%20aria-hidden%3D%22true%22%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJSZ3-7B%22%3E%3C%2Fuse%3E%0A%3Cg%20transform%3D%22translate(917%2C0)%22%3E%0A%3Cg%20transform%3D%22translate(-11%2C0)%22%3E%0A%3Cg%20transform%3D%22translate(0%2C633)%22%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-78%22%20x%3D%220%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-3D%22%20x%3D%22850%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-72%22%20x%3D%221906%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%3Cg%20transform%3D%22translate(2524%2C0)%22%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-63%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-6F%22%20x%3D%22444%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-73%22%20x%3D%22945%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%3C%2Fg%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-3B8%22%20x%3D%224030%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%3C%2Fg%3E%0A%3Cg%20transform%3D%22translate(0%2C-727)%22%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-79%22%20x%3D%220%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-3D%22%20x%3D%22775%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-72%22%20x%3D%221831%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%3Cg%20transform%3D%22translate(2449%2C0)%22%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-73%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-69%22%20x%3D%22394%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-6E%22%20x%3D%22673%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%3C%2Fg%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-3B8%22%20x%3D%223845%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%3C%2Fg%3E%0A%3C%2Fg%3E%0A%3C%2Fg%3E%0A%3C%2Fg%3E%0A%3C%2Fsvg%3E#card=math&code=%5Cbegin%7Bcases%7D%0Ax%20%3D%20r%5Ccos%5Ctheta%20%5C%5C%0Ay%20%3D%20r%5Csin%5Ctheta%0A%5Cend%7Bcases%7D&id=Wdsuk)
用极坐标就一定要标好换元后的定义域:
此外,积分式中的也应该被替换成
,快速的求法为雅可比矩阵的行列式。雅可比矩阵为:
雅可比矩阵的行列式为,故 (4) 中的积分式经过换元后有:
得证。
如果对一般高斯分布进行还换元,令,有
,则
为了使在
上的积分等于1,需要
,故得到随机变量
的概率密度函数
此时服从于一维标准高斯(正态)分布。
2 多元高斯分布:从一维到高维
首先从最简单的情况说起。假设现在有维随机变量
,其中
服从于标准正态分布,且
互相独立(
)。令变量
,那么该高维随机变量的概率密度函数为
令为一个常数,则可以得到
的等高线
,是一个圆。当随机变量
为二维的时候,有
画出图像:
import numpy as npimport matplotlib.pyplot as pltplt.style.use('ggplot')x1 = np.random.normal(0, 1, 500)x2 = np.random.normal(0, 1, 500)X = np.stack((x1, x2)) # (2, 500)plt.scatter(X[0, :], X[1, :])plt.title('$x_1, x_2 \\sim N(0, 1)$')plt.xlabel("$x_1$")plt.ylabel("$x_2$")plt.axis('equal')plt.show()

接下来对进行线性变换。首先是伸缩变换(Scaling),可以用矩阵
表示
得到
令,画出图像
import numpy as npimport matplotlib.pyplot as pltplt.style.use('ggplot')np.random.seed(210224)S = np.array([[1.5, 0], [0, 3]])x1 = np.random.normal(0, 1, 500)x2 = np.random.normal(0, 1, 500)X = np.stack((x1, x2)) # (2, 500)Z = np.matmul(S, X) # scalingplt.scatter(Z[0, :], Z[1, :])plt.title("$z = Sx$")plt.xlabel("$z_1$")plt.ylabel("$z_2$")plt.axis('equal')plt.show()

可以看到
的横坐标
和纵坐标
分别被缩放了 1.5 和 3 倍得到
和
。
随后是旋转变换(ratation),可以用旋转矩阵来表示:
得到
令,则有
import numpy as npimport matplotlib.pyplot as pltplt.style.use('ggplot')np.random.seed(210224)theta = np.deg2rad(30)S = np.array([[1.5, 0], [0, 3]])R = np.array([[np.cos(theta), -np.sin(theta)], [np.sin(theta), np.cos(theta)]])x1 = np.random.normal(0, 1, 500)x2 = np.random.normal(0, 1, 500)X = np.stack((x1, x2)) # (2, 500)Z = np.matmul(S, X) # scalingZ = np.matmul(R, Z) # rotationplt.scatter(Z[0, :], Z[1, :])plt.title("$z = Sx$")plt.xlabel("$z_1$")plt.ylabel("$z_2$")plt.axis('equal')plt.show()

可以看到图像整体逆时针旋转了 30o。
再对沿着
方向进行平移(translation),得到
import numpy as npimport matplotlib.pyplot as pltplt.style.use('ggplot')np.random.seed(210224)theta = np.deg2rad(30)S = np.array([[1.5, 0], [0, 3]])R = np.array([[np.cos(theta), -np.sin(theta)], [np.sin(theta), np.cos(theta)]])mu = np.array([2, 3]).reshape((2, 1))x1 = np.random.normal(0, 1, 500)x2 = np.random.normal(0, 1, 500)X = np.stack((x1, x2)) # (2, 500)Z = np.matmul(S, X) # scalingZ = np.matmul(R, Z) # rotationZ += mu # translationplt.scatter(Z[0, :], Z[1, :])plt.title("$z = RSx + \\mu$")plt.xlabel("$z_1$")plt.ylabel("$z_2$")plt.axis('equal')plt.show()

可以看到样本中心从原点平移到了
。
经过这三步变换,我们得到了新的随机变量的分布。令线性变换矩阵
代表先对样本点进行缩放,然后平移。则有
,
最后的问题来了,如何求的分布(概率密度函数)。既然有了一维高斯分布的铺垫,这就好办了,首先把
带入到
中,然后求出雅可比行列式使得积分归一就可以。
令对
求偏导得到雅可比矩阵
雅可比行列式为
最终得到的概率密度函数
这里我们已经完全看到多元高斯分布的影子了,令
就是协方差矩阵,从而推出 (6) 式多元高斯分布。
高维随机变量服从均值为
,协方差矩阵为
的多元高斯分布,可以记作
。
服从于多元正态分布可以看作由相互独立且服从标准正态的
经过线性变换然后平移得到的。故协方差矩阵实际上代表了一种线性变换。
3 协方差矩阵与特征分解
矩阵的特征值分解(eigenvalue decomposition)也被称为对角化(diagonalization),可以参考另一篇文章。
对协方差矩阵进行特征值分解有:
其中是一组标准正交基,
为对角阵。进一步对 (7) 式进行变换,得到
其中。
可以看到,多元高斯分布是由协方差矩阵的特征值控制缩放,特征向量控制旋转,均值控制样本点中心位置的。
