跳到主内容

什么是协同过滤?推荐系统怎么猜你喜欢

2026-10-06 发布 来源:我告诉你AI导航 阅读

点开一部片子之前,平台的 AI 已经算好了你可能给几分。它没读过剧本,也没分析过预告片,依据只是一句很朴素的话:和你口味相近的人,喜欢过这部。这条思路叫协同过滤,是推荐系统里资历最老、也最容易被低估的一类方法。下面讲清两种切法的差别...

点开一部片子之前,平台的 AI 已经算好了你可能给几分。它没读过剧本,也没分析过预告片,依据只是一句很朴素的话:和你口味相近的人,喜欢过这部。这条思路叫协同过滤,是推荐系统里资历最老、也最容易被低估的一类方法。下面讲清两种切法的差别、相似度怎么算、稀疏与冷启动为什么会把它卡住,以及它到底猜不到什么。

它用的是间接证据

内容推荐看的是物品属性:这部片是科幻、有太空、评分 8.2,那就推给爱看科幻的人。协同过滤完全不碰属性,它只看行为矩阵——行是用户,列是物品,格子里是评分、点击或购买。

信息全在格子的相对位置上。两个用户在若干物品上给出接近的值,就认为他们相似;一个用户喜欢而另一个还没碰过的东西,就是候选推荐。它不需要知道「科幻」是什么,所以能发现「爱看硬科幻的人也爱看某类纪录片」这种靠内容标签拼不出来的关联。

比人还是比物,切法不同

同样是找相似,比较的对象一换,工程性质全变:

切法比较谁矩阵规模与计算时机典型失效
基于用户用户与用户用户数平方,通常线上实时算或定期全量重算兴趣漂移后旧邻居失效,邻居数量大时算不动
基于物品物品与物品物品数平方,通常远小于用户数,可离线预算新品没有交互,相似度算不出来
矩阵分解用户和物品各压成隐向量参数量等于两侧数量乘维度 k,离线训练线上做内积k 太小压不住,太大失去泛化
基于内容物品的属性标签与用户量无关,建好索引即可只能推出同质内容,跨品类关联出不来

前三行属于协同过滤家族,第四行是常被拿来对照的另一条路。电商和视频站点偏爱基于物品,因为物品关系稳定、能提前算好、线上只要查表;用户兴趣变化快的场景则更依赖基于用户。真实系统里这几类通常并存,各自出一批候选,再交给统一的排序层。

相似度怎么算,为什么常用余弦

用户向量的每一维是一个物品,取值是评分或是否交互。两个向量夹角越小,方向越一致。余弦的好处是对长度不敏感——一个打了五十部片的人和一个打了五部片的人,只要口味方向一致,相似度仍然高。想看清它和欧氏距离的分工,可以看余弦相似度与欧氏距离那篇。找最近的一批用户再让他们投票,本质上是KNN的思路,只是距离的定义换了。

有个隐含的坑:没交互的格子填 0,会被当成「不喜欢」。所以隐式反馈场景通常先做归一化,或者改用只看共同出现比例的 Jaccard。评分场景里更常用皮尔逊相关系数,它先减掉每个用户的平均分,把「打分偏松」这个习惯性偏差去掉。

矩阵稀到百分之一,先塌在这里

一个电商平台的用户物品矩阵,密度常常不到百分之一。两个用户共同评过的物品可能只有一两个,这时候算出来的相似度基本是噪声——一个共同物品上的巧合,就能把相似度推到很高,于是推荐变成随机。

缓解手段有几类:设最小共同项阈值,低于阈值不参与计算;用矩阵分解把稀疏矩阵压成几十维隐向量,缺失的格子由内积补出来;或者换成物品基,因为物品之间的共同用户通常比用户之间的共同物品多。

阈值这一步看着粗糙,效果往往比换算法明显。原因很简单:把不可信的相似度剔掉,剩下的虽然少,但都是真的。

冷启动,新用户和新物品都进不来

新用户没有行为,算不出邻居;新物品没人交互,进不了任何人的候选集。这两个缺口是结构性的,调参解决不了。工程上的兜底通常是热门榜、地域或设备信息,加上少量探索流量。

探索这一环最容易被省。省掉的后果是新品永远拿不到曝光,也就永远攒不出交互,形成死循环。给新物品固定留一小份流量,短期看是浪费,长期看是维持候选池更新的必要成本。

越推越准,也越推越窄

推荐结果会影响用户行为,用户行为又反过来训练模型。热门物品被推得多,点击多,权重更高,下一轮推得更多。这个正反馈回路会让长尾物品彻底沉底,最终每个人的首页都长得差不多。它的机制和样本不均衡里多数类吃掉模型注意力是同一回事。

对策在排序之后:限制同一作者或同一类目的占比,给低曝光物品留固定配额,或者用 bandit 方法把一部分流量专门用于试探。这些做法都会让当期的点击率略微下降,换来的是长期的可推荐池不至于枯竭。

它猜的是行为,猜不到动机

输入只有「谁对什么做过什么」,所以它答不出「为什么推荐这个」之外的任何问题。它能说「因为你看过 A」,说不出「因为你最近在装修,所以推这个」——后者需要理解内容和场景。

一次性需求是它的盲区。买过婴儿床的人短期内不会再需要婴儿床,但协同过滤只看到「同类人群都买了」,还会继续推。要去掉这类推荐,得额外引入时间衰减和负反馈信号,光靠相似度矩阵不行。

它也没法跨领域迁移。把电商的相似度矩阵搬到短视频上,一格都用不了,因为用户和物品全换了。换场景就得重新攒行为,这是它最不灵活的地方,也是深度学习推荐模型想解决的起点。

速查:判断一个推荐系统是不是协同过滤

  • 问它推荐理由,答「和你相似的人喜欢」就是
  • 答「因为这部片有这些标签」,那是基于内容
  • 看新物品多久能进推荐池,进不去就是协同过滤的冷启动
  • 看首页是否越用越窄,是则说明缺探索机制

反馈页面信息

请描述需要更正的地方,页面标题和网址会自动附上。

也可以发邮件至 [email protected]