工程上的很多问题,比如最经典的最小二乘法、聚类问题、分类问题、视觉中的立体匹配以及图像检索等等,都要涉及到比较两个向量或者集合或者概率分布的相似程度,而比较相似程度又可以转化为比较它们之间两两的距离,距离越近,相似程度越高。针对不同的问题,研究人员提出了不同的相似度衡量标准。首先不得不说的,就是由范数而来的几种距离度量。平时接触最多的就是L0,L1,L2和L_infinity范数:L0范数即向量中非零元素的个数;L1范数即向量各元素绝对值之和;L2范数最常见,是向量各元素平方和的平方根,又叫Euclidean范数;L_infinity范数是指向量中绝对值最大的那个元素的绝对值,在CV的多视角几何中有着比较广泛的应用,有篇paper推荐:Multiple-View Geometry under the L_infinity-Norm,发表在TPAMI上,作者是计算机视觉经典书籍MVG的作者Richard Hartley。这几种范数,除了L0范数,都可以对应一种空间上的距离表达。

1、L1范数和曼哈顿距离

用L1范数来表达距离,就是曼哈顿距离(Manhattan Distance),这也是我们日常生活中最常接触的一种距离表达。比如就像这个地图上显示的(图1),我们要从肇嘉浜路地铁站到复旦大学附属眼耳鼻喉科医院,蓝色路线是理论上的最近路线,也就是我们从小就知道的两点之间线段最短。但是我们都知道,实际上这是不可行的,我们能选择的路线其实是红色网格线中不同路线的组合。

所以,如果近似地将这个地图放入到我们熟知的直角坐标系中(图2),以肇嘉浜路地铁站作为坐标原点,那么从肇嘉浜路地铁站到复旦大学附属眼耳鼻喉科医院的距离,实际上是医院的横纵坐标之和。如果把医院的坐标看成是一个二维向量(X,Y),那么横纵坐标之和就是向量元素的绝对值之和,也就是L1范数的定义。那么这个将横纵坐标相加得到的距离,就是曼哈顿距离。因为我们都知道,曼哈顿的街道几乎是严格的横平竖直(图3),规划非常整齐,所以用曼哈顿距离来定义这个L1范数的距离度量是再合适不过了。

2、L2范数和欧氏距离

用L2范数来表达距离,就是欧几里德距离(Euclidean Distance),又叫欧式距离,这是我们从小学一开始就建立的距离概念,也就是空间中两点连线的距离。很显然,之前那个例子中,图1蓝色的路线表示的就是L2距离。这在现实中几乎是不可能的,但是在工程领域,L2距离的应用非常广泛,在衡量距离的时候,大多数人的第一反应都是L2距离。当然L2距离的缺陷也很显著,接下来在介绍马氏距离的时候会提到。

3、 L_infinity范数和切比雪夫距离

用L_infinity来表达距离,就是切比雪夫距离(Chebyshev Distance)。 在二维空间的一个例子就是国际象棋,图4来自百度百科。。。每个格子里的数字就代表了该格子到国王所处位置(f6)的切比雪夫距离。比如说,从国王(f6)到图中的红框位置(d2)至少需要走几步呢,这个切比雪夫距离就代表了至少需要的步数。

可以将三种距离放到一起对比一下:对于二维向量a=(x, y),假设它到原点的曼哈顿距离,欧氏距离和切比雪夫距离都是1,即,那么所有向量a构成的集合是什么样的呢?如图5所示,L_infinity范数覆盖的区域最大。

4、p范数和闵可夫斯基距离

以上的各种范数和距离还可以归纳到一起,总结成一个很好的形式(感觉数学和物理很多时候都是在对之前的研究进行总结,很多看起来不一样的东西都可以归结成一个统一的形式,比如TBBT中Sheldon研究的弦理论,就是为了把基本粒子和四种相互作用力统一起来),那就是p范数和闵可夫斯基距离(Minkowski Distance)。公式显示不出来,p范数的定义只好粘一个图片了。可以看到,当p取不同值的时候,p范数就变成了不同的范数: p=1,L1范数;p=2,L2范数;p趋向无穷,就是L_infinity范数。

