各种距离的归纳

在软件开发和数据分析的过程中,有很多不同的距离的计算方法,如欧氏距离,马氏距离,等等。对这些距离的理解,有助于我们更好的建立模型,规划数据平台的存储和索引功能。网上对这些距离概念的介绍已经很多,本文的主要目的,是对这些概念做一个归纳和总结。

首先,我们需要对”距离”本身进行一些约束。我们所描述的距离,指的是度量空间(Metric space)的距离。良好的测距函数应具备以下特征:

  • 距离大于等于0;
  • 距离是对称的,即 a 到 b 的距离应等于 b 到 a 的距离;
  • 相同的输入,距离为0;
  • 满足三角不等式;

本文对一系列常见的,满足上述原则的距离定义,作以下分类:

1,连续 m 维空间中,点和点的距离

闵可夫斯基距离(明氏距离)适用于多维连续空间中两个点位置的判断。每个空间内的数值必须是连续的。 这一类距离定义包括:欧几里得距离(欧氏距离),曼哈顿距离,切比雪夫距离。 而这一族距离的定义,统称为闵可夫斯基距离。定义如下:

连续 n 维空间中两点

{\displaystyle P=(x_{1},x_{2},\ldots ,x_{n}){\text{ and }}Q=(y_{1},y_{2},\ldots ,y_{n})\in \mathbb {R} ^{n}}

之间的明氏距离(闵可夫斯基距离)公式为:
{\displaystyle \left(\sum _{i=1}^{n}|x_{i}-y_{i}|^{p}\right)^{1/p}}
p取1或2时的明氏距离是最为常用的:

  1. p=2即为欧氏距离
  2. p=1时则为曼哈顿距离
  3. 当p取无穷时的极限情况下,可以得到切比雪夫距离
    {\displaystyle D_{\rm {Chebyshev}}(p,q):=\max _{i}(|p_{i}-q_{i}|).\ }

欧氏距离是这里面我们最熟悉的类型,以2维空间为例,欧氏距离即两点之间的直线距离。曼哈顿距离就是各坐标差的绝对值的和。而切比雪夫距离则是各坐标上差的绝对值的最大值。

二维空间的欧氏距离和曼哈顿距离

闵氏距离,包括曼哈顿距离、欧氏距离和切比雪夫距离都存在一些缺点:

  1. 各个分量的单位必须是等价的。如果有量纲不相等的维度,就无法适用。举例来说,考虑楼宇内的定位问题:水平方向上的单位是米,垂直方向的单位是”层“,在这种情况下就无法直接使用闵氏距离。通常这种情况下需要对数据做正规化;

  2. 没有考虑各个分量的分布(期望,方差等)可能是不同的 ;

  3. 各个维度必须是互相独立的,也就是“正交”的;

马哈拉诺比斯距离(马氏距离)针对上述第1,3个缺点做出了改进。Wiki 描述如下:

它是一种有效的计算两个未知样本集的相似度的方法。与欧氏距离不同的是它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的)并且是尺度无关的(scale-invariant),即独立于测量尺度。 对于一个均值为

{\displaystyle \mu =(\mu _{1},\mu _{2},\mu _{3},\dots ,\mu _{p})^{T}},协方差矩阵为{\displaystyle \Sigma } 的多变量向量 {\displaystyle x=(x_{1},x_{2},x_{3},\dots ,x_{p})^{T}},其马氏距离为
{\displaystyle D_{M}(x)={\sqrt {(x-\mu )^{T}\Sigma ^{-1}(x-\mu )}}}

如果协方差矩阵为单位矩阵,马哈拉诺比斯距离就简化为欧氏距离。

2,连续 m 维空间中,向量和向量的距离

向量和向量之间的相似度,包含了两层概念:角度的相似度,和大小的相似度。常见的向量距离计算方法是余弦距离(余弦相似度)。

两个向量 A 和 B 之间的余弦相似度定义如下:

{\text{similarity}}=\cos(\theta )={A\cdot B \over \|A\|\|B\|}={\frac {\sum \limits _{{i=1}}^{{n}}{A_{i}\times B_{i}}}{{\sqrt {\sum \limits _{{i=1}}^{{n}}{(A_{i})^{2}}}}\times {\sqrt {\sum \limits _{{i=1}}^{{n}}{(B_{i})^{2}}}}}} 这里的 {\displaystyle A_{i}}{\displaystyle B_{i}} 分别代表向量 A 和 B 的各分量

对上述公式直观的解释,即把比较对象各个方向上的长度作为分母,各个方向分量的乘积和作为分子,这样可以得到两者的同一方向的分量“相同的程度”。cos\theta 的值,当\theta 为0时为1,表示它们的指向是完全相同的,当\theta\pi 时为-1,意味着两个向量指向的方向正好相反。

向量的余弦距离

余弦距离常被用于文本相似度的比较,如TF-IDF 权重的比较中。

3,m 维无序离散空间中的距离

这类的距离,度量的是 m 维离散,无序空间中两个变量之间的差异。两个变量之间,只有距离的大小,没有绝对值大小的区别。这里的变量的实际形式,可以是一组标签,一个字符串,等等。这类距离中比较常见的有:

1. 编辑距离:编辑距离是一组定义的集合,指的是给定 2 个字符串 a, b,将 a 转换为 b 的最少操作次数。

通常我们所说的编辑距离,指的是莱文斯坦距离,字符操作只允许如下 3 种:

  • 插入一个字符,例如:fj -> fxj
  • 删除一个字符,例如:fxj -> fj
  • 替换一个字符,例如:jxj -> fyj

编辑距离的计算需要使用动态规划法,时间复杂度为O(mn)

另外,Hamming distance 海明/汉明距离也是编辑距离的一种,但必须作用在等长字符串上。 典型的应用,有判断图像的相似度,先将图像变为相同尺寸的黑白图再计算。

2. Jaccard 距离:判断两个集合的相似度。Jaccard 相似度和 Jaccard 距离的计算方法如下:

Jaccard Index = (the number in both sets) / (the number in either set) * 100
Jaccard Distance = 1- Jaccard Index

Jaccard 指数即“交集/并集”

Jaccard 距离很容易转化为两个等长二进制字符串的判断,任意位上的1表示拥有该 item,0表示不具备该 item。计算 (不一样的 bit 数)/(总 bit 数)% 即得到 Jaccard 距离。

这类距离的索引,是软件实现的噩梦,而噩梦的名称,就叫做维数灾难。常规的树状索引结构,只能适用于有序数据,目前并没有一种有效的索引结构能够实现足够高效的集合距离的查找(我没有详细查过相关论文,但我猜测理论上也不会存在这样的索引结构)。当然,办法还是有的。比较常见的方案是BK树。然而对于特别大的数据集来说,BK树的剪枝效果远远谈不上理想。在实际的应用中,如 simhash 距离的查找中,只能采用一些比较 tricky 的方法来优化,并且带有诸多限制。

总结

本文主要归纳了各种距离定义的共性和适用范围。基于数学的角度,分类可能并不严谨,也不够形式化,但我希望它能为相关软件系统的设计提供一些参考。后续我会再总结一下,针对上述各种类型的距离,我们是如何实现计算和索引功能的。

参考资料

本文除了文中自带的链接外,应该至少还参考了下列资料:

  1. 各种距离介绍:https://cloud.tencent.com/developer/article/1049090
  2. 协方差矩阵:https://zhuanlan.zhihu.com/p/37609917
  3. 协方差:https://www.cnblogs.com/chaosimple/p/3182157.html
  4. 概率论数字特征:https://blog.csdn.net/thesnowboy_2/article/details/69564226#%E5%8D%8F%E6%96%B9%E5%B7%AE%E7%9F%A9%E9%98%B5
  5. 各种“差”的区别:http://hejunhao.me/archives/1163
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容