在计算机人工智能领域,距离(distance)、相似度(similarity)是经常出现的基本概念,它们在自然语言处理、计算机视觉等子领域有重要的应用,而这些概念又大多源于数学领域的度量(metric)、测度(measure)等概念。
这里拮取其中18种做下小结备忘,也借机熟悉markdown的数学公式语法。

英文名 中文名 算式 说明
Euclidean Distance 欧式距离
d=i=1n(xiyi)2
<script type="math/tex; mode=display" id="MathJax-Element-43">d=\sqrt{\sum_{i=1}^n(x_i-y_i)^2}</script>
以古希腊数学家欧几里得命名的距离;也就是我们直观的两点之间直线最短的直线距离
Manhattan Distance 曼哈顿距离
d=i=1n|xiyi|
<script type="math/tex; mode=display" id="MathJax-Element-44">d=\sum_{i=1}^n|x_i-y_i|</script>
是由十九世纪的赫尔曼·闵可夫斯基所创词汇;是种使用在几何度量空间的几何学用语,用以标明两个点在标准坐标系上的绝对轴距总和;也就是和象棋中的“車”一样横平竖直的走过的距离;曼哈顿距离是超凸度量
Minkowski Distance 闵氏距离
d=i=1n(xiyi)pp
<script type="math/tex; mode=display" id="MathJax-Element-45">d=\sqrt[p]{\sum_{i=1}^n(x_i-y_i)^p}</script>
以俄罗斯数学家闵可夫斯基命名的距离;是欧式距离的推广,p=2时等价于欧氏距离,和p-范数等值
Hamming Distance 海明距离 逐个字符(或逐位)对比,统计不一样的位数的个数总和 所得值越小,参与对比的两个元素约相似;下面是从wikipedia借的4bit的海明距离示意图4bit的海明距离示意图
Jaccard Coefficient 杰卡德距离
J(A,B)=|AB||AB|
<script type="math/tex; mode=display" id="MathJax-Element-46">J(A,B)={|A \bigcap B|\over |A \bigcup B|}</script>
越大越相似;分子是A和B的交集大小,分母是A和B的并集大小
Ochiai Coefficient ?
K=n(AB)n(A)×n(B)
<script type="math/tex; mode=display" id="MathJax-Element-47">K={n(A \bigcap B)\over \sqrt{n(A) \times n(B)}}</script>
Pearson Correlation 皮尔森相关系数
r=ni=1(Xix¯)(yiy¯)ni=1(Xix¯)2ni=1(yiy¯)2
<script type="math/tex; mode=display" id="MathJax-Element-48">r={\sum_{i=1}^n(X_i-\overline x)(y_i-\overline y) \over \sqrt{\sum_{i=1}^n (X_i-\overline x)^2} \sqrt{\sum_{i=1}^n (y_i-\overline y)^2}}</script>
分子是两个集合的交集大小,分母是两个集合大小的几何平均值。是余弦相似性的一种形式
Cosine Similarity 余弦相似度
S=xy|x||y|
<script type="math/tex; mode=display" id="MathJax-Element-49">S={x \cdot y \over |x| |y|}</script>
Mahalanobis Distance 马氏距离
d=(x⃗ y⃗ )TS1(x⃗ y⃗ )
<script type="math/tex; mode=display" id="MathJax-Element-50">d=\sqrt{(\vec x-\vec y)^TS^{-1}(\vec x-\vec y)}</script> 其中S是x和y的协方差矩阵
印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,表示数据的协方差距离。它是一种有效的计算两个未知样本集的相似度的方法;若协方差矩阵是对角阵(diagonal),则该距离退化为欧式距离
Kullback-Leibler Divergence K-L散度
D(P||Q)=i=1nP(i)logP(i)Q(i)
<script type="math/tex; mode=display" id="MathJax-Element-51">D(P||Q)=\sum_{i=1}^nP(i)log{P(i) \over Q(i)}</script>
即相对熵;是衡量两个分布(P、Q)之间的距离;越小越相似
PMI(Pointwise Mutual Information) 点对互信息
pmi=logp(x,y)p(x)p(y)=logp(y|x)p(y)
<script type="math/tex; mode=display" id="MathJax-Element-52">pmi=log{p(x,y) \over p(x)p(y)}=log{p(y|x) \over p(y)}</script>
利用co-occurance来衡量x和y的相似度;越大越相关;可以看做局部点的互信息(mutual information)
NGD(Normalized Google Distance) ?
NGD(x,y)=max{logf(x),logf(y)}logf(x,y)logMmin{logf(x),logf(y)}
<script type="math/tex; mode=display" id="MathJax-Element-53">NGD(x,y)={max\{log f(x), log f(y)\}-log f(x,y) \over logM-min\{log f(x), log f(y)\}}</script>
这是google用来衡量两个不同的关键字(keyword)的检索结果之间的相关程度;其中f(x)代表包含了关键字x的页面数量,f(x,y)代表同时包含了关键字x和关键字y的页面的数量,M代表google所搜索的总页数;若两个关键字总是成对出现在页面上,那么NGD值为0,相反的,如果两个关键字在所有页面上都没有同时出现过,那么NGD值为无穷;该量是从normalized compression distance (Cilibrasi & Vitanyi 2003)衍生而来的
Levenshtein Distance(Edit Distance) Levenshtein距离(编辑距离) f(n)=
max(i,j)minleva,b(i1,j)+1leva,b(i,j1)+1leva,b(i1,j1)+1(aibj)if min(i,j)=0,otherwise.
<script type="math/tex; mode=display" id="MathJax-Element-54">\begin{cases}max(i,j) & \text{if min(i,j)=0}, \\ min{\begin{cases} lev_{a,b}(i-1,j)+1 \\ lev_{a,b}(i,j-1)+1 \\ lev_{a,b}(i-1,j-1)+1_{(a_i \neq b_j)} \end{cases}} & \text{otherwise.}\end{cases}</script>
是指两个字串之间,由一个转成另一个所需的最少编辑操作次数;俄罗斯科学家Vladimir Levenshtein在1965年提出这个概念;编辑距离越小的两个字符串越相似,当编辑距离为0时,两字符串相等
Jaro-Winkler Distance ?
013(m|s1|+m|s2|+mtm)if m=0otherwise
<script type="math/tex; mode=display" id="MathJax-Element-55">\left\{ \begin{array}{l l} 0 & \text{if }m = 0\\ \frac{1}{3}\left(\frac{m}{|s_1|} + \frac{m}{|s_2|} + \frac{m-t}{m}\right) & \text{otherwise} \end{array} \right.</script>
Lee Distance 李氏距离
d=i=1n|xiyi|
<script type="math/tex; mode=display" id="MathJax-Element-56">d=\sum_{i=1}^n|x_i-y_i|</script>
在编码理论(coding theory)中两个字符串间距离的一种度量方法
Hellinger Distance ?
H2(P,Q)=12(dPdλdQdλ)2dλ
<script type="math/tex; mode=display" id="MathJax-Element-57">H^2(P,Q)={1 \over \sqrt{2}}\sqrt{\int(\sqrt{{dP \over d\lambda}}-\sqrt{dQ \over d\lambda})^2d\lambda}</script>
dP/dλdQ/dλ<script type="math/tex" id="MathJax-Element-58">dP/d\lambda、dQ/d\lambda</script>为概率密度函数时,进一步有
H2(P,Q)=1f(x)g(x)dx<script type="math/tex" id="MathJax-Element-59">H^2(P,Q)=\sqrt{1-\int{\sqrt{f(x)g(x)}dx}}</script>
注意在作为概率意义的计算时需在测度空间进行;通常被用来度量两个概率分布的相似度,它是f散度的一种;由Ernst Helligner在1909年引进
Canberra Distance 坎贝拉距离
d(p⃗ ,q⃗ )=i=1n|piqi||pi|+|qi|
<script type="math/tex; mode=display" id="MathJax-Element-60">d(\vec p,\vec q)=\sum_{i=1}^n{\frac{|p_i-q_i|}{|p_i|+|q_i|}}</script>
where
p⃗ =(p1,p2,,pn)
<script type="math/tex; mode=display" id="MathJax-Element-61">\vec p=(p_1,p_2,\cdots,p_n)</script> and
q⃗ =(q1,q2,,qn)
<script type="math/tex; mode=display" id="MathJax-Element-62">\vec q=(q_1,q_2,\cdots,q_n)</script>
Chebyshev Distance 切比雪夫距离
DChebyshev(p,q)=maxi(|piqi|)=limk(i=1n|piqi|k)1/k
<script type="math/tex; mode=display" id="MathJax-Element-63">D_{Chebyshev}(p,q)=\max_{i}(|p_i-q_i|)=\lim_{k \to \infty}(\sum_{i=1}^n|p_i-q_i|^k)^{1/k}</script>
切比雪夫距离是由一致范数(uniform norm)(或称为上确界范数)所衍生的度量,也是超凸度量
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