马氏距离以及其推导过程
在欧式距离中,我们默认各个维度均值为0,方差为1,且相互独立。但是在实际情况中,会出现以下两类大问题:
- 纲(尺度)不同:比如身高(m)和体重(kg),数值范围完全不同。
- 特征相关性:比如身高和体重往往高度正相关。
如果直接算欧氏距离,数据在概率密度高的方向(相关性方向)上的距离会被放大。马氏距离的本质,就是先将原始数据进行旋转和缩放(去相关和标准化),在这个新空间中再计算欧氏距离。
数学推导过程
假设我们有一个随机向量 \(X = [x_1, x_2, \dots, x_d]^T\),其均值为 \(\mu = [\mu_1, \mu_2, \dots, \mu_d]^T\),协方差矩阵为 \(\Sigma\)。我们的目标是计算 \(X\) 到均值 \(\mu\) 的马氏距离。
步骤一:去中心化
首先,将数据减去均值,移动到原点:
步骤二:消除相关性(线性变换)
因为特征之间存在相关性,协方差矩阵 \(\Sigma\) 不是对角矩阵。根据线性代数,协方差矩阵 \(\Sigma\) 是一个实对称矩阵,我们对其进行特征分解(Eigendecomposition):
其中:
- \(P\) 是正交矩阵(\(P^T P = I\)),其列向量是 \(\Sigma\) 的特征向量。它代表了一个旋转变换。
- \(\Lambda\) 是对角矩阵,对角线上的元素 \(\lambda_i\) 是特征值(代表数据在特征向量方向上的方差)。
为了消除相关性,我们通过正交矩阵 \(P^T\) 对去中心化的数据 \(Y\) 进行旋转(等距变换),得到新坐标系下的向量 \(Z\):
此时,新变量 \(Z\) 的各个维度之间已经互不相关了,其协方差矩阵变成了对角阵 \(\Lambda\)。
步骤三:标准化(消除方差影响)
虽然 \(Z\) 的各维度互不相关,但它们在各个方向上的方差(即特征值 \(\lambda_i\))依然不同。为了让每个方向的标准差都变为 1,我们需要对每个维度除以其标准差 \(\sqrt{\lambda_i}\)。
在线性代数中,这相当于左乘 \(\Lambda^{-1/2}\):
此时,新向量 \(W\) 的每个维度不仅互不相关,而且方差均为 1(即 \(\Sigma_W = I\))。
步骤四:计算新空间中的欧氏距离
在经过“去相关”和“标准化”后的完美空间(\(W\) 空间)中,我们直接计算 \(W\) 到原点的普通欧氏距离。
欧氏距离的平方为:
现在,我们将前面步骤中 \(W\) 的表达式代入:
根据矩阵转置的性质 \((AB)^T = B^T A^T\),展开左半部分:
因为 \(\Lambda\) 是对角阵,所以 \((\Lambda^{-1/2})^T = \Lambda^{-1/2}\),且 \(\Lambda^{-1/2} \Lambda^{-1/2} = \Lambda^{-1}\):
回想一下步骤二中 \(\Sigma = P \Lambda P^T\),我们求它的逆矩阵:
因为 \(P\) 是正交阵,所以 \(P^{-1} = P^T\) 且 \((P^T)^{-1} = P\)。因此:
正好对应了公式中间的部分!我们将其替换掉:
这就是马氏距离的平方公式。
3. 最终公式
因此,向量 \(X\) 与均值 \(\mu\) 之间的马氏距离定义为:
如果是计算两个样本点 \(X_i\) 和 \(X_j\) 之间的马氏距离,公式同理为:
4. 总结
-
当 \(\Sigma = I\)(单位矩阵)时:意味着数据各个维度独立且方差均为 1,此时马氏距离退化为普通的欧氏距离。
-
当 \(\Sigma\) 是对角阵时:意味着数据各维度独立但方差不同,此时马氏距离就是标准化欧氏距离(Normalized Euclidean Distance)。
一句话理解马氏距离的推导:
它通过协方差矩阵的逆 \(\Sigma^{-1}\),默默地对原始数据做了一次旋转(消除相关性)和缩放(消除方差尺度),使得原本呈椭圆状分布的数据变成了正圆状分布,从而能用欧氏距离进行公平的测量。
浙公网安备 33010602011771号