UserCF
12/15/25About 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 个物品,作为召回结果。
