欧氏距离与马氏距离

article/2025/8/30 20:50:59

Preface

  之前在写《Multi-view CNNs for 3D Objects Recognition》的阅读笔记的时候,文章中的一个创新点便是将MVCNN网络提取到的3D Objects的形状特征描述符,投影到马氏距离(Mahalanobis Distance)上,“这样的话,相同类别3D形状之间的ℓ2距离在投影后的空间中就更小,而不同的类别之间的ℓ2在投影后会更大”,也更适用于3D形状的分类与检索。
  后来我沿着这篇文章继续追踪这个马氏距离,发现在2013年BMVC会议上的《Fisher Vector Faces in the Wild》,2008年的PR会议上的《Learning a Mahalanobis distance metric for data clustering and classification》,这两篇文章都使用了马氏距离进行衡量特征向量之间的“远近”。
  因此,我想搞清楚马氏距离以及欧式距离之间的区别。本文是之为记。

Basis

  方差:方差是标准差的平方,而标准差的意义是数据集中各个点到均值点距离的平均值。反应的是数据的离散程度。
  协方差:标准差与方差是描述一维数据的,当存在多维数据时,我们通常需要知道每个维数的变量中间是否存在关联。协方差就是衡量多维数据集中,变量之间相关性的统计量。比如说,一个人的身高与他的体重的关系,这就需要用协方差来衡量。如果两个变量之间的协方差为正值,则这两个变量之间存在正相关,若为负值,则为负相关。
  协方差矩阵,当变量多了,超过两个变量了。那么,就用协方差矩阵来衡量这么多变量之间的相关性。假设 X 是以 n 个随机变数(其中的每个随机变数是也是一个向量,当然是一个行向量)组成的列向量:

X=X1X2Xn

  其中, μi 是第 i 个元素的期望值,即μi=E(Xi)。协方差矩阵的第 i,j 项(第 i,j 项是一个协方差)被定义为如下形式:
ij=cov(Xi,Xj=E[(Xiμi)(Xjμj)])

  即:
=E[(X1μ1)(X1μ1)])E[(X2μ2)(X1μ1)])E[(Xnμn)(X1μ1)])E[(X1μ1)(X2μ2)])E[(X2μ2)(X2μ2)])E[(Xnμn)(X2μ2)])E[(X1μ1)(Xnμn)])E[(X2μ2)(Xnμn)])E[(Xnμn)(Xnμn)])

  矩阵中的第 (i,j) 个元素是 Xi Xj 的协方差。

Mahalanobis Distance & Euclidean Distance

Definition

  马氏距离(Mahalanobis Distance)是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,表示数据的协方差距离。它是一种有效的计算两个未知样本集的相似度的方法。与欧氏距离不同的是它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的)并且是尺度无关的(scale-invariant),即独立于测量尺度。
  对于一个均值为 μ=(μ1,μ2,μ3,...,μp)T ,协方差矩阵为 的多变量 x=(x1,x2,x3,...,xp)T ,其马氏距离为:

DM(x)=(xμ)T1(xμ)

  如果 1 是单位阵的时候,马氏距离简化为欧氏距离。

Why is Mahalanobis distance?

  马氏距离有很多优点,马氏距离不受量纲的影响,两点之间的马氏距离与原始数据的测量单位无关;由标准化数据和中心化数据(即原始数据与均值之差)计算出的二点之间的马氏距离相同。马氏距离还可以排除变量之间的相关性的干扰。
  它的缺点是夸大了变化微小的变量的作用。

  这个stackexchange问答很好的回答了马氏距离的解释:
  下图是一个二元变量数据的散点图:

这里写图片描述

  当我们将坐标轴拿掉,如下图,我们能做些什么呢?
这里写图片描述

   那就是根据数据本身的提示信息来引入新的坐标轴
  坐标的原点在这些点的中央(根据点的平均值算得)。第一个坐标轴(下图中蓝色的线)沿着数据点的“脊椎”,并向两端延伸,定义为使得数据方差最大的方向。第二个坐标轴(下图红色的线)会与第一个坐标轴垂直并向两端延伸。如果数据的维度超过了两维,那就选择使得数据方差是第二个最大的方向,以此类推。
