【知识学习】马氏距离 Mahalanobis Distance

2023-11-09

目录

1. 协方差的意义

2. 马氏距离

2.1 概述

2.2 公式

2.3 实际意义

2.4 局限性

2.4.1 协方差矩阵必须满秩【不平衡数据少数类一般都不是】

2.4.2 不能处理非线性流形(manifold)的问题【线性流形和非线性流形,特征选择是线性降维吗】

2.5 优点

3. 思考

4. Reference


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

1. 协方差的意义

协方差就是衡量多维数据集中,变量之间相关性的统计量。比如说,一个人的身高与他的体重的关系,这就需要用协方差来衡量。如果两个变量之间的协方差为正值,则这两个变量之间存在正相关,若为负值,则为负相关。

  • 当其大于0时,表明X与Y正相关;
  • 当其小于0时,表明X与Y负相关;
  • 当其等于0时,表明X与Y不相关;

2. 马氏距离

2.1 概述

马氏距离(Mahalanobis Distance)是由马哈拉诺比斯(P. C. Mahalanobis)提出的,表示数据的协方差距离。马氏距离(Mahalanobis Distance)是一种距离的度量,可以看作是欧氏距离的一种修正,修正了欧式距离中各个维度尺度不一致且相关的问题。它是一种有效的计算两个未知样本集的相似度的方法。与欧氏距离不同的是它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的)并且是尺度无关的(scale-invariant),即独立于测量尺度。【考虑特征之间的相关性有什么意义呢】

2.2 公式

对于一个均值为,协方差矩阵为的多变量矢量,其马氏距离为。

马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为的随机变量X和Y的差异程度或者数据点x和y之间的马氏距离。

2.3 实际意义

先举个比较常用的例子,身高和体重,这两个变量拥有不同的单位标准,也就是有不同的scale。比如身高用毫米计算,而体重用千克计算,显然差10mm的身高与差10kg的体重是完全不同的。但在普通的欧氏距离中,这将会算作相同的差距【如果说归一化之后还会有影响吗】

当然我们可以先做归一化来消除这种维度间scale不同的问题,但是样本分布也会影响分类。举个一维的栗子,现在有两个类别,统一单位,第一个类别均值为0,方差为0.1,第二个类别均值为5,方差为5。那么一个值为2的点属于第一类的概率大还是第二类的概率大?距离上说应该是第一类,但是直觉上显然是第二类,因为第一类不太可能到达2这个位置。所以,在一个方差较小的维度下很小的差别就有可能成为离群点。就像下图一样,A与B相对于原点的距离是相同的。但是由于样本总体沿着横轴分布,所以B点更有可能是这个样本中的点,而A则更有可能是离群点【其实不是很理解QAQ】

还有一个问题——如果维度间不独立同分布,样本点一定与欧氏距离近的样本点同类的概率更大吗?【就是说欧氏距离同类的概率不一定大】

可以看到样本基本服从f(x) = x的线性分布,A与B相对于原点的距离依旧相等,显然A更像是一个离群点。即使数据已经经过了标准化,也不会改变A B与原点间距离大小的相互关系。所以要本质上解决这个问题,就要针对主成分分析中的主成分来进行标准化。【为什么会涉及到主成分分析中的主成分啊】

2.4 局限性

2.4.1 协方差矩阵必须满秩【不平衡数据少数类一般都不是】

里面有求逆矩阵的过程,不满秩不行,要求数据要有原维度个特征值,如果没有可以考虑先进行PCA,这种情况下PCA不会损失信息。

2.4.2 不能处理非线性流形(manifold)的问题【线性流形和非线性流形,特征选择是线性降维吗】

只对线性空间有效,如果要处理流形,只能在局部定义,可以用来建立KNN图。

2.5 优点

不受量纲的影响,两点之间的马氏距离与原始距离的测量单位无关;由标准化数据和中心化数据(即原始数据与均值之差)计算出的二点之间的马氏距离相同。马氏距离还可以排除相关性的干扰。

3. 思考

(1)首先,为什么用马氏距离?

利用马氏距离排除变量之间相关性的干扰,更好的计算点与类之间的距离,分类更精确

(2)会出现什么问题?

数据过采样的话,需要计算距离的样本更多的是处于少数类中,又是特征选择问题,其实很容易出现特征数大于样本数的情况,此时,协方差如何计算?

(3)非线性流形是什么意思?排除变量之间的干扰与不适用非线性流形之间是否矛盾?

4. Reference

马氏距离(Mahalanobis Distance)_意念回复的博客-CSDN博客_马氏距离
降维方法总结(线性与非线性)_rederchen的博客-CSDN博客_线性降维和非线性降维的区别

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【知识学习】马氏距离 Mahalanobis Distance 的相关文章

