马氏距离 (马哈拉诺比斯距离) (Mahalanobis distance)

news/2025/3/5 6:01:00/

马氏距离(Mahalanobis distance)是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,表示点与一个分布之间的距离。它是一种有效的计算两个未知样本集的相似度的方法。与欧氏距离不同的是,它考虑到各种特性之间的联系,本文介绍马氏距离相关内容。

欧氏距离的缺点

距离度量在各个学科中有着广泛用途,当数据表示为向量 x → = ( x 1 , x 2 , ⋯ , x n ) T \overrightarrow{\mathbf{x} }=\left(x_{1}, x_{2}, \cdots, x_{n}\right)^{T} x =(x1,x2,,xn)T y → = ( y 1 , y 2 , ⋯ , y n ) T \overrightarrow{\mathbf{y}}=\left(y_{1}, y_{2}, \cdots, y_{n}\right)^{T} y =(y1,y2,,yn)T时,最直观的距离度量就是欧式距离了:

d ( x , y ) : = ( x 1 − y 1 ) 2 + ( x 2 − y 2 ) 2 + ⋯ + ( x n − y n ) 2 = ∑ i = 1 n ( x i − y i ) 2 d(x, y):=\sqrt{\left(x_{1}-y_{1}\right)^{2}+\left(x_{2}-y_{2}\right)^{2}+\cdots+\left(x_{n}-y_{n}\right)^{2}}=\sqrt{\sum_{i=1}^{n}\left(x_{i}-y_{i}\right)^{2}} d(x,y):=(x1y1)2+(x2y2)2++(xnyn)2 =i=1n(xiyi)2

但是这种度量方式没有考虑到各个维度之间的差异和相关等因素,不同的向量度量距离时权重都相同,这可能会对结果可信度产生干扰。

马氏距离

度量样本距离某个分布的距离,先将样本与分布标准化到多维标准正态分布后度量欧式距离

思想

  • 将变量按照主成分进行旋转,消除维度间的相关性
  • 对向量和分布进行标准化,让各个维度同为标准正态分布

推导

  • 分布由 n n n m m m维向量刻画,即共 n n n条数据,每条数据由一个 m m m维向量表示:

X = [ x 11 x 12 ⋯ x 1 n x 21 x 22 x 2 n ⋮ ⋱ ⋮ x m 1 x m 2 ⋯ x m n ] X = \left[ {\begin{array}{c} {{x_{11}}}&{{x_{12}}}& \cdots &{{x_{1n}}}\\ {{x_{21}}}&{{x_{22}}}&{}&{{x_{2n}}}\\ \vdots &{}& \ddots & \vdots \\ {{x_{m1}}}&{{x_{m2}}}& \cdots &{{x_{mn}}} \end{array}} \right] X=x11x21xm1x12x22xm2x1nx2nxmn

  • X X X的均值为 μ X {\mu _X} μX
  • X X X的协方差矩阵为:

∑ X = 1 n ( X − μ X ) ( X − μ X ) T \sum\nolimits_X = \frac{1}{n}(X - {\mu _X}){(X - {\mu _X})^T} X=n1(XμX)(XμX)T

  • 为消除维度间的相关性,通过一个 m × m m \times m m×m的矩阵 Q T Q^T QT X X X进行坐标表换,将数据映射到新的坐标系下,用 Y Y Y表示:

Y = Q T X Y=Q^TX Y=QTX

此时我们期望在 Q T Q^T QT的作用下, Y Y Y 的向量表示中,不同维度之间是相互独立的,此时 Y Y Y 的协方差矩阵应该是一个对角矩阵(除对角线元素外,其余元素均为0)。

  • Y 的均值: u Y = Q T u X u_{Y}=Q^{T} u_{X} uY=QTuX
  • Y 的协方差矩阵:

Σ Y = 1 n [ Y − u Y ] [ y − u Y ] T = 1 n [ Q T ( X − u x ) ] [ Q T ( X − u X ) ] T = Q T 1 n ( X − u X ) ( X − u X ) T Q = Q T Σ X Q \begin{aligned} \Sigma_{Y} &=\frac{1}{n}\left[Y-u_{Y}\right]\left[y-u_{Y}\right]^{T} \\ &=\frac{1}{n}\left[Q^{T}\left(X-u_{x}\right)\right]\left[Q^{T}\left(X-u_{X}\right)\right]^{T} \\ &=Q^{T} \frac{1}{n}\left(X-u_{X}\right)\left(X-u_{X}\right)^{T} Q \\ &=Q^{T} \Sigma_{X} Q \end{aligned} ΣY=n1[YuY][yuY]T=n1[QT(Xux)][QT(XuX)]T=QTn1(XuX)(XuX)TQ=QTΣXQ

  • 从这里可以发现,当 $Q 是 是 \Sigma_{X} 的 特 征 向 量 组 成 的 矩 阵 时 , 的特征向量组成的矩阵时, \Sigma_{Y}$ 一定是对角矩阵,且值为每个特征向量对应的特征值。由于 Σ X \Sigma_{X} ΣX是对称矩阵,因此肯定可以通过特征分解得到 Q Q Q ,且 Q Q Q 是正交矩阵。

  • Σ Y \Sigma_{Y} ΣY的对角线元素含义为 Y Y Y中每个向量的方差,因此均为非负值,从这个角度可以说明协方差矩阵的特征值为非负值。

  • 而且事实上协方差矩阵本身就是半正定的,特征值均非负

  • 不相关与独立的问题:

    • 此处我们说明了变换后的向量之间相关系数为0,也就是向量之间不相关
    • 而事实上独立是比不相关更强的约束,不相关往往不能推出独立
    • 但在高斯分布下,不相关和独立是等价的

接下来我们对向量进行标准化

  • 当我们减去均值后,向量已经变成了0均值的向量,距离标准化仅差将方差变为1

  • 在经历了 Y = Q T X Y=Q^TX Y=QTX变换后, Y Y Y的协方差矩阵已经成为了对角阵,对角线元素为 Y Y Y中各个维度数据的方差,那么我们仅需让 Y Y Y中各个维度数据除以该维度数据的标准差即可。

  • 我们将去相关化、0均值化、标准化过后的数据记为 Z Z Z

    Z = [ 1 σ 1 1 σ 2 ⋱ 1 σ n ] ( Y − μ Y ) = Σ Y − 1 2 Q T ( X − μ X ) = ( Q T Σ X Q ) − 1 2 Q T ( X − μ X ) \begin{aligned} Z &= \left[ {\begin{array}{c} {\frac{1}{{{\sigma _1}}}}&{}&{}&{}\\ {}&{\frac{1}{{{\sigma _2}}}}&{}&{}\\ {}&{}& \ddots &{}\\ {}&{}&{}&{\frac{1}{{{\sigma _n}}}} \end{array}} \right](Y - {\mu _Y}) \\&= \Sigma _Y^{ - \frac{1}{2}}{Q^T}(X - {\mu _X}) \\ &= ({Q^T}{\Sigma _X}Q)_{}^{ - \frac{1}{2}}{Q^T}(X - {\mu _X}) \end{aligned} Z=σ11σ21σn1(YμY)=ΣY21QT(XμX)=(QTΣXQ)21QT(XμX)

  • 而马氏距离就是度量纠正过后的向量 Z Z Z到分布中心(原点)的欧式距离:

D M ( X ) = Z T Z = ( X − u X ) T Q ( Q T Σ X Q ) − 1 2 ( Q T Σ X Q ) − 1 2 Q T ( X − u X ) = ( X − u X ) T Q ( Q T Σ X Q ) − 1 Q T ( X − u X ) = ( X − u X ) T Q Q − 1 Σ X − 1 Q Q T ( X − u X ) = ( X − u X ) T Σ X − 1 ( X − u X ) \begin{array}{l} {D_M}(X) & = \sqrt {{Z^T}Z} \\&= \sqrt {{{\left( {X - {u_X}} \right)}^T}Q{{\left( {{Q^T}{\Sigma _X}Q} \right)}^{ - \frac{1}{2}}}{{\left( {{Q^T}{\Sigma _X}Q} \right)}^{ - \frac{1}{2}}}{Q^T}\left( {X - {u_X}} \right)} \\ &= \sqrt {{{\left( {X - {u_X}} \right)}^T}Q{{\left( {{Q^T}{\Sigma _X}Q} \right)}^{ - 1}}{Q^T}\left( {X - {u_X}} \right)} \\ &= \sqrt {{{\left( {X - {u_X}} \right)}^T}Q{Q^{ - 1}}\Sigma _X^{ - 1}Q{Q^T}\left( {X - {u_X}} \right)} \\ &= \sqrt {{{\left( {X - {u_X}} \right)}^T}\Sigma _X^{-1}\left( {X - {u_X}} \right)} \\ \end{array} DM(X)=ZTZ =(XuX)TQ(QTΣXQ)21(QTΣXQ)21QT(XuX) =(XuX)TQ(QTΣXQ)1QT(XuX) =(XuX)TQQ1ΣX1QQT(XuX) =(XuX)TΣX1(XuX)

参考资料

  • https://baike.baidu.com/item/%E9%A9%AC%E6%B0%8F%E8%B7%9D%E7%A6%BB/8927833?fr=aladdin
  • https://zhuanlan.zhihu.com/p/109100222

http://www.ppmy.cn/news/362324.html

相关文章

mara

修改前 [rootdhcp-0-116 marathon-1.0.6]# ./marathon .java.io.InvalidClassException: invalid field type for classpath in class net.sourceforge.marathon.runtime.JavaRuntimeProfile at java.io.ObjectInputStream.readClassDescriptor(libgcj.so.7rh) at java.io.Obj…

Mahalanobis距离(马氏距离)

Mahalanobis距离(马氏距离) Mahalanobis距离是多维空间中两点相似性的度量,它本身不是聚类或者分类算法。 Mahalanobis距离与Euclidean距离(欧式距离)类似,不过还需除以空间的协方差矩阵。 如果协方差矩…

Maven简介和Maven私服

更多精彩技术分享请浏览本人博客:https://blog.csdn.net/wohiusdashi 目录 1. Maven简介 1.1. 简述 1.2. Maven实现的核心价值 1.3. 定义与缩略语 1.4. 项目构建 1.5. 依赖管理 1.6. maven目录说明 1.7. maven坐标 …

GPIO(General Purpose Input/Output)

GPIO(General Purpose Input/Output)是通用输入输出引脚,可以用来控制和读取数字信号。在使用GPIO时,需要设置其输入或输出模式,其中输入模式又可以分为浮空输入、下拉输入、上拉输入和模拟输入。 1. 浮空输入&#x…

mina 资料

一、基础框架 IoService:IoService相当于是Mina的Socket层,负责所有SocketIO事件的注册,select,分发等。它位于org.apache.mina.core.service包内,它有两个子接口,表示Server端接收方的IoAcceptor和Client发起方的IoConnector&…

Mina介绍

基本介绍: Apache MINA 2是一个开发高性能和高可伸缩性网络应用程序的网络应用框架。它提供了一个抽象的事件驱动的异步API,可以使用TCP/IP、UDP/IP、串口和虚拟机内部的管道等传输方式。Apache MINA 2可以作为开发网络应用程序的一个良好基础。 Mina 的…

mina框架详解

Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(当然,也可以提供JAVA 对象的序列化服务、虚拟机管道通信服务等),Mina 可以帮助我们快速开发高性能、高…

Maven-私服

文章目录 一、私服的概念二、私服的安装与配置三、idea环境中资源上传3.1 上传快照库3.2 上传正式库 四、idea环境中资源下载 一、私服的概念 中央仓库 目前来说: https://repo1.maven.org/maven2/是真正的Maven中央仓库的地址,该地址内置在Maven的源码中其他的都是…