一句话定义:协同过滤(Collaborative Filtering,简称 CF)是一类推荐算法,它不看物品本身长什么样,只看"谁对什么做过什么",靠群体行为里的规律来猜你可能喜欢什么。
两种视角,一个假设
它的底层假设很朴素:口味相似的人,未来也会喜欢相似的东西;被同一批人喜欢的物品,彼此就是"相似"的。
- 基于用户(user-based):先找到和你行为最像的一群人,把他们喜欢、而你还没接触过的东西推给你。就像你有个同事,和你一样爱看悬疑剧,他最近追的剧大概率你也会喜欢。
- 基于物品(item-based):反过来,找和你正在看的这个东西"被同一批人共同喜欢"的其他物品。电商里那句"买了 A 的人还买了 B",基本就是它的口头禅。
怎么算出来的
把用户和物品的交互(评分、点击、购买、完播)排成一张大表:行是用户,列是物品,格子填行为强度。问题是这张表绝大部分格子是空的——这叫稀疏性(sparsity),因为一个人一辈子也就能碰几万件商品,而平台上有几百万件。
算法用AI 词典:余弦相似度">余弦相似度(cosine similarity)或皮尔逊相关系数衡量两行(或两列)有多像,再取最像的 K 个邻居加权投票,给出预测分。
再往前走一步是矩阵分解(Matrix Factorization):不显式找邻居,而是把每个用户、每个物品各压成几十维的隐向量(latent vector),用两个向量的点积预测偏好。这是后来嵌入(embedding)和双塔召回模型的直系前身。
和相邻概念的区别
| 维度 | 协同过滤 | 基于内容(content-based) |
|---|---|---|
| 数据来源 | 用户行为 | 物品属性、文本、标签 |
| 优势 | 能推出"意料之外"的兴趣 | 新物品立刻可推,理由好解释 |
| 短板 | 冷启动、数据稀疏 | 容易推荐同质化,难跨品类 |
最典型的短板是冷启动(cold start):新用户没行为、新物品没人碰过,协同过滤就无从下手,只能靠内容特征、热门榜或引导问答兜底。
对从业者和普通人的意义
对从业者:item-based 协同过滤至今仍是很多系统召回层的主力,因为它可以离线预计算、结果可解释、工程上不娇气。但要注意流行度偏差(popularity bias)——热门物品会被越推越热,长尾内容几乎没机会。评估时离线指标只能当参考,最终还得看线上 A/B。
对普通人:推荐页上"看了又看""猜你喜欢"多半出自这套逻辑。它省事,代价是容易把人圈进信息茧房。偶尔主动搜一搜、点一点不一样的内容,等于在帮系统重新认识你——它记住的,始终是你和"和你相似的人"做过的事。
