数据挖掘中常用的相似性度量方法

发布时间 2023-05-20 17:08:39作者: 三斤2016

本文将介绍数据分析、数据挖掘、机器学习等领域中常用的相似性度量(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\)范式表示,即

\[d(x,y)=\sum_{i=1}^{N}|x_i-y_i| \]

(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\)范式表示,即

\[d(x,y)=\sqrt{\sum_{i=1}^{N}(x_i-y_i)^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\)范式表示,即

\[d(x,y)=\sqrt[^p]{\sum_{i=1}^{N}(x_i-y_i)^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\)范式表示,即

\[d(x,y) = \max_{i=1}^N(|x_i - y_i|) \]

上式也可以表示为

\[d(x,y) = \lim \limits_{p\rightarrow \infty}(\sum_{i=1}^N|x_i - y_i|^{p})^{1/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 系数定义为

\[J(S_1,S_2) = \frac{|S_1 \cap S_2|}{|S_1 \cup S_2|} \]

其中,\(d\)的值越大,表示\(S_1\)\(S_2\)越相似。例如集合\(S_1=\{ A,B,C,D\}, S_2 = \{ A,B,D,E\}\),则

\[J(S_1,S_2) = \frac{3}{5} \]

其中\(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=\frac{\sum\limits_{i=1}^{N}(x_i-\bar{x})(y_i - \bar{y})}{\sqrt{\sum\limits_{i=1}^{N}(x_i-\bar{x})^2}\sqrt{\sum\limits_{i=1}^{N}(y_i-\bar{y})^2}} \]

其中\(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\)的余弦相似度为

\[sim = \frac{x \cdot y}{|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\)的马氏距离为

\[d(x,y) = \sqrt{(x-y)^TS^{-1}(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) =\sum\limits_{i=1}^{N} P(i) log \frac{P(i)}{Q(i)} \]

其中,\(D(P||Q)\)越小,表示两个分布越相似。

(11) Pointwise Mutual Information (PMI,点对互信息)

PMI利用co-occurance来衡量两个东西\(x\)\(y\)的相似度,定义为

\[PMI(x,y) = log \frac{p(x,y)}{p(x)p(y)} \]

其中,\(p(x,y)\)表示\(x\)\(y\)同时出现的概率,\(p(x)\)\(p(y)\)分别表示\(x\)出现的概率,\(y\)出现的概率。\(PMI\)值越大,\(x\)\(y\)的相似度越高。

(12) Normalized Google Distance(NGD,正则谷歌距离)

NGD可以用来度量两个东西\(x\)\(y\)之间的相关性,作用和PMI有点类似,定义为

\[NGD(x,y) = \frac{max\{ log f(x),log f(y)\}-log f(x,y)}{log M - min\{ log f(x),log f(y)\}} \]

其中\(f(x)\)\(x\)在文档集中出现的频率,\(f(y)\)\(y\)在文档集中出现的频率,\(f(x,y)\)\(x,y\)在文档集中一起出现的频率,\(M\)是文档集的大小。\(NGD(x,y)\)值越大,相关性越高。