这里写图片描述

  我们需要一个 比例尺度。用数据沿着每一个坐标轴的标准差来定义一个单位长度。要记住 68-95-99.7法则:大约2/3的点需要在离原点一个单位长度的范围内;大约95%的点需要在离原点两个单位的长度范围内;这会使得我们更紧盯着正确的单元。为了以示参考,如下图:
这里写图片描述

  上图并不像是一个圆,对吧?那是因为这幅图是被扭曲的(图中,不同轴上的单位长度不一样)。因此,让我们重新沿着正确的方向画图——从左到右,从下到上( 相当于旋转一下数据)。同时, 并让每个轴方向上的单位长度相同,这样横坐标上一个单位的长度就与纵坐标上的单位长度相同。
这里写图片描述

  这里发生了什么?我们让数据告诉我们怎样去从散点图中构建坐标系统,以便进行测量。这就是上面所要表达的内容。尽管在这样的过程中我们有几种选择(我们可以将两个坐标轴颠倒;在少数的几种情况下,数据的“脊椎”方向——主方向,并不是唯一的),但是这些在最后并不影响距离。

Technical comments

  沿着新坐标轴的单位向量是协方差矩阵的特征向量。

  注意到没有变形的椭圆,变成圆形后沿着特征向量用标准差(协方差的平方根)将距离长度分割。用 C 代表协方差函数,点x,y之间的距离(Mahalanobis distance)就是 x,y 之间以方差的平方根为单位长度所分割产生的长度: C(xy,xy) 。对应的代数式是, (xy)C1(xy) 。这个公式不管用什么基底表示向量以及矩阵时都成立。特别是,这个公式在原始的坐标系中对于Mahalanobis Distance的计算也正确。

  在最后一步中,坐标轴扩展的量是协方差矩阵的逆的特征值(平方根),同理的,坐标轴缩小的量是协方差矩阵的特征值。所以,点越分散,需要的将椭圆转成圆的缩小量就越多。

  尽管上述的操作可以用到任何数据上,但是对于多元正态分布的数据表现更好。在其他情况下,点的平均值或许不能很好的表示数据的中心,或者数据的“脊椎”(数据的大致趋势方向)不能用变量作为概率分布测度(using variance as a measure of spread)来准确的确定。

  原始坐标系的平移、旋转,以及坐标轴的伸缩一起形成了仿射变换(affine transformation)。除了最开始的平移之外,其余的变换都是基底变换,从原始的一个变为新的一个。

  对于多元正太分布,Mahalanobis 距离(已经变换到新的原点)出现在表达式 exp(12x2) x 的位置,描述标准正太分布的概率密度。因此,在新的坐标系中,多元正态分布像是标准正太分布,当将变量投影到任何一条穿过原点的坐标轴上。特别是,在每一个新的坐标轴上,它就是标准正态分布。从这点出发来看,多元正态分布彼此之实质性的差异就在于它们的维度。注意,这里的维数可能,有时候会少于名义上的维数。

  假设数据分布是一个二维的正椭圆,x y 轴均值都为0,x轴的方差为1000, y 轴的方差为1,考虑两个点(1,0),(0,1)到原点的距离,如果计算的是欧氏距离那么两者相等,但是仔细想一下,因为x轴的方差大,所以 (0,1) 应该是更接近中心的点,也就是正态分布标准差的 (68,95,99.7) 原则。这时候需要对 x,y 轴进行缩放,对应的操作就是在协方差矩阵的对角上加上归一化的操作,使得方差变为1.

  假设数据分布是一个二维的椭圆,但是不是正的,比如椭圆最长的那条线是 45° 的,因为矩阵的对角只是对坐标轴的归一化,如果不把椭圆旋转回来,这种归一化是没有意义的,所以矩阵上的其他元素(非对角)派上用场了。如果椭圆不是正的,说明变量之间是有相关性的(x大y也大,或者负相关),加上协方差非对角元素的意义就是做旋转。

这里写图片描述

上图是,一个左下右上方向标准差为 3,正交方向标准差为 1 的多元高斯分布的样本点。由于 x 和 y 分量共变(即相关),x 与 y 的方差不能完全描述该分布;箭头的方向对应的协方差矩阵的特征向量,其长度为特征值的平方根。

