在机器学习中,无论是分类问题、聚类问题或降维问题,经常需要度量不同样本之间的相似性。不过如何友好地表征不同样本之前的相似性?通常采用的方法就是计算样本间的“距离”。
距离计算方法有很多,对于实际遇到的问题到底采用什么样的方法来计算距离是很讲究的,因为相似性度量的好坏很多时候直接关系到原始问题的求解结果。为了加深大家对各个距离方法的理解,本文就对常用的相似性度量策略作一个总结,希望对各位后续处理机器学习问题有所帮助。
欧式距离
欧氏距离是一个通常采用的距离定义,指在n维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。两个n维向量x1=(x11,x12,…,x1n)与 x2=(x21,x22,…,x2n)间的欧氏距离为
d(x1,x2)=∑i=1n(x1i−x2i)2‾‾‾‾‾‾‾‾‾‾‾‾‾‾⎷.
曼哈顿距离
曼哈顿距离是由十九世纪的赫尔曼·闵可夫斯基所创的词汇 ,是一种使用在几何度量空间的几何学用语,用以标明两个点在标准坐标系上的绝对轴距总和。两个n维向量x1=(x11,x12,…,x1n)与 x2=(x21,x22,…,x2n)间的曼哈顿距离为
d(x1,x2)=∑i=1n|x1i−x2i|.
切比雪夫距离
二个点之间的切比雪夫距离定义是其各坐标数值差绝对值的最大值。因此两个n维向量x1=(x11,x12,…,x1n)与 x2=(x21,x22,…,x2n)间的切比雪夫距离为
d(x1,x2)=maxi(|x1i−x2i|),
等价于
d(x1,x2)=limk→∞(∑i=1n(x1i−x2i)k)1/k.
闵氏距离
闵氏距离是以俄裔德国数学家闵可夫斯基命名的,它代表的不是一种距离,而是一组距离的定义。两个n维向量x1=(x11,x12,…,x1n)与 x2=(x21,x22,…,x2n)间的闵氏距离为
d(x1,x2)=∑i=1n(x1i−x2i)k‾‾‾‾‾‾‾‾‾‾‾‾‾‾⎷k.
其中k是一个变参数。当k=1时,就是曼哈顿距离;当k=2时,就是欧氏距离;当k→∞时,就是切比雪夫距离。根据变参数的不同,闵氏距离可以表示一类的距离。
马氏距离
马氏距离(Mahalanobis distance)是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,表示数据的协方差距离。两个n维向量x1=(x11,x12,…,x1n)与 x2=(x21,x22,…,x2n)间的马氏距离为
d(x1,x2)=(x1−x2)S−1(x1−x2)T‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾√.
其中S为x1,x2的协方差矩阵。如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧氏距离。
夹角余弦
两个n维向量x1=(x11,x12,…,x1n)与 x2=(x21,x22,…,x2n)间的夹角余弦距离为
cosθ=d(x1,x2)=x1xT2|x1||x2|=∑ni=1x1ix2i∑ni=1x21i‾‾‾‾‾‾‾‾√∑ni=1x21i‾‾‾‾‾‾‾‾√.
根据余弦函数的性质可知夹角余弦取值范围为[−1,1]。相似性强弱随着夹角余弦值单调递增:夹角余弦越大表示两个向量的夹角越小,两者的相似性较强;夹角余弦越小表示两向量的夹角越大,两者的相似性较弱。当两个向量的方向重合时,夹角余弦取最大值1,当两个向量的方向完全相反时,夹角余弦取最小值-1。
夹角余弦距离衡量的是空间向量的夹角,更加体现在方向上的差异,而不是位置,因此其对绝对的数值距离不敏感。
相关系数/距离
相关系数是最早由统计学家卡尔·皮尔逊设计的统计指标,是衡量随机变量x与y相关程度的一种方法,定义如下:
ρxy=Cov(x,y)D(x)‾‾‾‾‾√D(y)‾‾‾‾‾√=E[(x−Ex)(y−Ey)]D(x)‾‾‾‾‾√D(y)‾‾‾‾‾√.
相关系数的取值范围是[-1,1]。相关系数定量地刻画了 x与y的相关程度,即 ρxy越大,相关程度越大; ρxy越小,对应相关程度越低。当x与y线性相关时,相关系数取值为1(正线性相关)或-1(负线性相关);当ρxy=0时,对应的相关性最低。相关距离的定义: dxy=1−ρxy。
汉明距离
汉明距离是以理查德·卫斯里·汉明的名字命名的。两个等长字符串s1与s2之间的汉明距离定义为将其中一个变为另外一个所需要作的最小替换次数。若想快速计算两个字符串的汉明距离,可以对两个字符串进行异或运算,然后统计结果为1的个数,那么这个数就是两者的汉明距离。例如字符串“1111”与“1001”之间的汉明距离为2,“11110011”与“10011000”之间的汉明距离为5。
杰卡德相似系数/距离
杰卡德相似系数:两个集合A和B的交集元素在A,B的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示。它是衡量两个集合相似度的一种指标。
J(A,B)=|A∩B||A∪B|.
杰卡德相似度算法没有考虑向量中潜在数值的大小,而是简单的处理为0和1,不过做了这样的处理之后,杰卡德方法的计算效率肯定是比较高的,毕竟只需要做集合操作。
杰卡德距离:杰卡德相似系数相反的概念是杰卡德距离(Jaccard distance),它用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度。杰卡德距离可用如下公式表示:
Jδ(A,B)=1−|A∩B||A∪B|=|A∪B|−|A∩B||A∪B|.
参考资料
1. http://www.cnblogs.com/chaosimple/archive/2013/06/28/3160839.html 余弦距离、欧氏距离和杰卡德相似性度量的对比分析
2. http://blog.sina.com.cn/s/blog_407e5c1c0102vxyh.html 闵可夫斯基距离(MinkowskiDistance)
3. http://www.cnblogs.com/heaad/archive/2011/03/08/1977733.html 机器学习中的相似性度量