随机推荐

  • 【IAP】IAP在线升级流程

    IAP 全称是 In Application Programming 中文解释为 在程序中编程 不同于ISP通过设置MCU内部的BootLoader程序引导烧写或者是ICP通过SWD JTAG在线仿真烧写 IAP是一种对通过微控制器的对外接
  • Java高并发之锁总结、常见的面试问题

    1 锁的分类 乐观锁与悲观锁 悲观锁 对共享数据进行访问时 悲观锁总是认为一定会有其他线程修改数据 如果不加锁 肯定会出问题 因此 悲观锁无论是否出现共享数据的争用 在访问数据时都会先加锁 Java中同步互斥都是采用这种悲观的并发策略 sy
  • HTTP协议接口

    主要特点 1 支持客户端 服务器模式 客户端向服务器请求服务时 只需传送请求方法和路径 常见的请求方法有GET POST 2 简单 3 灵活 HTTP允许传输任意类型的数据对象 正在传输的类型由ContentType加以标记 4 无连接 限
  • 「高并发业务必读」深入剖析 Java 并发包中的锁机制

    故事 程序员小张 刚毕业 参加工作1年左右 日常工作是CRUD 架构师老李 多个大型项目经验 精通各种屠龙宝术 小张和老李一起工作已有数月 双方在技术上也有了很多的交流 但是却总是存在一些争议 这一天 在公司年会上 他们两个意外地坐到了同桌
  • 单链表按照指定顺序插入节点(思路分析) [数据结构][Java]

    单链表按照特定顺序插入节点 思路分析 这里我们要实现在自定义的英雄链表中添加英雄时 根据排名将英雄插入到指定位置 如果有链表中已经有这个排名了 那么就添加失败 并且给出提示 思路分析 首先找到待添加结点位置的前一个位置 涉及到遍历 所以是通
  • python中导入TXT时,使用split()分割文本时,出现错误ValueError: not enough values to unpack (expected 2, got 1)

    Python中使用str split 时 一般都会有两个参数 比如 role words str split 1 注意split的 它必须和str中的冒号 str中必须有冒号 否则就会报错 都是同一种冒号 要么是英文半角 要么是中文冒号 如
  • easyx图形库-----贴图技巧之透明贴图与位运算(与运算、或运算、异或运算)

    目录 位运算 1 与运算 2 或运算 3 异或运算 2 图形库颜色位运算与透明贴图实现 相关操作码 透明贴图的实现 我们都知道电脑的系统处理方式都是以二进制去处理的 每一个数据的背后都是二进制数字0跟1表示 那么这一期我就来介绍怎么去利用二
  • MFC 菜单 menu

    在网上看了怎样制作一个菜单 往往说的内容很多 但自己还是没看懂 今天看了一个公司前人写的一个程序 原来这么简单 给大家分享一下 就用一个基于对话框的MFC程序为例吧 首先 新建一个菜单 点击resource Dialog 右击insert
  • 视觉SLAM实践入门——(20)视觉里程计之直接法

    多层直接法的过程 1 读图 随机取点并计算深度 2 创建图像金字塔 相机内参也需要缩放 并计算对应点的像素坐标 3 应用单层直接法 使用G N L M等方法 或者使用g2o ceres库 进行优化 源码中有一些地方会引起段错误 修改方法见下
  • 嵌入式单片机基础篇(三十一)之Stm32F103与WiFi模块ESP8266 Station模式控制LED灯程序

    Stm32F103与WiFi模块ESP8266 Station模式控制LED灯程序 include stm32f10x h include string h include stdio h unsigned char UARTbuff 10
  • 富文本编辑器wangEditor的使用(即学即用)

    介绍 wangEditor 是一款基于JavaScript和CSS开发的Web富文本编辑器 其具有轻量级 简洁 易用的特点 当然 市面上有许多别的富文本编辑器 各有特点 本文专注于介绍wangEditor这一款富文本编辑器 首先明确一点 什
  • (三)目标检测之 R-CNN系列

    目标检测之 R CNN系列 前言 R CNN系列 一 R CNN https arxiv org abs 1311 2524 二 Fast R CNN https arxiv org abs 1504 08083 三 Faster R CN
  • 调用关卡蓝图上的接口函数

    本片博客实现的是不同蓝图之间用接口实现通信 下面用附上新建蓝图接口的大体步骤和实现的蓝图逻辑 新建蓝图接口 在蓝图接口里面新建函数 在关卡蓝图里面实现函数 如下图所示 然后在控件蓝图里面调用该接口 具体实现如下图
  • 加快android编译速度

    一 修改运行内存 进入项目 菜单栏 help Edit Custom VM Option Paste Image png 添加或修改为 Xms2048m Xmx2048m XX MaxPermSize 2048m XX ReservedCo
  • 数据可视化实例阅读分析

    一 任务要求 从教材或网络上找一个可视化实例 简要分析该实例 要求 1 根据可视化图反推出该图所依据的数据表并绘出 指出表中各列数据的属性 即类型 N O Q型 5分 2 找出可视化图形中的所有视觉变量 3分 3 分析从数据属性到视觉变量的
  • 使用haproxy 配置rabbitmq消息队列主从

    1 创建haproxy的配置文件 sudo vi etc haproxy ha rabbit conf 2 配置前向业务访问frontend 前置代理 bind 0 0 0 0 5672 绑定0 0 0 0的5672端口 mode tcp
  • 博物馆(展览馆)RFID信息化建设管理方案

    项目概述 基于博物馆 展览馆 RFID信息化建设管理方案 博物馆是征集 典藏 陈列和研究代表自然和人类文化遗产的实物的场所 并对那些有科学性 历史性或艺术价值的物品进行分类 为公众提供知识 教育和欣赏的文化教育机构 建筑物 地点或社会公共机
  • openresty ngx_lua定时任务

    openresty ngx lua定时任务 ngx timer every https github com openresty lua nginx module ngxtimerevery ngx timer at https githu
  • No implementation found for void java接口不能跳转到实现类

    No implementation found for void 前两天idea还是好的 现在就是不能跳转到impl实现类 总是提示no implementation found for void 后来通过百度发现 其实是idea的缓存在作
  • 【知识学习】马氏距离 Mahalanobis Distance

    目录 1 协方差的意义 2 马氏距离 2 1 概述 2 2 公式 2 3 实际意义 2 4 局限性 2 4 1 协方差矩阵必须满秩 不平衡数据少数类一般都不是 2 4 2 不能处理非线性流形 manifold 的问题 线性流形和非线性流形