数学:相似度计算方法——距离

在数据分析和数据挖掘以及搜索引擎中,我们经常需要知道个体间差异的大小,进而评价个体的相似性和类别。常见的比如数据分析中比如相关分析,数据挖掘中的分类聚类(K-Means等)算法,搜索引擎进行物品推荐时。

相似度就是比较两个事物的相似性。一般通过计算事物的特征之间的距离,如果距离小,那么相似度大;如果距离大,那么相似度小。比如两种水果,将从颜色,大小,维生素含量等特征进行比较相似性。

 

1、欧几里得距离(Eucledian Distance)

欧氏距离是最常用的距离计算公式,衡量的是多维空间中各个点之间的绝对距离,当数据很稠密并且连续时,这是一种很好的计算方式。n维空间中的欧式距离的计算公式为:

数学:相似度计算方法——距离

因为计算是基于各维度特征的绝对数值,所以欧氏度量需要保证各维度指标在相同的刻度级别,比如对身高(cm)和体重(kg)两个单位不同的指标使用欧式距离可能使结果失效。 

 

 

数学:相似度计算方法——距离

 

 

2、曼哈顿距离(Manhattan Distance)

两个点在标准坐标系上的绝对轴距总和,在2维空间中的计算公式为:

数学:相似度计算方法——距离

数学:相似度计算方法——距离 

 

3、切比雪夫距离(Chebyshev Distance)

各坐标数值差的最大值,在2维空间中的计算公式为:

数学:相似度计算方法——距离

 

4、明可夫斯基距离(Minkowski Distance)

明氏距离是欧氏距离的推广,是对多个距离度量公式的概括性的表述,看看下图:

 

数学:相似度计算方法——距离
公式: 
数学:相似度计算方法——距离

从公式我们可以看出,

  • 当p==1,“明可夫斯基距离”变成“曼哈顿距离”
  • 当p==2,“明可夫斯基距离”变成“欧几里得距离”
  • 当p==∞,“明可夫斯基距离”变成“切比雪夫距离”

 

5、海明距离(Hamming Distance)

在信息论中,两个等长字符串之间的海明距离是两个字符串对应位置的不同字符的个数。换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数。具体如下:

  • "toned" and "roses" is 3.  “toned”和“roses”的海明距离是3。
  • 1011101 and 1001001 is 2.  “1011101”和“1001001”的海明距离是2.
  • 2173896 and 2233796 is 3.   “2173896”和“2233796”的海明距离是3.
  • 数学:相似度计算方法——距离

    三bit位海明距离立方体

    其中,100->011 海明距离为3, 010->111海明距离为2

 

6、余弦相似度(Cosine Similarity)

余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。 

数学:相似度计算方法——距离

 

7、Jaccard Similarity

Jaccard系数主要用于计算符号度量或布尔值度量的个体间的相似度,因为个体的特征属性都是由符号度量或者布尔值标识,因此无法衡量差异具 体值的大小,只能获得“是否相同”这个结果,所以Jaccard系数只关心个体间共同具有的特征是否一致这个问题。 


数学:相似度计算方法——距离

对于上面两个对象A和B,我们用Jaccard计算它的相似性,公式如下 
数学:相似度计算方法——距离

首先计算出A和B的交(A ∩ B),以及A和B的并 (A ∪ B): 
数学:相似度计算方法——距离
然后利用公式进行计算: 

数学:相似度计算方法——距离

 

8、皮尔森相关系数(Pearson Correlation Coefficient)

又称相关相似性,通过Peason相关系数来度量两个用户的相似性。计算时,首先找到两个用户共同评分过的项目集,然后计算这两个向量的相关系数。

公式: 
数学:相似度计算方法——距离