定义
两个对象之间的距离相异度(dissimilarity)是这两个对象差异程度的数值度量。对象越类似,他们的相异度就越低(相似度就越高)。通常用“距离(distance)”用作相似度的同义词。
变换经常和相异度一起出现,因为把相似度转换成相异度或者相反,或者将邻近度变换到一个特定区间,例如将[0,10]变换到[0,1]。通常,邻近度度量(特别是相似度)被定义为或者变换到区间[0,1]的值,这样做的动机是使用一种适当的度量,由邻近度的值表明两个对象之间的相似(相异)的程度。
数据对象之间的相异度
针对数据对象之间的相异度,x和y通常都用距离矩阵(distance matrix)表示,计算欧几里得距离后得到的是欧几里得距离矩阵。
在数据分析和数据挖掘以及搜索引擎中,我们经常需要知道个体间差异的大小,进而评价个体的相似性和类别。常见的比如数据分析中比如相关分析,数据挖掘中的分类聚类(K-Means等)算法,搜索引擎进行物品推荐时。
相似度算法主要任务是衡量对象之间的相似程度,是信息检索、推荐系统、数据挖掘等的一个基础性计算。相似度就是比较两个事物的相似性。一般通过计算事物的特征之间的距离,如果距离小,那么相似度大;如果距离大,那么相似度小。比如两种水果,将从颜色,大小,维生素含量等特征进行比较相似性。
问题定义:有两个对象X,Y,都包含N维特征,X=(x1,x2,x3,……..,xn),Y=(y1,y2,y3,……..,yn),计算X和Y的相似性。常用的有五种方法,如下。
相似度算法介绍
欧几里得距离
欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离。
欧氏距离,最常见的两点之间或多点之间的距离表示法,又称之为欧几里得度量,它定义于欧几里得空间中,如点 x = (x1,...,xn) 和 y = (y1,...,yn) 之间的距离为:
欧氏距离虽然很有用,但也有明显的缺点。它将样品的不同属性(即各指标或各变量量纲)之间的差别等同看待,这一点有时不能满足实际要求。例如,在教育研究中,经常遇到对人的分析和判别,个体的不同属性对于区分个体有着不同的重要性。因此,欧氏距离适用于向量各分量的度量标准统一的情况。
注意事项:
a.因为计算是基于各维度特征的绝对数值,所以欧氏度量需要保证各维度指标在相同的刻度级别,比如对身高(cm)和体重(kg)两个单位不同的指标使用欧式距离可能使结果失效。
b.欧几里得距离是数据上的直观体现,看似简单,但在处理一些受主观影响很大的评分数据时,效果则不太明显;比如,U1对Item1,Item2 分别给出了2分,4分的评价;U2 则给出了4分,8分的评分。通过分数可以大概看出,两位用户褒Item2 ,贬Item1,也许是性格问题,U1 打分更保守点,评分偏低,U2则更粗放一点,分值略高。在逻辑上,是可以给出两用户兴趣相似度很高的结论。如果此时用欧式距离来处理,得到的结果却不尽如人意。即评价者的评价相对于平均水平偏离很大的时候欧几里德距离不能很好的揭示出真实的相似度。
. 标准化欧氏距离 (Standardized Euclidean distance ),标准化欧氏距离是针对简单欧氏距离的缺点而作的一种改进方案。标准欧氏距离的思路:既然数据各维分量的分布不一样,那先将各个分量都“标准化”到均值、方差相等。至于均值和方差标准化到多少,先复习点统计学知识。
假设样本集X的数学期望或均值(mean)为m,标准差(standard deviation,方差开根)为s,那么X的“标准化变量”X*表示为:(X-m)/s,而且标准化变量的数学期望为0,方差为1。
即,样本集的标准化过程(standardization)用公式描述就是:
标准化后的值 = ( 标准化前的值 - 分量的均值 ) /分量的标准差
经过简单的推导就可以得到两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的标准化欧氏距离的公式:
如果将方差的倒数看成是一个权重,这个公式可以看成是一种加权欧氏距离(Weighted Euclidean distance)。
马氏距离
马氏距离是两个服从同一分布且其协方差矩阵为Σ的随机变量x和y的差异程度。马氏距离不受量纲的影响,两点之间的马氏距离与原始数据的测量单位无关;由标准化数据和中心化数据(即原始数据与均值之差)计算出的二点之间的马氏距离相同。马氏距离还可以排除变量之间的相关性的干扰。它的缺点是夸大了变化微小的变量的作用。
马氏距离(Mahalanobis distance)是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,表示数据的协方差距离。它是一种有效的计算两个未知样本集的相似度的方法。与欧氏距离不同的是,它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的),并且是尺度无关的(scale-invariant),即独立于测量尺度。
假设空间中两点x,y,定义:
目的: 计算两个样本间距离时,需要考虑样本所在分布的影响,包括以下两个方面: a) 不同维度上的方差不同,进而不同维度在计算距离时的重要性不同。 b) 不同维度之间可能存在相关性,干扰距离。 当数据分布已知时:通常用马氏距离代替欧氏距离,或对数据进行转换(比如PCA)
性质: 马氏距离消除了样本不同维度之间的方差差异和相关性,是一个无量纲的度量方式。
马氏与欧式距离的比较:
1) 马氏距离的计算是建立在总体样本的基础上的 ,这一点可以从上述协方差矩阵的解释中可以得出,也就是说,如果拿同样的两个样本,放入两个不同的总体中,最后计算得出的两个样本间的马氏距离通常是不相同的,除非这两个总体的协方差矩阵碰巧相同;
2)在计算马氏距离过程中,要求总体样本数大于样本的维数,否则得到的总体样本协方差矩阵逆矩阵不存在,这种情况下,用欧氏距离计算即可。
3)还有一种情况,满足了条件总体样本数大于样本的维数,但是协方差矩阵的逆矩阵仍然不存在,比如三个样本点(3,4),(5,6)和(7,8),这种情况是因为这三个样本在其所处的二维空间平面内共线。这种情况下,也采用欧氏距离计算。
4)在实际应用中“总体样本数大于样本的维数”这个条件是很容易满足的,而所有样本点出现3)中所描述的情况是很少出现的,所以在绝大多数情况下,马氏距离是可以顺利计算的,但是马氏距离的计算是不稳定的,不稳定的来源是协方差矩阵,这也是马氏距离与欧氏距离的最大差异之处。
马氏距离与欧氏距离的关系
(1)、协方差是单位矩阵时,样本特征维度之间的相关性(协方差)为0,量纲一致,此时的马氏距离=欧氏距离
(2)、协方差矩阵是对角矩阵时,样本特征维度之间的量纲一致,此时的马氏距离=标准化欧氏距离。
模式识别中,马式距离较之于欧式距离的优点是(C、D) 机器学习 ML模型 易 A.平移不变性; B.旋转不变性; C尺度不变性; D.考虑了模式的分布
曼哈顿距离(Manhattan Distance)
曼哈顿距离也叫做城市街区距离(city block)。 (1) 二维平面上两点a(x1,y1)和b(x2,y2)的曼哈顿距离:
(2) n维向量a(x11,x12,…x1n)和b(x21,x22,…,x2n)的曼哈顿距离:
切比雪夫距离
切比雪夫距离是(x1,y1)到(x2,y2)的横/纵坐标的最大值。 两个n维样本a(x11,x12,…,x1n)和b(x21,x22,…x2n)的切比雪夫距离:
等价于:
闵可夫斯基距离(Minkowski distance)
闵氏距离是欧氏距离的推广,是对多个距离度量公式的概括性的表述,看看下图
(1) 当p = 1时,就是曼哈顿距离 (2) 当p = 2时,就是欧氏距离 (3) 当p ->∞时,就是切比雪夫距离
xxxxxxxxxx
欧氏距离、曼哈顿距离、切比雪夫距离和闵科夫斯基距离的缺点:
(1) 将各个特征的量纲(也就是单位)等同的看待了,但如:“10kg”和“10m”难道是等价的吗?
(2) 没有考虑各个分量的分布(期望、方差等)可能是不同的。
数据对象之间的相似度
数据对象之间的相似度一定程度上可以看做是数据对象之间的相异度的否定。
余弦相似度(Cosine Similarity)
余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。
对于两个n维样本点a(x11,x12,x13,…,x1n)和b(x21,x22,…x2n)可使用余弦公式:
夹角余弦范围为[-1,1],余弦值和夹角成反比,和相似度成正比 夹角余弦越大----->两个向量的夹角越小----->相似度越大 夹角余弦越小---->两个向量的夹角越大------->相似度越小
皮尔森相关系数(Pearson Correlation Coefficient)
又称相关相似性,通过Peason相关系数来度量两个用户的相似性。计算时,首先找到两个用户共同评分过的项目集,然后计算这两个向量的相关系数。
公式:
杰卡德距离 & 杰拉德相似系数(Jaccard Similarity)
杰卡德相似系数 Jaccard系数主要用于计算符号度量或布尔值度量的个体间的相似度,因为个体的特征属性都是由符号度量或者布尔值标识,因此无法衡量差异具 体值的大小,只能获得“是否相同”这个结果,所以Jaccard系数只关心个体间共同具有的特征是否一致这个问题。集合A和集合B的交集元素在A,B并集中所占的比例,称为两个集合的杰卡德相似系数。
杰卡德相似系数是衡量两个集合的相似度的一种指标。
首先计算出A和B的交(A ∩ B),以及A和B的并 (A ∪ B):
然后利用公式进行计算:
代码实现:
杰卡德距离 杰卡德距离用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度。
杰卡德相似系数与杰卡德距离的应用
1.杰卡德相似系数可用于衡量样本的相似度。 如,A(0,1,1,1),B(1,0,1,1)将样本看成一个集合,1表示集合包含该元素,0表示集合不包含该元素。 p:样本A与B都是1的维度的个数 q:样本A是1,B是0的维度的个数 r:样本A是0,B是1的维度的个数 s:样本A与B都是0的维度的个数 那么A和B的杰卡德相似系数:
xxxxxxxxxx
为什么分母不加s呢?
对于杰卡德相似系数或杰卡德距离来说,它处理的都是非对称变量(即状态的两个输出不是同等重要的)。例如:疾病检查的阳性和阴性结果,负匹配的数量s被认为是不重要的,可在计算时忽略。
2.举例 考察两个患者的症状情况(发烧,咳嗽,白细胞升高,呕吐,流鼻涕),如果他们的取值分别为(1,1,0,0,1)和(1,0,0,1,0),则它们的杰卡德距离为(2+1)/(1+2+1)=3/4,表示两者的相异度,而1-3/4 = 1/4表示两者的相异度。
xxxxxxxxxx
在CTR指标上,Jaccard的推荐精准度远优于cosine。