美文网首页
余弦相似度和欧几里得距离

余弦相似度和欧几里得距离

作者: 弓長知行 | 来源:发表于2019-03-20 17:46 被阅读0次

1.余弦相似度

同过两个向量的夹角的余弦值来判断两个向量的相似度。
余弦值取值[-1,1],越接近1,两向量夹角越小,越相似。


图片.png

二维公式:


图片.png
n维公式:
图片.png
存在的问题[1]

余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感
比如用户对内容评分,5分制。A和B两个用户对两个商品的评分分别为A:(1,2)和B:(4,5)。我们分别用两种方法计算相似度。使用余弦相似度得出的结果是0.98,看起来两者极为相似,但从评分上看X似乎不喜欢这两个东西,而Y比较喜欢。造成这个现象的原因就在于,余弦相似度没法衡量每个维数值的差异,对数值的不敏感导致了结果的误差。

需要修正这种不合理性,就出现了调整余弦相似度,即所有维度上的数值都减去一个均值。
比如A和B对两部电影评分的均值分别是(1+4)/2=2.5,(2+5)/2=3.5。那么调整后为A和B的评分分别是:(-1.5,-1.5)和(1.5,2.5),再用余弦相似度计算,得到-0.98,相似度为负值,显然更加符合现实。
修正的余弦相似度可以说就是对余弦相似度进行归一化处理的算法,公式如下:


图片.png

2.欧几里得距离

通过两个点(向量)的欧式空间距离来判断相似度


图片.png

标准化欧式距离公式:


图片.png

python实现

余弦相似度使用scipy.spatial.distance.cosine(u,v)
需要注意的是这里公式有所变动:

图片.png
这样取值就在[0,2]。
欧式距离scipy.spatial.distance.euclidean(u,v)

Reference:
[1] 相似度计算之余弦相似度
[2] 相似度计算之欧几里得距离

相关文章

网友评论

      本文标题:余弦相似度和欧几里得距离

      本文链接:https://www.haomeiwen.com/subject/ekytvqtx.html