白话总结《余弦相似度vs欧式距离&缺陷》

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_15443203/article/details/82925015

之前相似度计算很模糊,趁着休息总结一下,以便使用时更针对业务需要。

余弦相似度

公式中p和q是两个向量。

余弦相似度需要对两个向量的长度做归一化,然后度量两个向量的方向,与向量的长度无关。也就是说,两个向量只要方向一致,无论长度、程度如何,都视作“相似”。即“余弦相似度对具体数值的绝对值大小不敏感

这会产生一个问题,如果A用户对两个商品打分是1,2,B是4,5。由于余弦相似度只关注方向的差异,忽略具体数值的大小,故他们两个的余弦相似度达到0.98,这和实际的情况不符,用户A明显不喜欢这两个商品。即,传统的余弦相似度对行为矩阵判别比较好,但是对打分矩阵经常有不好的效果。

可以使用:

调整的余弦相似度(Adjusted Cosine Similarity)。调整的方法很简单,就是先计算向量每个维度上的均值,然后每个向量在各个维度上都减去均值后,再计算余弦相似度。

前面这个小例子,用调整的余弦相似度计算得到的相似度是 -0.1,呈现出两个用户口味相反,

和直觉相符。

欧式距离:

只关注具体数值特征的绝对差异,从个体向量不同维度的数值大小中体现差异。如使用用户行为指标分析用户价值的相似度或差异。

举个例子:

歌手大赛,三个评委给三个歌手打分,第一个评委的打分(10,8,9), 第二个评委的打分(4,2,3),第三个评委的打分(8,10,9),如果采用余弦相似度来看每个评委的差异,虽然每个评委对同一个选手的评分不一样,但第一、第二两个评委对这三位歌手实力的排序是一样的,只是第二个评委对满分有更高的评判标准,说明第一、第二个评委对音乐的品味上是一致的。

因此,如果只考虑相对大小的排序,那么用余弦相似度来看,第一、第二个评委为一类人,第三个评委为另外一类。

如果采用欧氏距离, 第一和第三个评委的欧氏距离更近,就分成一类人了,但其实不太合理,因为他们对于三位选手的排名都是完全颠倒的。

如果考虑具体数值的大小,那么第二个评委打分都很低,其实反应的是对三个歌手都不喜欢,那么就要用修正的余弦相似度。

故:具体的业务场景具体分析。

主要参考:https://blog.csdn.net/zz_dd_yy/article/details/51926305

 

猜你喜欢

转载自blog.csdn.net/sinat_15443203/article/details/82925015