相似性度量[zz]

   在模式识别、计算机视觉等多个领域,都会涉及到相似性的度量这一问题,用来衡量不同对象间的差异性(距离)或相似性(相似度)。这里的对象可以是网页,图像,也可以是文本,集合,但最终在数学上都可以表示为向量或者向量的集合。对于不同大小的向量集合的相似性度量问题,这里先不展开讨论。对于相同长度的向量大小的度量,这里假设两个向量为xy,他们分别为n维的向量X=(x1,...,xn),Y=(y1,...,yn)。一般而言,对于一个距离函数d(x,y)或相似度函数s(x,y),需要满足的条件为:

1. d(x,x) = 0 ;//到自己的距离为0 
2.  d(x,y)>=0 // 距离要非负 
3.  对称性,d(x,y) =d(y,x) //如果A到B距离是a,那么B到A的距离也应该是a 
4.  三角形法则(两个之和大于第三边)d(x,k)+d(k,y) >=d(x,y)

满足这几个条件的度量函数很多,如欧式距离。但最新提出的一些函数,不满足第四个特性,如Google距离。下面简单介绍下几种常用的度量函数。

 

(1) 欧几里得距离(Euclidean Distance)

欧氏距离是最常见的距离度量,衡量的是多维空间中各个点之间的绝对距离。公式如下:


因为计算是基于各维度特征的绝对数值,所以欧氏度量需要保证各维度指标在相同的刻度级别,比如对身高(cm)和体重(kg)两个单位不同的指标使用欧式距离可能使结果失效。虽然欧式距离是下面介绍的明式距离的一种特例,但是应用极为广泛,很多度量函数都是由欧式距离演化而来,如马哈拉诺比斯距离(Mahalanobis Distance)。

 

(2) 明可夫斯基距离(Minkowski Distance)

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


这里的p值是一个变量,取值范围为(0,infinite)。明式距离其实是就是数学上的范数。

当p=1时,就是表示的曼哈顿距离(Manhattan Distance),数学上为L1范数。曼哈顿距离来源于城市区块距离,是将多个维度上的距离进行求和后的结果:


当p=2的时候就得到了上面的欧氏距离,也就是L2范数;

当p趋于无穷时,明式距离就变成了切比雪夫距离(Chebyshev Distance),即数学上的无穷范数。切比雪夫距离起源于国际象棋中国王的走法,我们知道国际象棋国王每次只能往周围的8格中走一步,那么如果要从棋盘中A格(x1, y1)走到B格(x2, y2)最少需要走几步?扩展到多维空间,其实切比雪夫距离就是当p趋向于无穷大时的明氏距离::


因此,曼哈顿距离、欧氏距离和切比雪夫距离都是明可夫斯基距离在特殊条件下的应用。

 

(3) 编辑距离(Levenshtein distance)

编辑距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。
例如将kitten一字转成sitting:
1. sitten (k→s)
2. sittin (e→i)
3. sitting (→g)
俄罗斯科学家Vladimir Levenshtein在1965年提出这个概念,
与之相关的字符串相似性方法还有Jaro-Winkler distance。

 

(4) 向量空间余弦相似度(Cosine Similarity)

余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。因此有学者对余弦相似度进行修正,以衡量不同维度上的差异,如调整余弦相似度(Adjusted Cosine Similarity)。余弦相似度的就算公式如下:


分子是两个向量的点积,||A||是向量的长度,随着角度的变化的,函数是从-1到1变化的。向量夹角的余弦就是两个向量的相似度。根据cosine similarity的定义 ,如果两个向量的夹角定了,那么无论一个向量伸长多少倍,他们的相似性都是不变的。所以,应用cosine 相似性之前,要把对象的每一个维度归一化。在搜索引擎技术中,cosine 相似性在计算查询和文档的相似性的时得到了很好的应用。对查询语句而言(如:“明天天气如何”),它的每一个维度是对应词的tf-idf.

Cosine Similarity应用方向相当广泛,尤其是在文本相似度的度量方面。对于余弦相似度与欧式距离之间的差别,这里借助三维坐标系来看下两者的不同:

 


  从图上可以看出距离度量衡量的是空间各点间的绝对距离,跟各个点所在的位置坐标(即个体特征维度的数值)直接相关;而余弦相似度衡量的是空间向量的夹角,更加的是体现在方向上的差异,而不是位置。如果保持A点的位置不变,B点朝原方向远离坐标轴原点,那么这个时候余弦相似度cosθ是保持不变的,因为夹角不变,而A、B两点的距离显然在发生改变,这就是欧氏距离和余弦相似度的不同之处。

  根据欧氏距离和余弦相似度各自的计算方式和衡量特征,分别适用于不同的数据分析模型:欧氏距离能够体现个体数值特征的绝对差异,所以更多的用于需要从维度的数值大小中体现差异的分析,如使用用户行为指标分析用户价值的相似度或差异;而余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感,更多的用于使用用户对内容评分来区分用户兴趣的相似度和差异,同时修正了用户间可能存在的度量标准不统一的问题(因为余弦相似度对绝对数值不敏感)。

 

 

(5) Jaccard相似系数(Jaccard Coefficient)
  Jaccard系数主要用于计算符号度量或布尔值度量的个体间的相似度,因为个体的特征属性都是由符号度量或者布尔值标识,因此无法衡量差异具体值的大小,只能获得“是否相同”这个结果,所以Jaccard系数只关心个体间共同具有的特征是否一致这个问题。如果比较X与Y的Jaccard相似系数,只比较x
n和yn中相同的个数,公式如下:


 

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

即相关分析中的相关系数r,分别对X和Y基于自身总体标准化后计算空间向量的余弦夹角。公式如下:


 

(7) SimRank 相似度
SimRank来自图论,说两个变量相似,因为他们链接了同一个或相似的节点。

posted on 2013-05-14 16:23  york_hust  阅读(964)  评论(0编辑  收藏  举报