我是靠谱客的博主 自然发箍,最近开发中收集的这篇文章主要介绍马氏距离,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1马氏距离



马氏距离是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,是欧氏距离的一种推广。它通过协方差来计算两点之间距离,是一种有效的计算两个未知样本集的相似度的方法。与欧氏距离不同的是它考虑到各种特性之间的相关性。先上两个图看下马氏距离与欧氏距离的区别。



上图左为欧氏距离,A和B到mu是一样的距离,上图右为马氏距离,A和B到mu也是一样的距离,这说明马氏距离的计算中考虑了在不同方向上尺度单位是不同的。比如机器学习中,不同特征之间的数据光看数值是没有意义的,需要结合量纲,而每个特征又具有很多量纲,比如身高的单位可以是厘米,也可以是米。那么不同特征之间该如何合理地统一处理呢?

马氏距离是在统计学中提出的,与多元高斯分布具有紧密联系。首先回顾一下概念,多元随机变量记为X=[x_1,x_2,...,x_D]^T,mu为均值向量,Sigma为协方差矩阵, 那么多元高斯分布N(mu,Sigma)为,
其中协方差矩阵的逆包含了正交(旋转、反射)和缩放(具体参见下文),下图是一个二维的例子,首先将(X-mu)旋转到与x_1平行,再分别沿两个轴缩放,即变换成新的矢量,求它的欧氏长度平方,乘以-0.5得到exp[ ]里面部分。
而马氏距离就是exp[ ]里面部分,具体定义如下,
它自然是满足距离的三个条件的。假设多元随机变量X和Y属于同一个高斯分布N(mu, Sigma),则它们之间的马氏距离定义类似,只要将上式中的mu改成Y。学过微分几何的童鞋看着这个式子应该会想到啥,这里协方差矩阵的逆可以看成一个度量张量,只是这里这个张量在整个域上都是一样的,不象一般流形那样可以处处不同。

如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧式距离,如果协方差矩阵为对角阵,则其也可称为标准化的欧氏距离,即
此时表示X和Y是独立的,那么当X和Y有一定相关性时该如何计算呢,马哈拉诺比斯1936年发表的论文里正是将上面独立情况推广到一般情况时引出了马氏距离。协方差矩阵考虑了它们之间的相关性,那么这里逆矩阵到底有什么几何意义呢。

2几何解释



为了更好地揭示马氏距离的几何意义,先对协方差矩阵作奇异值分解(SVD),因为协方差矩阵对称,所以就等价于特征值分解,同时也得到协方差矩阵的逆矩阵。也可以用别的分解,比如Cholesky分解等,但是SVD和特征值分解有个好处就是正交和缩放分离,更能显义。分解后得到,
此时,马氏距离为,



相当于对X-mu作了旋转或旋转反射变换(矩阵U是正交矩阵,根据行列式正1或负1分为两种变换)得到Y,即
再对Y的分量分别作缩放,具体就是除以相应的特征值,其实这里的结果就是变换为标准正态分布,即Y~N(0,1)。下面是相对上面这些变换的图解,图中可以看出,计算马氏距离时先用矩阵U^T去变换(X-mu)(第二个图,简单点就当旋转(X-mu)吧),再对不同量纲的特征作统一量纲处理(第三个图,标准化变成单位方差),再计算相应的欧氏距离,最后的效果相当于第四个图。这里图二、图三和图四上的坐标已经不是x了。
 




一般来说,马氏距离排除了量纲的影响,具有尺度无关性,即与数据的测量单位无关;同时也排除了特征之间相关性的干扰。



3离散形式



马氏距离是从多元高斯分布引出的,如果不是退化的情况,这里Sigma矩阵自然是可逆的,但是实际应用中,有时并不知道分布,那么这个矩阵哪里来?假设数据矩阵为X,即每行表示一次采样数据,每列对应一个特征,设总共N行,D列,即总共有N个D维的数据,一般需要N>D,否则下面的协方差矩阵矩阵将不可逆。此时协方差矩阵为,
一般不直接对它作SVD分解,而是对X作SVD分解,然后计算协方差矩阵以及相应的逆矩阵,
注意,这里得到的协方差矩阵也未必是可逆的,相当于退化的高斯分布,说明数据维度有冗余。

4应用举例



最典型的就是根据距离作判别问题,即假设有n个总体,计算某个样品X归属于哪一类的问题。此时虽然样品X离某个总体的欧氏距离最近,但是未必归属它,比如该总体的方差很小,说明需要非常近才能归为该类。对于这种情况,马氏距离比欧氏距离更适合作判别。比如下图表示男女两类身高和体重的采样数据,假如男和女先验分布已知,可以用马氏距离判别新的数据。

5思考一下



1、实际应用中,协方差矩阵由离散数据计算而来,如果数据矩阵X(X^TX)的有些奇异值(特征值)为0,说明什么?该如何处理?

2、Sigma^-1的奇异值非零但非常小,那么会引起数值稳定性问题,该如何处理?

3、马氏距离有什么缺点?

4、试想马氏距离的推广,最简单的比如加权。

提示

比如通过PCA处理,将对应小特征值的特征丢弃是不是可以改善一下某些问题。或者通过如下方式改善,
以上只是本小组对相关概念的粗糙理解,由于水平有限,不够严密甚至错误之处在所难免,希望大家指出来,写出来一方面也是想多听听别人的想法和高见,不断提高自己。

最后

以上就是自然发箍为你收集整理的马氏距离的全部内容,希望文章能够帮你解决马氏距离所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部