![构建企业级推荐系统:算法、工程实现与案例分析](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=1739048311-xRw7TJRRoa400Zfp218DHgLfns2ShA0x-0-ee3ca61f6c254c0ac1a77c393393dc46)
其中,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=1739048311-wUAjIDmP87fM94G3rTqKOTL213GWzc9H-0-5736a45aad4d291f1cd7b10267d7e5f9)
其中,(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=1739048311-OvPaq58zHVLkRmLPU45nvgygl7g4QJRr-0-ba4019402478a785340fcc43121eaf95)
那么杰卡德系数的计算公式如下:
![](https://epubservercos.yuewen.com/2D1332/20784355001359006/epubprivate/OEBPS/Images/081-5-i.jpg?sign=1739048311-ZYu0mlnrUvea5utqvwqs0XlSTgn6jqXe-0-272921ed3e319696297d620410f219a7)