本文介绍马氏距离(Mahalanobis Distance),经过本文,你将了解到马氏距离的含义、马氏距离与欧式距离的比较以及一个经过马氏距离进行异常检测的例子(基于Python的sklearn包)。html
计算两个样本间的距离时,须要考虑样本所在的分布形成的影响。影响包括两个方面:web
当数据的分布已知时,咱们一般会用马氏距离代替欧氏距离,或者选择另外一种方法:对数据进行转换(如PCA)。app
下面是一个二维空间中距离度量的例子(戳这里查看实例来源)。ide
图中,圆圈表示样本分布的中心点 ,两个叉分别表示两个样本点 ,从图中能够看出,在二维空间中两个叉到样本分布的中心点间的欧氏距离相等。可是很明显,绿叉应该是分布内的点,红叉是分布外的点,因此绿叉距离分布中心点的距离应该更近才合理。svg
使用马氏距离,就等同于经过数据转换的方法,消除样本中不一样特征维度间的相关性和量纲差别,使的欧式距离在新的分布上能有效度量样本到分布间的距离。spa
第一步,端详一下原始数据分布的特色。
这些样本的特征维度即为横坐标轴和纵坐标轴,且两个特征维度呈现明显的正相关性。orm
第二步,消除不一样维度之间的相关性。
消除特征维度间的相关性后,样本分布图以下所示,还存在的一个问题是两个特征维度间的量纲不一致。xml
通过以上三步,如今的样本分布下,样本间的距离能够用欧氏距离来衡量。htm
马氏距离消除了样本不一样维度之间的方差差别和相关性,是一个无量纲的度量方式。blog
实例来自sklearn官方文档