非常好的问题!马氏距离(Mahalanobis distance)是统计学和机器学习中一种考虑变量相关性和尺度差异的广义距离度量。它由印度统计学家 P. C. Mahalanobis 于1936年提出,用于衡量一个点与一个分布之间的“统计距离”。
下面我将从直观理解、数学定义、性质和具体示例四个方面为你详细解释。
一、直观理解
想象你在判断一个人是否“异常”:
- 如果只看身高:190 cm 可能很高;
- 如果只看体重:90 kg 可能偏重;
- 但如果知道身高和体重正相关(高的人通常重),那么一个身高190 cm、体重90 kg的人可能完全正常。
欧氏距离会把每个维度等权看待,且忽略变量间的相关性; 而马氏距离会“根据数据的分布形状”自动调整距离计算——在数据密集的方向上“拉长”,在稀疏方向上“压缩”。
> ✅ 马氏距离的本质:用协方差矩阵对空间进行“白化”(whitening)后,再计算欧氏距离。
二、数学定义
设:
- ( \mathbf{x} \in \mathbb{R}^n ) 是一个观测向量;
- ( \boldsymbol{\mu} \in \mathbb{R}^n ) 是某分布(如样本总体)的均值向量;
- ( \Sigma \in \mathbb{R}^{n \times n} ) 是该分布的协方差矩阵(假设正定,即可逆)。
则 马氏距离 定义为:
[ D_M(\mathbf{x}) = \sqrt{(\mathbf{x} - \boldsymbol{\mu})^\top \Sigma^{-1} (\mathbf{x} - \boldsymbol{\mu})} ]
- 若比较两个点 ( \mathbf{x}, \mathbf{y} ) 到同一分布的距离,也可定义两点间的马氏距离为: [ D_M(\mathbf{x}, \mathbf{y}) = \sqrt{(\mathbf{x} - \mathbf{y})^\top \Sigma^{-1} (\mathbf{x} - \mathbf{y})} ]
> 🔔 注意:当 ( \Sigma = I )(单位阵,即各变量独立且方差为1),马氏距离退化为欧氏距离。
三、关键性质
| 性质 | 说明 |
|---|---|
| 尺度不变性 | 对变量做线性缩放(如 cm → m),距离不变 |
| 旋转/相关性自适应 | 能处理变量间的相关性 |
| 等概率轮廓为椭球 | 在多元正态分布下,( D_M = c ) 的点构成等密度椭球面 |
| 与卡方分布相关 | 若 ( \mathbf{x} \sim \mathcal{N}(\boldsymbol{\mu}, \Sigma) ),则 ( D_M^2(\mathbf{x}) \sim \chi^2_n ) |
四、具体数值示例
场景:判断一个学生的成绩是否异常
假设我们有两类成绩:数学(Math) 和 物理(Physics),已知全班成绩服从二维正态分布:
- 均值:( \boldsymbol{\mu} = \begin{bmatrix} 70 \ 65 \end{bmatrix} )
- 协方差矩阵: [ \Sigma = \begin{bmatrix} 100 & 50 \ 50 & 80 \end{bmatrix} ]
- 数学方差 = 100(标准差 10)
- 物理方差 = 80(标准差 ≈ 8.94)
- 协方差 = 50(正相关)
现在有一个学生 A,成绩为 ( \mathbf{x} = \begin{bmatrix} 90 \ 85 \end{bmatrix} )。
问题:这个学生是否“异常”?
步骤 1:计算偏差向量
[ \mathbf{x} - \boldsymbol{\mu} = \begin{bmatrix} 90 - 70 \ 85 - 65 \end{bmatrix} = \begin{bmatrix} 20 \ 20 \end{bmatrix} ]
步骤 2:求协方差矩阵的逆
[ \Sigma = \begin{bmatrix} 100 & 50 \ 50 & 80 \end{bmatrix}, \quad \det(\Sigma) = 100 \cdot 80 - 50^2 = 8000 - 2500 = 5500 ]
[ \Sigma^{-1} = \frac{1}{5500} \begin{bmatrix} 80 & -50 \ -50 & 100 \end{bmatrix} = \begin{bmatrix} 0.014545 & -0.009091 \ -0.009091 & 0.018182 \end{bmatrix} ]
步骤 3:计算马氏距离平方
[ D_M^2 = (\mathbf{x} - \boldsymbol{\mu})^\top \Sigma^{-1} (\mathbf{x} - \boldsymbol{\mu}) = \begin{bmatrix} 20 & 20 \end{bmatrix} \begin{bmatrix} 0.014545 & -0.009091 \ -0.009091 & 0.018182 \end{bmatrix} \begin{bmatrix} 20 \ 20 \end{bmatrix} ]
先算中间乘积: [ \Sigma^{-1} (\mathbf{x} - \boldsymbol{\mu}) = \begin{bmatrix} 0.014545 \cdot 20 - 0.009091 \cdot 20 \ -0.009091 \cdot 20 + 0.018182 \cdot 20 \end
\begin{bmatrix} (0.2909 - 0.1818) \ (-0.1818 + 0.3636) \end
\begin{bmatrix} 0.1091 \ 0.1818 \end{bmatrix} ]
再点乘: [ D_M^2 = 20 \cdot 0.1091 + 20 \cdot 0.1818 = 2.182 + 3.636 = 5.818 ]
所以: [ D_M \approx \sqrt{5.818} \approx 2.41 ]
步骤 4:判断是否异常
由于 ( D_M^2 \sim \chi^2_2 )(自由度为2的卡方分布),查表得:
- ( \chi^2_{2, 0.95} \approx 5.991 )
因为 ( D_M^2 = 5.818 < 5.991 ),所以在 95% 置信水平下,该学生不算异常! > 💡 对比:若用欧氏距离,( |\mathbf{x} - \boldsymbol{\mu}| = \sqrt{20^2 + 20^2} \approx 28.28 ),但这个数字无法告诉我们是否“统计显著”。
五、总结
> 马氏距离 = 考虑数据分布形状的“标准化欧氏距离”。 > 它通过协方差矩阵的逆对空间进行变形,使得在数据自然伸展的方向上距离被压缩,在狭窄方向上被拉伸,从而更合理地度量“异常程度”或“相似性”。
✅ 应用场景包括:
- 异常检测(Outlier detection)
- 分类(如线性判别分析 LDA)
- 聚类(如高斯混合模型)
- 多元质量控制
文章评论