学习笔记
召回阶段是在大量物品集合中进行初步筛选,找到一部分子集,该子集中的物品与用户具有相对较高的相似度。常用的召回模型有协同过滤,向量化召回,矩阵分解等
协同过滤(Collaborative Filtering,CF)
协同过滤通常包括基于用户的协同过滤(User CF),基于物品的协同过滤(Item CF)
User CF
User CF 是给相似用户推荐相似商品。当为A推荐商品时,主要分为两步:第一步,寻找与A相似的用户;第二步,从这些相似的用户找查找这些用户所喜欢的,但是A不曾见过的商品。
如何寻找相似用户:
根据用户之间行为的相似度,N(A)表示A用户有过正反馈的集合,N(B)表示B用户有过正反馈的集合则可以根据Jaccard或余弦相似度对两者的相似度进行计算。
举个具体的例子,A喜欢看复仇者联盟,钢铁侠,蜘蛛侠;B喜欢看蜘蛛侠,绿巨人。根据这两个集合我们可以计算两者的相似性,并判断A和B是相似的,并且为A推荐绿巨人影片。而对于C他喜欢看泰坦尼克号,夏洛特烦恼,那A和C则不相似。
但是该方法存在缺陷,加入A购买过牙膏,B也购买过牙膏,则我们会认为A和B是兴趣相似的,但是牙膏是大众产品,并无法反应A和B的相似性。而如果A和B都购买过《shell编程》,则我们可以认为A和B是相似的。因此相对冷门的产品更能反应用户之间的相似性。因此对相似度求法进行了改进,其中N(i)对两个用户中的热门商品进行了惩罚。
Item CF
给A用户推荐与A之前购买过或者喜欢的商品类似的商品。
物品相似度计算和User CF类似。N(I)表示喜欢I的用户数,N(J)表示喜欢J的用户数。这里计算方式反映的是如果两个物品都被很多人喜欢则这两个物品相似,活跃度大的用户可能会喜欢很多商品,会影响ItemCF的结果准确性。增加对活跃用户的惩罚,和User CF类似。
u为活跃用户,则对活跃用户加上惩罚因子