别再死记硬背公式了!图解多元正态分布的概率密度函数,从几何角度理解它

发布时间:2026/6/2 0:32:40

别再死记硬背公式了!图解多元正态分布的概率密度函数,从几何角度理解它 从几何视角重新认识多元正态分布用Python可视化高维概率世界第一次看到多元正态分布的概率密度函数时那个包含矩阵、转置和行列式的复杂公式是否让你望而生畏其实这个看似抽象的数学概念在几何世界中有着极其直观的表现。本文将带你暂时放下公式推导通过Python可视化工具用几何语言重新解读多元正态分布的核心概念。想象你是一位地形测绘师手中的数据不是海拔高度而是概率密度。多元正态分布在二维空间中就像一个可伸缩、可旋转的概率山丘均值向量决定了山丘中心的位置协方差矩阵则控制着山丘的陡峭程度和延伸方向。这种几何直观不仅能帮助我们理解抽象公式还能为机器学习中的高斯混合模型、异常检测等应用打下坚实基础。1. 从一维到多维正态分布的维度扩展我们熟悉的一维正态分布图像是钟形曲线横轴表示随机变量取值纵轴表示概率密度。当扩展到二维空间时概率密度不再是一条曲线而成为一个曲面。这个曲面在均值点处达到最高峰随着远离均值高度概率密度呈指数级下降。用Python生成一个标准的二维正态分布曲面import numpy as np import matplotlib.pyplot as plt from scipy.stats import multivariate_normal # 创建网格 x, y np.mgrid[-3:3:.01, -3:3:.01] pos np.dstack((x, y)) # 定义二维正态分布参数 mu [0, 0] cov [[1, 0], [0, 1]] # 创建分布对象 rv multivariate_normal(mu, cov) # 绘制三维曲面 fig plt.figure(figsize(10, 7)) ax fig.add_subplot(111, projection3d) ax.plot_surface(x, y, rv.pdf(pos), cmapviridis) ax.set_xlabel(X轴) ax.set_ylabel(Y轴) ax.set_zlabel(概率密度) plt.title(标准二维正态分布曲面) plt.show()运行这段代码你会看到一个完美的对称钟形山。这个山丘的等高线是同心圆表示在两个维度上标准差相同且没有相关性。关键几何概念对比表数学参数几何表现可视化特征均值向量μ山丘中心点曲面的最高点位置协方差矩阵Σ山丘形状曲面的陡峭程度和延伸方向行列式|Σ|山丘体积曲面的整体扁平程度特征向量山丘主轴方向曲面的主要延伸方向特征值山丘轴向伸展程度各主轴方向的陡峭程度2. 协方差矩阵的几何密码协方差矩阵Σ是这个分布的核心参数它包含了三个关键几何信息每个维度自身的方差对角线元素维度之间的协方差非对角线元素整体的旋转和缩放信息特征分解让我们通过改变协方差矩阵来观察曲面变化# 定义不同的协方差矩阵 cov_cases { 各向同性: [[1, 0], [0, 1]], 拉伸X轴: [[2, 0], [0, 1]], 负相关: [[1, -0.8], [-0.8, 1]], 正相关: [[1, 0.8], [0.8, 1]] } # 可视化不同协方差矩阵对应的曲面 fig plt.figure(figsize(15, 12)) for i, (title, cov) in enumerate(cov_cases.items(), 1): ax fig.add_subplot(2, 2, i, projection3d) rv multivariate_normal(mu, cov) ax.plot_surface(x, y, rv.pdf(pos), cmapviridis) ax.set_title(f{title}: Σ{cov}) ax.set_zlim(0, 0.2) plt.tight_layout() plt.show()观察这些曲面你会发现对角线元素控制着各轴方向的拉伸程度非对角线元素引入旋转使山丘沿对角线方向延伸正值协方差产生正斜率的主轴负值则产生负斜率提示协方差矩阵必须是正定的这意味着它对应的曲面在任何方向上都保持凸起的形状不会出现马鞍形或平板形。3. 马氏距离概率世界中的几何距离在标准欧氏距离中所有方向是等价的。但在多元正态分布中概率密度的衰减考虑到了不同方向的相关性这就是马氏距离的几何意义$$ D_M(x) \sqrt{(x-μ)^TΣ^{-1}(x-μ)} $$马氏距离实际上是经过线性变换后的欧氏距离这个变换将概率分布的等高线变为圆形。我们可以用等高线图来展示这个概念# 绘制马氏距离等高线 cov [[1, 0.7], [0.7, 1]] rv multivariate_normal(mu, cov) # 计算网格点上的马氏距离 delta np.dstack((x-mu[0], y-mu[1])) mahalanobis np.einsum(...i,ij,...j-..., delta, np.linalg.inv(cov), delta) # 绘制 plt.figure(figsize(12, 5)) plt.subplot(1, 2, 1) plt.contour(x, y, rv.pdf(pos), levels10, cmapviridis) plt.title(概率密度等高线) plt.subplot(1, 2, 2) plt.contour(x, y, np.sqrt(mahalanobis), levels10, cmapplasma) plt.title(马氏距离等高线) plt.show()右图显示马氏距离的等高线是完美的同心圆而左图原始分布的等高线是椭圆。这说明马氏距离实际上是将概率分布标准化后的一种距离度量。4. 最大似然估计的几何解释当我们用最大似然法估计多元正态分布参数时实际上是在寻找最适合样本点的概率山丘。具体来说均值μ的估计样本点在空间中的重心位置协方差Σ的估计样本点在各方向上的离散程度# 生成样本数据并可视化最大似然估计 np.random.seed(42) true_mu [1, -1] true_cov [[2, 1.2], [1.2, 1.5]] samples np.random.multivariate_normal(true_mu, true_cov, 100) # 计算样本均值和协方差 sample_mu np.mean(samples, axis0) sample_cov np.cov(samples, rowvarFalse) # 可视化 plt.figure(figsize(10, 8)) plt.scatter(samples[:, 0], samples[:, 1], alpha0.6, label样本点) # 绘制真实分布和估计分布的等高线 for mu, cov, label, linestyle in zip( [true_mu, sample_mu], [true_cov, sample_cov], [真实分布, 估计分布], [-, --] ): rv multivariate_normal(mu, cov) plt.contour(x, y, rv.pdf(pos), levels3, colorsk, linestyleslinestyle, alpha0.8, labellabel) plt.legend() plt.title(最大似然估计的几何意义) plt.xlabel(X) plt.ylabel(Y) plt.show()图中可以看到估计出的分布虚线试图用最合理的山丘形状来包络样本点。样本点越密集的区域对应的概率密度越高。协方差矩阵估计的关键性质无偏估计使用N-1而非N作为分母需要足够多样本才能准确估计高维协方差矩阵在样本不足时常使用对角协方差或共享协方差等简化形式5. 高维空间中的概率几何虽然我们无法直接可视化高维空间但几何直觉仍然适用。在D维空间中均值向量μ是D维空间中的一个点协方差矩阵Σ定义了D个主轴方向和各轴伸展程度概率密度函数的等高线是D维椭球面大部分概率质量集中在以μ为中心的一个概率云团中高维情况下多元正态分布展现出一些反直觉的性质随着维度增加大部分样本点会集中在远离均值的壳层上协方差矩阵的特征值分布决定了数据的有效维度马氏距离比欧氏距离更能反映实际的概率相似性# 高维情况下的样本分布模拟 dims [2, 10, 50, 100] n_samples 1000 plt.figure(figsize(15, 10)) for i, d in enumerate(dims, 1): # 生成高维样本 mu np.zeros(d) cov np.eye(d) samples np.random.multivariate_normal(mu, cov, n_samples) # 计算到原点的距离 distances np.linalg.norm(samples, axis1) # 绘制距离分布 plt.subplot(2, 2, i) plt.hist(distances, bins30, densityTrue, alpha0.7) plt.title(f{d}维空间中的样本距离分布) plt.xlabel(到原点的欧氏距离) plt.ylabel(密度) plt.tight_layout() plt.show()这个模拟展示了著名的维度诅咒现象随着维度增加样本点不再聚集在均值附近而是逐渐向远离中心的壳层集中。理解这一现象对处理高维数据至关重要。

相关新闻