还有一个图做的很好,引用过来(来源http://www.cnblogs.com/daniel-D/p/3244718.html)。这个图就表达了随着p的变化,二维向量a组成的集合的变化,当p=1, 2和无穷时,就是图5所示的样子。

5、马氏距离

以上这一类,都是由范数而来的距离度量。之前提到L2距离的缺陷,其实也是闵可夫斯基距离的缺陷,那就是没有考虑向量各维度之间的关系,比如量纲的问题。举个例子:统计一群人的身高、体重和鞋码,其中身高的单位是米(m),体重单位是千克(kg),而鞋码的单位是厘米(cm)。可以想象,身高数据基本在1.5~1.9m的范围内,体重数据在40~80kg左右,鞋码基本上是20~30cm,三个维度数据相差的还是比较大的。如果更夸张一点,体重单位用克的话,那么体重和身高数据相差的就更大了。这样一来,在用闵式距离计算的时候,数值较大的维度会对距离影响较大,导致各维度对距离的贡献不均衡,那么距离衡量就可能出现偏差。如果还是想利用L2距离的话,就要考虑使用标准化的L2距离,也就是将各个维度都减去均值,除以标准差,使之变成0均值,1标准差,这样一来就消除了量纲的影响。可是再进一步,如果每个维度之间有所关联,并不是完全独立的呢?比如还是身高、体重和鞋码。一般来讲,身高高的人体重和鞋码也会比较大,这样三个数据维度之间就是有联系的。为了体现这种联系,我们在计算距离的时候就要考虑数据维度之间的统计特性,不能像闵式距离一样,假设各维度是统计独立的。所以,就有了马氏距离。

先上个公式。公式中的x和μ就是要比较的两个向量,Σ是协方差矩阵。可见,马氏距离跟欧式距离相差了一个协方差矩阵,这个协方差矩阵就引入了各维度之间的统计关系:矩阵元素λij代表了第i个维度和第j个维度之间的协方差,也就是相关性,对角元素就是各维度的方差。

注:到这个Σ用的是逆。可以想象,如果Σ非对角元素都是零,就表示各维度之间没有关联,是统计独立的;再如果Σ对角元均为1,那么Σ就是一个单位阵,就说明各维度之间量纲的关系没有考虑,这个距离就是L2距离,公式上也就转化成了L2距离;如果Σ对角元不相等,Σ是一个一般的对角阵,也就是不同维度除了一个不同的值,那么就说明这个距离是标准化的欧式距离。

所以综上,闵式距离是L2距离在范数层面上的一般化,马氏距离算是考虑了统计关系后,L2距离在统计意义上的一般化。

6、其他相似性度量和距离

接下来还有几种距离,余弦相似度比较简单,与之相关的是皮尔逊相似系数;汉明距离我记得是在信息论中学到过,学信道编码的时候会用到;还有一个接触的不多,叫做巴氏距离,师兄用到过。关于这些距离推荐http://www.cnblogs.com/daniel-D/p/3244718.html。这里没有巴氏距离,巴氏距离的话看https://www.cnblogs.com/wt869054461/p/5777782.html。

常见相似性度量及各种距离相关推荐

  1. 相似性度量:机器学习距离公式总结

    机器学习中,我们经常会对两个样本之间的相似度进行度量,此时会用到各种距离公式来反映某类事物在距离上接近或者远离的程度,K近邻算法,K-means聚类算法也涉及到距离公式的选择问题,今天我们就来总结一下 ...

  2. 数据科学中常见的9种距离度量方法(包括曼哈顿距离、欧氏距离、半正矢距离等)

    数据科学中常见的9种距离度量方法(包括曼哈顿距离.欧氏距离.半正矢距离等) 1.欧氏距离(Euclidean Distance) 2.余弦相似度(Cosine Similarity) 3.汉明距离(H ...

  3. HTML中常见的各种位置距离以及dom中的坐标讨论

    最近在学习JavaScript,特意买了一本犀牛角书来看看,尼玛一千多页,看的我头昏脑涨,翻到DOM这章节,突然记起平常在使用DOM时,碰到了好多的这个dom里面的各种宽度,高度,特意在此写一写,写的 ...

  4. 数据科学中常见的9种距离度量方法

    选自towardsdatascience 作者:Maarten Grootendorst 机器之心编译 编辑:陈萍 在数据挖掘中,我们经常需要计算样本之间的相似度,通常的做法是计算样本之间的距离.在本 ...

  5. 关于相似性度量与各类距离的意义

    两个向量之间的距离计算,在数学上称为向量的距离,也称为样本之间的相似性度量(Similarity Meansurement).它反映为某类事物在距离上接近或远离的程度. 范数 闵可夫斯基距离 欧氏距离 ...

  6. 常见的几种距离量度(欧式距离、曼哈顿距离、切比雪夫距离等)

    在机器学习和数据挖掘中,我们经常需要计算样本之间的相似度,通常的做法是计算样本之间的距离.本文介绍几种常用的距离量度方法. 一.欧氏距离(Euclidean Distance) 我们从最常见的欧式距离 ...

  7. 数据科学中常见的9种距离度量方法,包括欧氏距离、切比雪夫距离、半正矢距离等

    1.欧氏距离(Euclidean Distance) 欧式距离可解释为连接两个点的线段的长度.欧式距离公式非常简单,使用勾股定理从这些点的笛卡尔坐标计算距离. 代码实现: import numpy a ...

  8. 【机器学习基础】常见的9种距离度量方法,内含欧氏距离、切比雪夫距离等

    作者|机器之心编译 来源|机器之心 在数据挖掘中,我们经常需要计算样本之间的相似度,通常的做法是计算样本之间的距离.在本文中,数据科学家 Maarten Grootendorst 向我们介绍了 9 种 ...

  9. 相似性度量的各种距离(Distance)计算归类详解及应用(强烈建议收藏!!!备用)

    Distance Classification Distance 欧氏距离(Euclidean Distance) 闵可夫斯基距离(Minkowski distance) 曼哈顿距离(Manhatta ...

最新文章

  1. mysql与配偶同性_mysql 左,右,内连接
  2. vim 改变当前工作路径和创建文件夹
  3. 项目打包publicpath_将项目部署至github和码云
  4. 【最新】docker 安装elasticsearch + kibana步骤【第二篇_kibana】
  5. Springmvc借助SimpleUrlHandlerMapping实现接口开关功能
  6. java http请求实现_JAVA实现HTTP请求方式
  7. DELL服务器如何使用iDRAC安装操作系统
  8. MATLAB模拟声压分布,基于Matlab仿真软件构建圆形压电晶体三维模型
  9. 简单选择排序及其优化
  10. python第四周作业_马哥2016全新Linux+Python高端运维班第四周作业
  11. Pandas Learning
  12. 自学python 经验学习心得分享
  13. response返回中文乱码
  14. 程序员生存定律--成长路上常见的坑
  15. contour()函数的理解
  16. 计算机休眠会断电吗,电脑「睡眠」和「休眠」原来有这么大区别,下次别用错了。...
  17. 模板类的特例化(具体化)
  18. 【JAVA学习】1、零基础入门Java 基础语法:概念、规则、格式
  19. FPGA产生相位编码基带信号
  20. Origin | origin 2021b 学生免费版 | 中英文切换

热门文章

  1. SiriKit 新变化:高品质的 Siri 媒体交互
  2. 水表、电表红外通信接口、光学接口、红外光口
  3. 玩转Linux与运维岗(31)
  4. Improved Regularization of Convolutional Neural Networks with Cutout
  5. 【U8+】登录客户端未能加载文件或程序集
  6. 计算机网络——wireshark实验
  7. 扬帆大数据时代 联想数据安全为企业保驾护航
  8. Open-Monitor分布式监控插件
  9. linux 路由表解析,简单理解Linux路由表
  10. springboot 项目中,如何在jsp页面获取contextPath