LOADING

加载过慢请开启缓存 浏览器默认开启

CF召回

基于物品的协同过滤ItemCF

思想

  • 如果用户喜欢一个物品,那么很有可能也喜欢和它相似的物品
  • 两个物品的受众重合度越高,两个物品就越相似
  • 在推荐时,以用户历史交互物品和目标物品的相似度为权重,对用户对历史交互物品的评分进行加权,得到用户对目标物品的打分预测,排序筛选出top-k个物品

核心

物品相似度计算:余弦相似度

部署

  • 离线计算
    1. user->item索引,记录每个用户交互的item
    2. item->item索引,计算item两两相似度取top-k作为索引
  • 线上召回
    1. user-id通过user->item索引找到last-n个物品
    2. 对每个last-n物品使用item->item索引查找top-k相似物品
    3. 计算用户对物品的兴趣分数,排序、截断

Swing

思想

  • 假如用户来自一个小圈子,由于小圈子内消息流通,所以小圈子用户同时交互两个物品,不能说明交互物品的受众重合度高
  • 反之,如果多个不相干用户同时交互两个物品,说明交互物品的受众重合度高,物品越相似
  • 对用户设置权重解决小圈子问题

核心

定义用户的重合度,如果重合度高则需要降低权重 overlap(u1, u2) = |J1 ∩ J2|, J1, J2u1, u2 物品相似度计算 $$ sim(i_{1}, i_{2}) = \sum_{u_{1} \in V}{\sum_{u_{2} \in V}{\frac{1}{\alpha + overlap(u_{1}, u_{2})}}}, \; V是i_{1}, i_{2}受众交集 $$

基于用户的协同过滤UserCF

思想

  • 用户应该会喜欢相似用户的交互物品
  • 用户交互物品的重合度越高,用户之间越相似

核心

用户相似度计算——余弦相似度

流行度偏差

如果物品流行,那么它对用户的相似度贡献应该小,反之则大;避免流行物品增大实际不大相似用户的相似度

在计算用户相似度时,对每个物品引入一个流行抑制权重

部署

与ItemCF类似,都需要离线计算索引,区别是要计算的是user->item和user->user索引