![构建企业级推荐系统:算法、工程实现与案例分析](https://wfqqreader-1252317822.image.myqcloud.com/cover/215/39888215/b_39888215.jpg)
上QQ阅读APP看书,第一时间看更新
4.7.4 相似度计算
前面讲过,协同过滤算法需要计算两个向量的相似度,本书前面采用的是余弦相似度。其实,计算两个向量相似度的方法非常多,余弦是被证明在很多场景下效果都不错的一个算法,但并不是所有场景使用余弦都是最好的,需要针对不同场景做尝试和对比。在这里,简单罗列一些常用的相似度计算的方法,供大家参考。
1.余弦相似度
前面已经花了很大篇幅讲解了余弦相似度的计算公式,这里不赘述。需要提一下的是,针对隐式反馈(用户只有点击等行为,没有评分),向量的元素要么为1要么为0,直接用余弦公式效果不是很好,本章参考文献[5]针对隐式反馈给出了一个更好的计算公式,具体如下:
![](https://epubservercos.yuewen.com/2D1332/20784355001359006/epubprivate/OEBPS/Images/080-i.jpg?sign=1739056603-SCgMJS0E9xXJ2CkzjtM2DquwQjQoUTqj-0-9203c5c0faf3289990f32d0bd744271b)
其中,ru,p是用户u对标的物p的评分(对于隐式反馈,评分是0或者1,但是本章参考文献[5]针对用户不同的隐式反馈给出了不同的评分,而不是一律用1,比如浏览给1分、收藏给3分、分享给5分等,ru,p取用户u对标的物p所有的隐式反馈行为中得分最高的)。
2.皮尔森相关系数
皮尔森相关系数(Pearson Correlation Coefficient)是一种线性相关系数,用来反映两个变量线性相关程度的统计量。具体计算公式如下:
![](https://epubservercos.yuewen.com/2D1332/20784355001359006/epubprivate/OEBPS/Images/081-i.jpg?sign=1739056603-Z8ojxU3wBYLp6kE3gpXn6SDy3Dtq0lzL-0-aef09921d396dcf67041a200b4b78fcd)
其中,(X1,X2,…,Xn)和(Y1,Y2,…,Yn)是两个向量,和
是这两个向量的均值。本章参考文献[9]中有对如何利用皮尔森相关系数做协同过滤的介绍,感兴趣的读者可以参考学习。
3.杰卡德系数
杰卡德系数(Jaccard Coefficient)用于计算两个集合之间的相似度,也比较适合隐式反馈类型的用户行为,假设两个标的物p、q,操作过这两个标的物的用户分别为
![](https://epubservercos.yuewen.com/2D1332/20784355001359006/epubprivate/OEBPS/Images/081-4-i.jpg?sign=1739056603-AfpACipPE9ldwtoAPbrT0bZAYTD6hvPz-0-bfea5213148dbe51b2ef36e16df02cdd)
那么杰卡德系数的计算公式如下:
![](https://epubservercos.yuewen.com/2D1332/20784355001359006/epubprivate/OEBPS/Images/081-5-i.jpg?sign=1739056603-VLWW6mfa5SawcR13meDBoIeYvgD1eAAA-0-59000dccd19d83aaa245eae6480cdf03)