UserCF
August 31, 2025About 2 min
UserCF
给我推荐这篇笔记
- 有很多跟我头趣非常相似的网友
- 其中某个网友对某笔记点赞、转发
- 我设看过这篇笔记
推荐系统如何找到跟我头趣非常相似的网友呢?
- 方法一:点击、点赞、收藏、转发的笔记有很大的重合。
- 方法二:关注的作者有很大的重合。
计算用户相似度
- 用户喜欢的物品记作集合。
- 用户喜欢的物品记作集合。
- 定义两个用户的相似度:
- 缺点:同等对待热门冷门物品,未降低热门物品权重
- : 喜欢物品l的用户数量,反映物品的热门程度
小结
UserCF的基本思想:
- 如果用户user1跟用户user2相似,而且user2喜欢某物品,
- 那么用户user1也很可能喜欢该物品。
预估用户user对候选物品item的兴趣:
计算两个用户的相似度:
- 把每个用户表示为一个稀疏向量,向量每个元素对应一个物品。
- 相似度sim就是两个向量夹角的余弦o
离线计算:
- 建立用户->物品的索引
- 记录每个用户最近点击、交互过的物品ID。
- 给定任意用户ID,可以找到他近期感兴趣的n个物品列表(last n)。
- 建立用户->用户的索引
- 对于每个用户,索引他最相似的k个用户。
- 给定任意用户ID,可以快速找到他最相似的k个用户
线上做召回
- 给定用户ID,通过“用户→用户”索引,找到top-k相似用户。
- 对于每个top-k相似用户,通过“用户→物品”索引,找到用户近期感兴趣的物品列表(last-n)。
- 对于召回的个相似物品,用公式预估用户对每个物品的兴趣分数。
- 返回分数最高的100个物品,作为召回结果。