- (1) Manhattan Distance(曼哈顿距离)
- (2) Euclidean Distance(欧氏距离)
- (3) Minkowsk Distance(闵可夫斯基距离)
- (4) Chebyshev Distance (切比雪夫距离)
- (5) Hamming Distance(海明距离)
- (6) Jaccard Coefficient(Jaccard 系数)
- (7) Pearson Correlation Coefficient(Pearson相关系数)
- (8) Cosine Similarity(余弦相似度)
- (9) Mahalanobis Distance(马氏距离)
- (10) Kullback-Leibler Divergence(KL散度)
- (11) Pointwise Mutual Information (PMI,点对互信息)
- (12) Normalized Google Distance(NGD,正则谷歌距离)
本文将介绍数据分析、数据挖掘、机器学习等领域中常用的相似性度量(Similarity Measurement)方法。
(1) Manhattan Distance(曼哈顿距离)
我们知道曼哈顿街区有一个个方块构成,从一个十字路口(0,0)到另一个十字路口(3,3)的最短路程,不是两点的连线距离,而是两条垂直线的距离和,也就是“曼哈顿距离”。假设有两个\(N\)维的向量\(x,y\),\(x\)和\(y\)可以分别表示为\(x=(x_1,x_2,\cdots,x_N)\)和\(y=(y_1,y_2,\cdots,y_N)\),那么\(x\)和\(y\)的曼哈顿距离可以用\(L_1\)范式表示,即
(2) Euclidean Distance(欧氏距离)
假设有两个\(N\)维的向量\(x,y\),\(x\)和\(y\)可以分别表示为\(x=(x_1,x_2,\cdots,x_N)\)和\(y=(y_1,y_2,\cdots,y_N)\),那么\(x\)和\(y\)的欧式距离可以用\(L_2\)范式表示,即
(3) Minkowsk Distance(闵可夫斯基距离)
假设有两个\(N\)维的向量\(x,y\),\(x\)和\(y\)可以分别表示为\(x=(x_1,x_2,\cdots,x_N)\)和\(y=(y_1,y_2,\cdots,y_N)\),那么\(x\)和\(y\)的闵可夫斯基距离可以用\(L_p\)范式表示,即
其中,\(p\in R\)。可见,闵可夫斯基距离是曼哈顿距离与欧氏距离的一般情形,或者说曼哈顿距离与欧氏距离是闵可夫斯基距离的2种特殊情形。
Distance | Norm | Formula |
---|---|---|
Manhattan Distance | \(L_1\) | \(d(x,y)=\sum_{i=1}^{i=N} |x_i-y_i |_1\) |
Euclidean Distance | \(L_2\) | \(d(x,y)=\sqrt{\sum_{i=1}^{i=N}(x_i-y_i)^2}\) |
Minkowsk Distance | \(L_p\) | \(d(x,y)=\sqrt[^p]{\sum_{i=1}^{i=N}(x_i-y_i)^p}\) |
(4) Chebyshev Distance (切比雪夫距离)
我们知道,在国际象棋游戏规则中,国王走一步,能够移动到相邻8个方格中任意一个,那么国王从格子\((2,3)\)走到格子\((4,4)\)最少需要多少步?从格子\((2,3)\)走到格子\((7,9)\)呢?从格子\((x_i,y_i)\)走到格子\((x_j,y_j)\)呢?
不难发现,从格子\((2,3)\)走到格子\((4,4)\)最少需要2步;从\((2,3)\)走到格子\((7,9)\),最少需要走6步,事实上,从格子\((x_1,y_1)\)走到格子\((x_2,y_2)\)需要的步数为\(max(| x_1-x_2 | , |y_1-y_2|)\),这就是2维向量的切比雪夫距离。
假设有两个\(N\)维的向量\(x,y\),\(x\)和\(y\)可以分别表示为\(x=(x_1,x_2,\cdots,x_N)\)和\(y=(y_1,y_2,\cdots,y_N)\),那么\(x\)和\(y\)的闵可夫斯基距离可以用\(L_p\)范式表示,即
上式也可以表示为
(5) Hamming Distance(海明距离)
对于两个二进制串,它们对应的位上有几个不一样,那么海明距离就是几,值越小越相似。例如有两个二进制串\(x=1001,y=1011\),它们对应位上,除了第二位不一样之外,其他位上都一样,那么我们称二者的海明距离为1。同理,两个二进制串\(x=1111,y=1010\)的海明距离为\(H=2\)。
(6) Jaccard Coefficient(Jaccard 系数)
Jaccard 系数一般用来度量两个集合的相似度。假设有两个集合\(S_1\)和\(S_2\),它们的Jaccard 系数定义为
其中,\(d\)的值越大,表示\(S_1\)和\(S_2\)越相似。例如集合\(S_1=\{ A,B,C,D\}, S_2 = \{ A,B,D,E\}\),则
其中\(J\)值越大,表示相似度越高,当\(J=1\)时表示\(S_1=S_2\)。
(7) Pearson Correlation Coefficient(Pearson相关系数)
假设有两个\(N\)维的向量\(x,y\),\(x\)和\(y\)可以分别表示为\(x=(x_1,x_2,\cdots,x_N)\)和\(y=(y_1,y_2,\cdots,y_N)\),那么\(x\)和\(y\)的Pearson相关系数为
其中\(r\)的值越大,表示相关性越高。
(8) Cosine Similarity(余弦相似度)
假设有两个\(N\)维的向量\(x,y\),\(x\)和\(y\)可以分别表示为\(x=(x_1,x_2,\cdots,x_N)\)和\(y=(y_1,y_2,\cdots,y_N)\),那么\(x\)和\(y\)的余弦相似度为
其中\(r\)的值越大,表示\(x\)与\(y\)越相似。
(9) Mahalanobis Distance(马氏距离)
假设有两个\(N\)维的向量\(x,y\),\(x\)和\(y\)可以分别表示为\(x=(x_1,x_2,\cdots,x_N)\)和\(y=(y_1,y_2,\cdots,y_N)\),那么\(x\)和\(y\)的马氏距离为
其中\(S^{-1}\)为\(x\)与\(y\)的协方差矩阵,\(d(x,y)\)越小表示\(x\)与\(y\)相似度越高。
(10) Kullback-Leibler Divergence(KL散度)
KL散度用来度量两个分布\(P\)与\(Q\)之间的距离。分布P的集合\(X=\{X_1,X_2,\cdots,X_N\}\)和分布Q的集合\(Y=\{Y_1,Y_2,\cdots,Y_N\}\)的KL散度定义为
其中,\(D(P||Q)\)越小,表示两个分布越相似。
(11) Pointwise Mutual Information (PMI,点对互信息)
PMI利用co-occurance来衡量两个东西\(x\)和\(y\)的相似度,定义为
其中,\(p(x,y)\)表示\(x\)与\(y\)同时出现的概率,\(p(x)\)和\(p(y)\)分别表示\(x\)出现的概率,\(y\)出现的概率。\(PMI\)值越大,\(x\)与\(y\)的相似度越高。
(12) Normalized Google Distance(NGD,正则谷歌距离)
NGD可以用来度量两个东西\(x\)和\(y\)之间的相关性,作用和PMI有点类似,定义为
其中\(f(x)\)是\(x\)在文档集中出现的频率,\(f(y)\)是\(y\)在文档集中出现的频率,\(f(x,y)\)是\(x,y\)在文档集中一起出现的频率,\(M\)是文档集的大小。\(NGD(x,y)\)值越大,相关性越高。