Reference

  1. https://en.wikipedia.org/wiki/Mahalanobis_distance
  2. https://zh.wikipedia.org/wiki/%E9%A9%AC%E6%B0%8F%E8%B7%9D%E7%A6%BB
  3. http://blog.csdn.net/lanbing510/article/details/8758651
  4. http://www.zhizhihu.com/html/y2009/261.html
  5. http://stats.stackexchange.com/questions/62092/bottom-to-top-explanation-of-the-mahalanobis-distance
  6. https://www.zybuluo.com/Antosny/note/108773
  7. https://zh.wikipedia.org/wiki/%E5%8D%8F%E6%96%B9%E5%B7%AE%E7%9F%A9%E9%98%B5

http://chatgpt.dhexx.cn/article/HwZKTRLp.shtml

相关文章

马氏距离 Mahalanobis Distance

马氏距离 Mahalanobis Distance 1. 马氏距离定义2. 马氏距离实际意义2.1 欧氏距离近就一定相似?2.2 归一化后欧氏距离就一定相似?2.3 算上维度的方差就够了? 3. 马氏距离的几何意义4. 马氏距离的推导5. 马氏距离限制 Reference: 马氏距离(Mah…

马氏距离概念

马氏距离 一、基本概念: 方差:方差是标准差的平方,而标准差的意义是数据集中各个点到均值点距离的平均值。反应的是数据的离散程度。 协方差:标准差与方差是描述一维数据的,当存在多维数据时,我们通常需要知…

马氏距离通俗理解

基础知识: 假设空间中两点x,y,定义: 欧几里得距离, Mahalanobis距离, 不难发现,如果去掉马氏距离中的协方差矩阵,就退化为欧氏距离。那么我们就需要探究这个多出来的因子究竟有什么含…

马氏距离Mahalanobis Distance实例

简介 如果按照欧氏距离去理解马氏距离,一定会迷惑一段时间。因为欧氏距离可以计算两个点之间的距离,而马氏距离是计算一个点距离一个聚类的距离。如果想通过马氏距离去计算某两个点之间的距离是行不通的。下面按照一般的套路介绍一下欧氏距离与马氏距离…

马氏距离详解

马氏距离详解 一、理性认知二、感性认知第一个例子第二个例子 三、实例认知四、公式推导推导过程 致谢 一、理性认知 马氏距离(Mahalanobis distance)是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,表示点与一个分布之间的距离。它是一种有效的计算两个未…

马氏距离(Mahalanobis Distance)

马氏距离(Mahalanobis Distance)是度量学习中一种常用的距离指标,同欧氏距离、曼哈顿距离、汉明距离等一样被用作评定数据之间的相似度指标。但却可以应对高维线性分布的数据中各维度间非独立同分布的问题。 什么是马氏距离 马氏距离(Mahalanobis Distance)是一种距离的度量,…

马氏距离详解(数学原理、适用场景、应用示例代码)

看了很多关于马氏距离(Mahalanobis Distance)的介绍,但是总感觉有一些地方不太清晰,所以结合数学公式、机器学习中的应用案例,从头梳理一下。 马氏距离实际上是欧氏距离在多变量下的“加强版”,用于测量点…

linux 配置swoole环境

linux 配置swoole环境 安装PHP wget http://mirrors.linuxeye.com/oneinstack-full.tar.gz && tar xzf oneinstack-full.tar.gz && ./oneinstack/install.sh --php_option 6 --phpcache_option 1 --reboot vim /usr/local/php/etc/php.ini 删除对exec函数…

ppp开启pap/chap认证

什么是pap? PAP 是 PPP 协议集中的一种链路控制协议,通过2次握手建立认证,对等结点持续重复发送 ID/ 密码(明文)给验证者。 什么是chap? CHAP通过三次握手验证被认证方的身份,在初始链路建立…

Ensp配置PPP CHAP认证

如图配置IP地址 启用 CHAP 认证&#xff0c;用户名/密码为&#xff1a;HuaWei/123456 确保RAR20-A和RAR20-B之间可以互通 按照如下步骤进行。 1&#xff09;配置IP地址&#xff0c;确保设备互通 <Huawei>system-view [Huawei]sysname RAR20-A [RAR20-A]in…

思科模拟器启用CHAP协议

chap使用密文格式发送chap认证信息&#xff0c;相比较pap的明文格式&#xff0c;更具有安全性。 添加s端口&#xff1a;先将路由器关闭&#xff0c;将HWIC-2T模块拖入卡槽&#xff0c;再将路由器开启 单向CHAP&#xff1a;R2为认证方 R1&#xff1a; hostname R1 …

H3C(27)——PAP与CHAP

1.PAP的单向认证 【R1】 <RouterA> system-view[RouterA] local-user userb class network [RouterA-luser-network-userb] password simple passb [RouterA-luser-network-userb] service-type ppp [RouterA-luser-network-userb] quit[RouterA] interface serial 1/0 …

ppp的chap认证报文原理以及细节

ppp的chap认证报文原理 chap认证&#xff1a; 1.验证方&#xff08;存有本地数据库的一方&#xff09;主动向被验证方发送一个挑战报文&#xff0c;里面包含报文id&#xff0c;随机数&#xff0c;本端用户名&#xff08;默认单向认证不带&#xff09;。 2.被验证方收到挑战请求…

Cisco(56)——PAP和CHAP

说明:R1,R3,R5,R7,R9的S1/1的地址为1.1.1.1/24,R2,R4,R6,R8,R10的S1/1的地址为1.1.1.2/24,实验步骤省略配置hostname和IP地址的过程! 一:PAP的单向认证,R1为认证方 R1(config)#username R2 password 0 123R1(config)#interface serial 1/1 R1(config-if)#encapsulation …

ppp协议(pap和chap验证模式)拓扑(eNSP)

一&#xff0e;基本配置 新建拓扑 ①添加路由&#xff1a;添加两个Axaioxia_2220路由到拓扑图上 ②改标签名&#xff1a;其标签名称默认为Axiaoxia_1与Axaioxia_2&#xff0c;双击“Axiaoxia_1与Axaioxia_2”手动改为自己需要的名, 我改为“xiaoxia_1与xiaoxia_2” ③添加…

PAP与CHAP认证

一、PPP介绍 PPP&#xff08;point-to-point protocol&#xff09;是一种点到点链路层协议&#xff0c;主要用于在全双工的同异步链路上进行点到点的数据传输。##在PPP中主要由三类协议簇组成 1、链路控制协议簇&#xff08;Link Control protocol&#xff09;&#xff1a;主要…

pap认证和chap认证实验

目录标题 第一步&#xff1a;在r5上配置环回和s3/0/0接口地址&#xff0c;及pap认证&#xff08;主认证&#xff09;第二步&#xff1a;在r1上配置接口&#xff0c;pap认证&#xff08;被认证方&#xff09;第三步&#xff1a;在r5上配置s3/0/1接口&#xff0c;chap认证&#x…

PPP原理 PAP认证 CHAP认证

目录 PPP的基本构架 PPP主要由三类协议族组成 PPP应用场景 PPP缺省配置 配置PAP认证 操作步骤 配置认证方 配置被认证方 配置CHAP认证 操作步骤 配置认证方 配置被认证方 认证方没有配置用户名 配置被认证方 PPP的基本构架 PPP协议处于TCP/IP协议栈的数据链路层&…

思科模拟器入门基础-PPP协议双向CHAP认证

PPP&#xff1a;点对点协议 是一种用来同步调制连接的数据链路层协议 具有身份验证功能(PAP、CHAP)、动态分配IP地址的能力、错误检测能力 CHAP&#xff1a;PPP协议认证的一种方式 CHAP使用密文传输 使用三次握手实现 比PAP安全性高 实验环境 Cisco Packet Tracer 6.02台PT路由…

PAP认证、CHAP认证

概述 实验目标 掌握PAP、chap认证方式的配置与验证方法 实验描述 路由器&#xff08;带串口&#xff09; 2 台V.35 线缆&#xff08;DTE/DCE&#xff09; 1 对 2技术分析 PPP 协议位于 OSI 七层模型的数据链路层&#xff0c;PPP 协议按照功能划分为两个子层&#xff1a;LCP…