相似度计算方法学习总结

无论什么推荐算法,计算相似度都是避不开的,下面就总结一下已经了解的相似度计算方法。

1.余弦相似度

 

 

这个算是最常用的了,典型例子是计算文本相似度。通过计算两个向量间的夹角,越是相似夹角度数越接近0,所计算的值也就越接近1

但是余弦相似度只对方向敏感,对距离并不敏感。

 2.欧式距离(欧几里得距离)

 

就是计算空间上两点间的距离。下图很好体现了欧氏距离和余弦相似度的差异。

 

 

所以可以看出 欧氏距离 适用于 那些 对数值差异大小敏感的 相似度计算,

余弦相似度 更适用于 判别方向上的差异,而对绝对的数值不敏感的,比如 通过用户对 内容的评分来区分兴趣的相似度,修正了不同用户之间可能存在度量标准不统一的问题(有的用户默认高分,有的用户默认低分,对于默认低分用户来说7分就表示他喜欢了,而对默认高分用户来说10分才表示喜欢)。

 3.皮尔逊相关系数(PC)

 

 

其实就是 升级版的余弦相似度。

举个例子:

用户对内容评分,按5分制,XY两个用户对两个内容的评分分别为(1,2)和(4,5),使用余弦相似度得到的结果是0.98,两者极为相似。但从评分上看X似乎不喜欢2这个 内容,而Y则比较喜欢,余弦相似度对数值的不敏感导致了结果的误差,需要修正这种不合理性就出现了调整余弦相似度,即所有维度上的数值都减去一个均值,比如XY的评分均值都是3,那么调整后为(-2-1)和(1,2),再用余弦相似度计算,得到-0.8,相似度为负值并且差异不小,但显然更加符合现实。

此外,还有

斯皮尔曼等级相关系数、平局平方差异(MSD)、Jaccard距离和Dice系数等... 不太懂,以后涉及到深处在研究哈。

https://www.cnblogs.com/chenliyang/p/6548306.html)

posted @ 2018-03-21 20:50  iSuperGifted  阅读(2629)  评论(0编辑  收藏  举报