个性化召回算法协同过滤理论与理论升级

User cf

  • 给用户推荐相似用户感兴趣的物品
  • 如何评价相似兴趣用户集合?

采用基于用户行为重合度的方法(举例:如果2个用户的行为具有很高的重合度,那么就具有很高的相似性,他们可以称为相似兴趣用户集合)

找到集合用户感兴趣的而目标用户没行为过的item

协同过滤(User cf)

User A 可以给User D 推荐b

公式

协同过滤(User cf)

协同过滤(User cf)表示用户u有过行为的item集合,协同过滤(User cf)表示用户有过行为的item集合;

分子:item重合程度,重合程度越高,越相似;

分母:做了归一化(惩罚了操作过多的用户与其他用户的相似程度,因为操作过多的用户对应的item序列非常长,造成了与很多的用户都会有相似,除以一个很大的数后,相似度得分趋于0,);

协同过滤(User cf)

协同过滤(User cf)表示用户v对item(i)的行为得分,协同过滤(User cf)表示User(u)和User(v)的相似度得分,因为这里是根据用户v完成给用户u推荐的,用户v是用户u的前Top k个用户,并且v行为过的物品u并没有行为过。

公式升级1(工业界)

理论意义:降低那些异常活跃物品对用户相似度的贡献

(举例:如果某个电商系统中,User (A) 与User(B)同时购买了《新华字典》,User (A) 与User(C)同时购买了《机器学习》,并且他们都只有这一本书重合,User (A) 与User(B)、User (A) 与User(C)的重合度都是1,显然不合理,因为购买《新华字典》并不能十分准确的反映用户的兴趣,也许是给家里孩子买,而购买《机器学习》的用户大概率可以反映他们的兴趣,因为这本书的购书群体很窄,因此我们需要降低那些很多人购买的在重合度中的贡献。)

协同过滤(User cf)

分子:协同过滤(User cf)表示对item(i)有过行为的用户集合,如果一个item被更多的用户行为过,那么它在重合度的贡献越低

 

公式升级2(工业界)

  • 理论意义,不同用户对同一item行为的时间段不同应该给予时间惩罚

(因为很多用户不同时间段,兴趣是发生变化的,比如,2个用户都曾经点击过足球类短视频一个用户是近期点击另一个用户是在好几个月之前欧洲杯比赛期间,也许在目前时间已经不再喜欢足球类短视频了,我们在计算用户相似度矩阵的时候,假定了用户行为可以反映出用户的兴趣,所以我们要给予时间衰减降权)

协同过滤(User cf)

分子:每一个重合的item得分都变得不同,由协同过滤(User cf)决定,具体的得分是2个用户对同一item操作时间的差,如果协同过滤(User cf)越短的话,协同过滤(User cf)的得分越高;如果协同过滤(User cf)越长的话,协同过滤(User cf)的得分越低。相应的在重合度贡献中也就越低。

 

Itemcf  VS  Usercf

优缺点比较:

  • 推荐实时性 

Usercf用户有了新的行为,不会对结果造成很快的变化,因为Usercf是基于相似度矩阵来完成推荐的,User本身的行为并不能造成自己的推荐结果发生改变。

Itemcf用户一旦有了新的行为,推荐结果立刻发生改变,因为Itemcf是基于相似度矩阵来完成推荐的,所以点击了物品,会立马推荐出相似的物品。

  • 新用户/新物品的推荐

Usercf新用户的到来是不能立即推荐的,需要等用户有了一定的行为并且得到了与其他用户相似度矩阵之后才可以完成推荐,新用户一旦被用户点击,Usercf可以通过相似度用户矩阵将该物品推荐给相似的用户。

Itemcf新用户一旦完成了Item点击,便可以推荐该Item相似的其余Item,新物品的到来,由于此时新物品 并没有与其他物品在相似度矩阵中出现,所以Itemcf并不能将新物品及时地推荐出去。

  • 推荐理由的可解释性

Usercf由于是通过用户相似度矩阵来完成推荐的,结果会略显难以解释。

Itemcf通过用户历史点击行为完成的推荐,所以推荐结果更加令人信服。

Itemcf  VS  Usercf适用场景

  • 性能层面考量

Usercf通过计算用户相似度矩阵,所以它并不适合用户很多的场合。因为相似度矩阵计算起来代价非常大。

Itemcf需要计算物品的相似度矩阵,所以Itemcf适用于物品数远小于用户数场合。由于实战中用户量往往远大于物品的数量级,所以实战中更倾向于Itemcf。

  • 个性化层面考量

Usercf适用于物品及时推荐下发且个性化需求不太强烈的领域。

Itemcf适用于长尾物品丰富并且个性化需要强烈的领域。由于真实的推荐系统中,各种个性化召回算法组合,会有一些召回方法解决新物品及时下发问题,而我们需要个性化程度强烈,所以从个性化层面考虑,更倾向于在落地实战中采用Itemcf。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相关文章: