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

目录

  • (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 N N维的向量 x , y x,y x,y x x x y y y可以分别表示为 x = ( x 1 , x 2 , ⋯   , x N ) x=(x_1,x_2,\cdots,x_N) x=(x1,x2,,xN) y = ( y 1 , y 2 , ⋯   , y N ) y=(y_1,y_2,\cdots,y_N) y=(y1,y2,,yN),那么 x x x y y y的曼哈顿距离可以用 L 1 L_1 L1范式表示,即
d ( x , y ) = ∑ i = 1 N ∣ x i − y i ∣ d(x,y)=\sum_{i=1}^{N}|x_i-y_i| d(x,y)=i=1Nxiyi

(2) Euclidean Distance(欧氏距离)

假设有两个 N N N维的向量 x , y x,y x,y x x x y y y可以分别表示为 x = ( x 1 , x 2 , ⋯   , x N ) x=(x_1,x_2,\cdots,x_N) x=(x1,x2,,xN) y = ( y 1 , y 2 , ⋯   , y N ) y=(y_1,y_2,\cdots,y_N) y=(y1,y2,,yN),那么 x x x y y y的欧式距离可以用 L 2 L_2 L2范式表示,即
d ( x , y ) = ∑ i = 1 N ( x i − y i ) 2 d(x,y)=\sqrt{\sum_{i=1}^{N}(x_i-y_i)^2} d(x,y)=i=1N(xiyi)2

(3) Minkowsk Distance(闵可夫斯基距离)

假设有两个 N N N维的向量 x , y x,y x,y x x x y y y可以分别表示为 x = ( x 1 , x 2 , ⋯   , x N ) x=(x_1,x_2,\cdots,x_N) x=(x1,x2,,xN) y = ( y 1 , y 2 , ⋯   , y N ) y=(y_1,y_2,\cdots,y_N) y=(y1,y2,,yN),那么 x x x y y y的闵可夫斯基距离可以用 L p L_p Lp范式表示,即
d ( x , y ) = ∑ i = 1 N ( x i − y i ) p p d(x,y)=\sqrt[^p]{\sum_{i=1}^{N}(x_i-y_i)^p} d(x,y)=pi=1N(xiyi)p
其中, p ∈ R p\in R pR。可见,闵可夫斯基距离是曼哈顿距离与欧氏距离的一般情形,或者说曼哈顿距离与欧氏距离是闵可夫斯基距离的2种特殊情形。

Distance Norm Formula
Manhattan Distance L 1 L_1 L1 d ( x , y ) = ∑ i = 1 i = N ∥ x i − y i ∥ 1 d(x,y)=\sum_{i=1}^{i=N} \|x_i-y_i \|_1 d(x,y)=i=1i=Nxiyi1
Euclidean Distance L 2 L_2 L2 d ( x , y ) = ∑ i = 1 i = N ( x i − y i ) 2 d(x,y)=\sqrt{\sum_{i=1}^{i=N}(x_i-y_i)^2} d(x,y)=i=1i=N(xiyi)2
Minkowsk Distance L p L_p Lp d ( x , y ) = ∑ i = 1 i = N ( x i − y i ) p p d(x,y)=\sqrt[^p]{\sum_{i=1}^{i=N}(x_i-y_i)^p} d(x,y)=pi=1i=N(xiyi)p

(4) Chebyshev Distance (切比雪夫距离)

我们知道,在国际象棋游戏规则中,国王走一步,能够移动到相邻8个方格中任意一个,那么国王从格子 ( 2 , 3 ) (2,3) (2,3)走到格子 ( 4 , 4 ) (4,4) (4,4)最少需要多少步?从格子 ( 2 , 3 ) (2,3) (2,3)走到格子 ( 7 , 9 ) (7,9) (7,9)呢?从格子 ( x i , y i ) (x_i,y_i) (xi,yi)走到格子 ( x j , y j ) (x_j,y_j) (xj,yj)呢?

不难发现,从格子 ( 2 , 3 ) (2,3) (2,3)走到格子 ( 4 , 4 ) (4,4) (4,4)最少需要2步;从 ( 2 , 3 ) (2,3) (2,3)走到格子 ( 7 , 9 ) (7,9) (7,9),最少需要走6步,事实上,从格子 ( x 1 , y 1 ) (x_1,y_1) (x1,y1)走到格子 ( x 2 , y 2 ) (x_2,y_2) (x2,y2)需要的步数为 m a x ( ∣ x 1 - x 2 ∣ , ∣ y 1 - y 2 ∣ ) max(| x_1-x_2 | , |y_1-y_2|) max(x1x2,y1y2),这就是2维向量的切比雪夫距离。

假设有两个 N N N维的向量 x , y x,y x,y x x x y y y可以分别表示为 x = ( x 1 , x 2 , ⋯   , x N ) x=(x_1,x_2,\cdots,x_N) x=(x1,x2,,xN) y = ( y 1 , y 2 , ⋯   , y N ) y=(y_1,y_2,\cdots,y_N) y=(y1,y2,,yN),那么 x x x y y y的闵可夫斯基距离可以用 L p L_p Lp范式表示,即
d ( x , y ) = max ⁡ i = 1 N ( ∣ x i − y i ∣ ) d(x,y) = \max_{i=1}^N(|x_i - y_i|) d(x,y)=i=1maxN(xiyi)
上式也可以表示为
d ( x , y ) = lim ⁡ p → ∞ ( ∑ i = 1 N ∣ x i − y i ∣ p ) 1 / p d(x,y) = \lim \limits_{p\rightarrow \infty}(\sum_{i=1}^N|x_i - y_i|^{p})^{1/p} d(x,y)=plim(i=1Nxiyip)1/p

(5) Hamming Distance(海明距离)

对于两个二进制串,它们对应的位上有几个不一样,那么海明距离就是几,值越小越相似。例如有两个二进制串 x = 1001 , y = 1011 x=1001,y=1011 x=1001,y=1011,它们对应位上,除了第二位不一样之外,其他位上都一样,那么我们称二者的海明距离为1。同理,两个二进制串 x = 1111 , y = 1010 x=1111,y=1010 x=1111,y=1010的海明距离为 H = 2 H=2 H=2

(6) Jaccard Coefficient(Jaccard 系数)

Jaccard 系数一般用来度量两个集合的相似度。假设有两个集合 S 1 S_1 S1 S 2 S_2 S2,它们的Jaccard 系数定义为
J ( S 1 , S 2 ) = ∣ S 1 ∩ S 2 ∣ ∣ S 1 ∪ S 2 ∣ J(S_1,S_2) = \frac{|S_1 \cap S_2|}{|S_1 \cup S_2|} J(S1,S2)=S1S2S1S2
其中, d d d的值越大,表示 S 1 S_1 S1 S 2 S_2 S2越相似。例如集合 S 1 = { A , B , C , D } , S 2 = { A , B , D , E } S_1=\{ A,B,C,D\}, S_2 = \{ A,B,D,E\} S1={A,B,C,D},S2={A,B,D,E},则
J ( S 1 , S 2 ) = 3 5 J(S_1,S_2) = \frac{3}{5} J(S1,S2)=53
其中 J J J值越大,表示相似度越高,当 J = 1 J=1 J=1时表示 S 1 = S 2 S_1=S_2 S1=S2

(7) Pearson Correlation Coefficient(Pearson相关系数)

假设有两个 N N N维的向量 x , y x,y x,y x x x y y y可以分别表示为 x = ( x 1 , x 2 , ⋯   , x N ) x=(x_1,x_2,\cdots,x_N) x=(x1,x2,,xN) y = ( y 1 , y 2 , ⋯   , y N ) y=(y_1,y_2,\cdots,y_N) y=(y1,y2,,yN),那么 x x x y y y的Pearson相关系数为
r = ∑ i = 1 N ( x i − x ˉ ) ( y i − y ˉ ) ∑ i = 1 N ( x i − x ˉ ) 2 ∑ i = 1 N ( y i − y ˉ ) 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})}} r=i=1N(xixˉ)2 i=1N(yiyˉ) i=1N(xixˉ)(yiyˉ)
其中 r r r的值越大,表示相关性越高。

