无论什么推荐算法,计算相似度都是避不开的,下面就总结一下已经了解的相似度计算方法。
1. 余弦相似度
这个算是最常用的了,典型例子是计算文本相似度。通过计算两个向量间的夹角,越是相似夹角度数越接近0,所计算的值也就越接近1。
但是余弦相似度只对方向敏感,对距离并不敏感。
2. 欧式距离(欧几里得距离)
就是计算空间上两点间的距离。下图很好体现了欧氏距离和余弦相似度的差异。
所以可以看出 欧氏距离 适用于 那些 对数值差异大小敏感的 相似度计算,
而 余弦相似度 更适用于 判别方向上的差异,而对绝对的数值不敏感的,比如 通过用户对 内容的评分来区分兴趣的相似度,修正了不同用户之间可能存在度量标准不统一的问题(有的用户默认高分,有的用户默认低分,对于默认低分用户来说7分就表示他喜欢了,而对默认高分用户来说10分才表示喜欢)。
3. 皮尔逊相关系数(PC)
其实就是 升级版的余弦相似度。
举个例子:
用户对内容评分,按5分制,X和Y两个用户对两个内容的评分分别为(1,2)和(4,5),使用余弦相似度得到的结果是0.98,两者极为相似。但从评分上看X似乎不喜欢2这个 内容,而Y则比较喜欢,余弦相似度对数值的不敏感导致了结果的误差,需要修正这种不合理性就出现了调整余弦相似度,即所有维度上的数值都减去一个均值,比如X和Y的评分均值都是3,那么调整后为(-2,-1)和(1,2),再用余弦相似度计算,得到-0.8,相似度为负值并且差异不小,但显然更加符合现实。
此外,还有
斯皮尔曼等级相关系数、平局平方差异(MSD)、Jaccard距离和Dice系数等... 不太懂,以后涉及到深处在研究哈。
(https://www.cnblogs.com/chenliyang/p/6548306.html)