协同过滤(collaborative filtering)是一种在推荐系统中广泛使用的技术。该技术通过分析用户或者物品之间的相似性(”协同”),来预测用户可能感兴趣的物品并推荐给用户[1]。所以,协同过滤本质上是一类技术的统称。在大多数资料中,协同过滤技术分为两类:基于存量(Memory - based)的协同过滤和基于模型(Model- based)的协同过滤。

1 协同过滤的分类

一个推荐问题可以分为评分预测和TopN推荐[2]。评分预测就是预测用户和物品之间的偏好度,TopN推荐就是基于偏好度对物品数量进行截断然后推荐给用户。评分预测问题可以用下图[3]来描述。

image-20210212010340721

在上图中,纵轴代表用户,横轴代表物品,每个格子代表了该用户对该物品的偏好度。上图中的问号表示该用户对该物品没有行为。在推荐系统中,用户对物品的行为通常是非常稀疏的,稀疏度几乎可以达到90%。所以,评分预测问题可以理解为一个矩阵补全问题,即预测问号处的实际分数。而协同过滤技术也是围绕该问题衍生而来的,协同过滤技术的分类如下:

  • 基于存量(Memory - based)的协同过滤
    • 基于用户(User-based)的协同过滤
    • 基于物品(Item-based)的协同过滤
  • 基于模型(Model - based)的协同过滤

个人理解,Memory - based和Model - based的区别是记忆和泛化的区别。Memory - based侧重于从历史行为中捕获一些关联规则或规律进行推荐,其存在的问题是用户对物品的行为比较稀疏;Model- based解决数据稀疏问题,其通过模型的方式对用户-物品的评分矩阵补全未知的评分,典型的有MF、隐语义模型、贝叶斯网络等。

User-based基于一个假设,兴趣相似的用户其偏好的物品也是相似的。当一个用户a需要个性化推荐的时候,找到和这个用户a相似的用户群体,看看他们喜欢什么商品,然后将这些商品推荐给a,这就是User-based。Item-based是基于用户行为挖掘出具有强相关性的商品对(a, b),然后基于用户的历史行为(a)和商品对做推荐(推荐b)。

2 基于模型(Model - based)的协同过滤

个人觉得MF是最能代表Model - based的模型。MF的思路很简单,知乎用户推荐系统玩家介绍的很好了,这里就直接贴过来了。

preview

image-20210213004301965

参考文献

[1] 协同过滤 维基百科

[2] 推荐系统之矩阵分解家族

[3] 推荐系统玩家 之 推荐系统入门——推荐系统的发展历程(上)