(8) Cosine Similarity(余弦相似度)

假设有两个 N N N维的向量 x , y x,y x,y x x x y y y可以分别表示为 x = ( x 1 , x 2 , ⋯   , x N ) x=(x_1,x_2,\cdots,x_N) x=(x1,x2,,xN) y = ( y 1 , y 2 , ⋯   , y N ) y=(y_1,y_2,\cdots,y_N) y=(y1,y2,,yN),那么 x x x y y y的余弦相似度为
s i m = x ⋅ y ∣ x ∣ ∣ y ∣ sim = \frac{x \cdot y}{|x||y|} sim=xyxy
其中 r r r的值越大,表示 x x x y y y越相似。

(9) Mahalanobis Distance(马氏距离)

假设有两个 N N N维的向量 x , y x,y x,y x x x y y y可以分别表示为 x = ( x 1 , x 2 , ⋯   , x N ) x=(x_1,x_2,\cdots,x_N) x=(x1,x2,,xN) y = ( y 1 , y 2 , ⋯   , y N ) y=(y_1,y_2,\cdots,y_N) y=(y1,y2,,yN),那么 x x x y y y的马氏距离为
d ( x , y ) = ( x − y ) T S − 1 ( x − y ) d(x,y) = \sqrt{(x-y)^TS^{-1}(x-y)} d(x,y)=(xy)TS1(xy)
其中 S − 1 S^{-1} S1 x x x y y y的协方差矩阵, d ( x , y ) d(x,y) d(x,y)越小表示 x x x y y y相似度越高。

