马氏距离与协方差矩阵

一些介绍马氏距离比较好的文章:

这里主要做一个补充


欧氏距离:直接反映距离的一个度量,适用于独立同分布的数据

对于独立但不同分布的数据,一般对每一个维度数据做归一化处理以消除分布的影响,比如对 \(x_i\)\(x_i = \frac{x_i - u_i}{\sigma_i}\) ,其中 \(u_i,\sigma_i\) 分别是数据 \(x_i\) 的均值和方差,这就可以将每一个维度的数据归一化为同分布。(假设各维度数据分布类型是一致的)这也称为 归一化欧氏距离(或标准化欧氏距离)

但它没有考虑不同维度间数据之间的关系,这就是马氏距离做的事情:先消除各维度之间的线性关系,使得各个维度独立,然后将每个维度数据归一化,最后计算欧式距离。

马氏距离 表达式如下: \[ \begin{align} D_M &= [(\pmb{x-u})^T\Sigma^{-1}(\pmb{x-u})]^{\frac{1}{2}} \\ D_M &= [(\pmb{x-y})^T\Sigma^{-1}(\pmb{x-y})]^{\frac{1}{2}} \end{align} \]

其中 \(\pmb{u}\) 为均值向量


协方差 反映的 数据集 \(X \in R_{n\times m}\) 表示数据有 \(n\) 个维度,\(m\) 个样本,可以表示如下: \[ \Sigma = \frac{1}{m-1}\Sigma_{j=1}^{m} (\pmb{x}_j - \overline{\pmb{x}})(\pmb{x}_j - \overline{\pmb{x}})^T \] \(\pmb{x}_j\) 为第 \(i\) 列,即第 \(i\) 个样本,具体推导见:协方差与协方差矩阵 - 苦力笨笨 - 博客园 (cnblogs.com)


前面提到马氏距离是先对各维度独立化,然后归一化(标准化),最后计算欧式距离

其中,独立化代表旋转,标准化代表缩放(消除量纲、尺度影响)。下面是对它为什么可以做到旋转缩放的理解:

协方差矩阵为 实对称矩阵,它必定可以对角化: \[ \Sigma = R S R^T \] 其中 \(R\) 为正交阵(单位正交阵),正交阵的含义就是一个旋转操作而对角阵 \(S\) 代表了缩放操作,有: \[ \begin{align} (RSR^T)^{-1} &= R^{-T}S^{-1} R^{-1}\\ &= R S^{-\frac{1}{2}} S^{-\frac{1}{2}}R^T \end{align} \] 代入马氏距离表达式有: \[ \begin{align} D_M &= [(\pmb{x-u})^T\Sigma^{-1}(\pmb{x-u})]^{\frac{1}{2}} \\ &= [(\pmb{x-u})^T(RSR^T)^{-1}(\pmb{x-u})]^{\frac{1}{2}} \\ &= [(\pmb{x-u})^TR S^{-\frac{1}{2}} S^{-\frac{1}{2}}R^T(\pmb{x-u})]^{\frac{1}{2}} \\ &= [(S^{-\frac{1}{2}}R^T\pmb y)^T(S^{-\frac{1}{2}}R^T\pmb y)]^\frac{1}{2} \\ &= [(S^{-\frac{1}{2}}R^{-1}\pmb y)^T(S^{-\frac{1}{2}}R^{-1}\pmb y)]^\frac{1}{2} \end{align} \] 其中 \(\pmb y = \pmb{x-u}\) 考虑: \[ \begin{align} \pmb z &= S^{-\frac{1}{2}}R^{-1} \pmb y \\ \pmb y &= RS ^{\frac{1}{2}} \pmb z \end{align} \]

其中 \(\pmb z\) 为旋转缩放后,各维度独立、归一化后的数据,\(\pmb y\) 为原始维度空间的数据。这样原始维度空间独立化和标准化就十分清楚了,\(\Sigma ^{-1}\) 就是独立、归一化数据变换到原始数据的逆。

对角阵 \(S^{\frac{1}{2}}\) 就是维度独立化后的数据的标准差矩阵,取逆就是数据归一化操作。


注意上面认为协方差矩阵是可逆的,马氏距离只对线性空间有效,协方差是线性关系的刻画,可能是因为期望的计算本身就是一个线性操作。