上QQ阅读APP看书,第一时间看更新
2.2.2 Jaccard相似度
假设用户A喜欢电影1、2和3。用户B喜欢电影1~10。用户C喜欢电影2、3和4。如果仅考虑CN相似度指标,则用户A与用户B的CN相似度为3,用户A与用户C的相似度为2。如此一来用户B对于用户A来讲更相似。
但是直觉告诉我们似乎这样不是很合理,因为用户B喜欢的电影太多了,与其他用户有重叠的部分自然会多,而用户A与C分别仅仅喜欢3部电影,并且在此基础上还有两部电影重叠。似乎用户C相对用户B来讲更应该是用户A的相似用户,所以Jaccard在20世纪初提出的Jaccard指标用于当前场景似乎更加准确。公式如下[1]:
由式(2-2)可以看出,Jaccard指标是在CN指标的基础上除以样本间的并集。这样就考虑了样本本身的集合越多,对于相似判断的权重就会越低。
Jaccard相似度的代码如下:
将上文提到的A、B和C 3种用户数据代入,则可以得到用户A与用户B的Jaccard相似度为0.3,用户A与用户C之间的相似度为0.5,所以用户C与用户A更加相似。
且Jaccard相似度的取值范围为[0,1],越接近1则表示越相似。不需要再做归一化处理。