(10) Kullback-Leibler Divergence(KL散度)

KL散度用来度量两个分布 P P P Q Q Q之间的距离。分布P的集合 X = { X 1 , X 2 , ⋯   , X N } X=\{X_1,X_2,\cdots,X_N\} X={X1,X2,,XN}和分布Q的集合 Y = { Y 1 , Y 2 , ⋯   , Y N } Y=\{Y_1,Y_2,\cdots,Y_N\} Y={Y1,Y2,,YN}的KL散度定义为
D ( P ∣ ∣ Q ) = ∑ i = 1 N P ( i ) l o g P ( i ) Q ( i ) D(P||Q) =\sum\limits_{i=1}^{N} P(i) log \frac{P(i)}{Q(i)} D(PQ)=i=1NP(i)logQ(i)P(i)
其中, D ( P ∣ ∣ Q ) D(P||Q) D(PQ)越小,表示两个分布越相似。

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

PMI利用co-occurance来衡量两个东西 x x x y y y的相似度,定义为
P M I ( x , y ) = l o g p ( x , y ) p ( x ) p ( y ) PMI(x,y) = log \frac{p(x,y)}{p(x)p(y)} PMI(x,y)=logp(x)p(y)p(x,y)
其中, p ( x , y ) p(x,y) p(x,y)表示 x x x y y y同时出现的概率, p ( x ) p(x) p(x) p ( y ) p(y) p(y)分别表示 x x x出现的概率, y y y出现的概率。 P M I PMI PMI值越大, x x x y y y的相似度越高。

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

NGD可以用来度量两个东西 x x x y y y之间的相关性,作用和PMI有点类似,定义为
N G D ( x , y ) = m a x { l o g f ( x ) , l o g f ( y ) } − l o g f ( x , y ) l o g M − m i n { l o g f ( x ) , l o g f ( y ) } NGD(x,y) = \frac{max\{ log f(x),log f(y)\}-log f(x,y)}{log M - min\{ log f(x),log f(y)\}} NGD(x,y)=logMmin{logf(x),logf(y)}max{logf(x),logf(y)}logf(x,y)
其中 f ( x ) f(x) f(x) x x x在文档集中出现的频率, f ( y ) f(y) f(y) y y y在文档集中出现的频率, f ( x , y ) f(x,y) f(x,y) x , y x,y x,y在文档集中一起出现的频率, M M M是文档集的大小。 N G D ( x , y ) NGD(x,y) NGD(x,y)值越大,相关性越高。

你可能感兴趣的:(数据挖掘)