在上篇文章中介绍了如何利用余弦定理计算两个物品间的相似度:KiKlaus:推荐算法原理(一)余弦定理计算物品间相似度zhuanlan.zhihu.com
这种计算方法虽然简单,但是在衡量空间两个向量间值的大小差异时,会有明显的缺陷。
例如,向量A(1,1,1),向量B(5,5,5),如果用余弦定理计算,那么这两个向量的夹角大小为0°,即在方向上是完全一致的,所以算法会认为这两个向量极相似。但是我们仔细一想,其实这两个向量在比较值时(空间的相对位置上)是极不相似,那么如果用余弦定理进行计算,就会和我们想得出的结果有很大差距。
利用欧几里得计算物品间的相似度时可以解决上述问题。
1. 利用欧几里得公式计算两个物品间的相似度n维空间中计算两点间距离的原理
如下图所示,其中dist(A,B)为三维空间中两点间的距离。
拓展到n维空间时的一般性公式为:
这个式子在二维下展开的话可以想象成是利用勾股定理计算两点间的距离,这里不再展开。
从上述的一般性公式可以看出,两点之间的距离恒为非负数,最大值为正无穷大。但是通常情况下相似度的取值范围应该在[-1,1]之间,所以我们需要对其求倒数将结果控制在(0,1]之间。
最后欧几里得计算两个物品间相似度的公式为:
两个物品或者用户之间的距离越大,则其相似度越小,距离越小则相似度越大。
2. 实际运用
下表为用户和评分对照表:
下面分别运用欧几里得公式计算用户1和用户2的相似度:
从计算结果可以看出,用户1和用户2的相似度比用户1和用户3的相似度高,所以用户2与用户1更相似。
3. 总结
以上就是这次要分享给大家的内容了, 余弦定理和欧几里得公式两种计算方法各有好坏,欧氏距离能够体现个体数值特征的绝对差异,所以更多的用于需要从维度的数值大小中体现差异的分析,比如使用用户行为作为指标分析用户价值的相似情况(比较不同用户的消费能力),这属于价值度量;而余弦相似度对绝对数值不敏感,更多的用于使用用户对内容的评分来分析用户兴趣的相似程度(用户是否喜欢某商品),这属于定性度量。
没有最好的算法,只有最合适的场景,只有结合实际情况才能使这些算法更好地落地生产~
大家有疑惑的话可以在留言区留言多多交流~