- 构建企业级推荐系统:算法、工程实现与案例分析
- 刘强
- 606字
- 2021-08-06 14:59:53
4.7.4 相似度计算
前面讲过,协同过滤算法需要计算两个向量的相似度,本书前面采用的是余弦相似度。其实,计算两个向量相似度的方法非常多,余弦是被证明在很多场景下效果都不错的一个算法,但并不是所有场景使用余弦都是最好的,需要针对不同场景做尝试和对比。在这里,简单罗列一些常用的相似度计算的方法,供大家参考。
1.余弦相似度
前面已经花了很大篇幅讲解了余弦相似度的计算公式,这里不赘述。需要提一下的是,针对隐式反馈(用户只有点击等行为,没有评分),向量的元素要么为1要么为0,直接用余弦公式效果不是很好,本章参考文献[5]针对隐式反馈给出了一个更好的计算公式,具体如下:
![](https://epubservercos.yuewen.com/2D1332/20784355001359006/epubprivate/OEBPS/Images/080-i.jpg?sign=1739240823-hKpSXqwOyH5FuF6SYDzX3dYVcCFmsoeF-0-9ad172f862eeed70ebe36fcba3efb6e2)
其中,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=1739240823-ZBT26vuZYT0yBDWmYBBbsM6lCHREWM0Y-0-a70f5e4732984859dfb3d00414f009e5)
其中,(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=1739240823-jN0wCrd3SS1OAW7bAmj2YLN0KYTaRFx1-0-24fedfe5f37ee1e8c1c8720a599cfde6)
那么杰卡德系数的计算公式如下:
![](https://epubservercos.yuewen.com/2D1332/20784355001359006/epubprivate/OEBPS/Images/081-5-i.jpg?sign=1739240823-nLOELDDjeTmTFasLlejuE8TqQMlfHPkv-0-71b715c38496ca34cbb99992a5050b3b)