马氏距离(Mahalanobis Distance)

本文介绍马氏距离的基本思想,其数学原理可以参考文末给出的博客链接

马氏距离,是一种距离度量指标,用来评定数据间相似度;类似的距离指标还有欧氏距离、曼哈顿距离、汉明距离等。

与欧氏距离不同的是,它有考虑数据间非独立性(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的)且尺度无关(scale-invariant)。

在这里插入图片描述

马氏距离可以理解为针对欧氏距离的两点改进:

  • 尺度:欧氏距离中是没有考虑尺度对距离的影响的;比如(身高(mm),体重(t))指标,明显身高的微小差距就能导致较大的欧氏距离,体重则不容易影响欧氏距离。尺度问题可以由尺度缩放来解决,其实在“归一化欧氏距离”中就是这么做的,它需要对不同维度数据进行不同尺度的缩放,来消除这种尺度带来的不公平

  • 数据相关性:仔细想想,直接按维度进行缩放,真的能解决问题吗?如果各维度之间存在相关性,而我们只单单就各个维度进行放缩,那结果会不如人意;比如x1和x2维度存在相关性,当你放缩x1维度时,其实已经对x2维度进行了一定的放缩,而你并不知情(因为你已经假设维度间相互独立),然后还傻乎乎地对x2进行原本计划好的放缩,最终导致放缩效果不合理!解决办法就是,利用主成分分析(坐标旋转) 进行去相关,在互相独立地维度上进行放缩操作~
    在这里插入图片描述
    因此,马氏距离中的协方差矩阵 Σ − 1 \Sigma^{-1} Σ1就是用来进行旋转变换和尺度放缩的;并且经过上面的分析,我们可以得知:

    • Σ − 1 \Sigma^{-1} Σ1为单位矩阵,马氏距离退化为欧氏距离;
    • Σ − 1 \Sigma^{-1} Σ1为对角矩阵,马氏距离退化为归一化欧氏距离;

推荐阅读:

  1. 马氏距离于其推导
  2. 马氏距离(Mahalanobis Distance)
### Mahalanobis 距离的概念 Mahalanobis 距离是一种用于衡量两个点之间差异的方法,它考虑了数据分布中的协方差结构。与欧几里得距离不同的是,Mahalanobis 距离能够捕捉到变量之间的相关性以及它们的变化程度[^3]。 具体来说,对于一个多维随机向量 \( \mathbf{x} = (x_1, x_2, ..., x_p)^T \),其均值为 \( \boldsymbol{\mu} = (\mu_1, \mu_2, ..., \mu_p)^T \),协方差矩阵为 \( \Sigma \),那么任意一点 \( \mathbf{y} \) 到均值的距离可以定义为: \[ D_M(\mathbf{y}) = \sqrt{(\mathbf{y} - \boldsymbol{\mu})^T \Sigma^{-1} (\mathbf{y} - \boldsymbol{\mu})} \] 其中,\( D_M(\mathbf{y}) \) 表示点 \( \mathbf{y} \)Mahalanobis 距离。这种度量方式特别适用于检测异常值(outliers),因为它不仅依赖于单个维度上的偏差,还综合考虑了多维空间内的相互关系[^4]。 ### 实现方法 以下是基于 Python 和 NumPy 库的一个简单实现例子: ```python import numpy as np def mahalanobis_distance(y, mu, sigma_inv): """ 计算给定点 y 对应的马氏距离。 参数: y: ndarray, 测试样本的数据点 mu: ndarray, 数据集的均值向量 sigma_inv: ndarray, 协方差矩阵的逆 返回: float, 马氏距离的结果 """ delta = y - mu m_dist = np.sqrt(np.dot(delta.T, np.dot(sigma_inv, delta))) return m_dist # 示例数据 data = np.array([[1, 2], [3, 4], [5, 6]]) point_to_test = np.array([7, 8]) # 计算均值和协方差矩阵及其逆 mean_vector = np.mean(data, axis=0) cov_matrix = np.cov(data, rowvar=False) inv_cov_matrix = np.linalg.inv(cov_matrix) # 使用函数计算马氏距离 distance_result = mahalanobis_distance(point_to_test, mean_vector, inv_cov_matrix) print(f"The Mahalanobis Distance is {distance_result}") ``` 上述代码展示了如何利用已知数据集来估计均值和协方差矩阵,并进一步求解目标测试点相对于这些统计特性的 Mahalanobis 距离[^5]。 ### 结论 通过以上介绍可以看出,在实际应用中,当面对具有复杂关联模式的数据集合时,采用 Mahalanobis 距离往往能提供更为精确有效的分析手段。这尤其体现在诸如异常探测等领域之中[^6]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值