2.1.1. 协同过滤(Collaborative Filtering, CF)

核心思想一句话概括

协同过滤的核心思想是:利用群体智慧(很多人)的行为和偏好,来预测(过滤出)你(单个用户)可能喜欢的东西。

简单来说,就是 “物以类聚,人以群分”

  • 人以群分:和你喜好相似的人喜欢的东西,你也很可能喜欢。

  • 物以类聚:你喜欢了一个东西,那么和这个东西相似的其他东西,你也很可能喜欢。

它不需要知道任何关于物品本身的属性(比如电影的类型、导演、演员),也不需要知道用户的个人信息(如年龄、性别),它只依赖于用户和物品之间的互动历史数据(比如评分、点击、购买、观看时长等)。这是它最强大的特点。


协同过滤主要分为两类:

1. 基于内存的协同过滤(Memory-Based CF)

这类方法直接使用整个用户-物品评分矩阵(User-Item Matrix)来进行预测,可以再细分为两种:

a) 基于用户的协同过滤(User-Based CF) -> “人以群分”

  • 步骤

    1. 找到相似用户:计算目标用户(你想为其做推荐的用户)与其他所有用户之间的相似度(常用余弦相似度、皮尔逊相关系数等)。

    2. 找出邻居用户:筛选出与目标用户最相似的K个用户(称为“最近邻”)。

    3. 生成推荐:将这些邻居用户喜欢(但目标用户还未接触过)的物品,根据相似度进行加权,预测出目标用户可能对这些物品的评分,然后推荐评分最高的物品。

  • 例子

    • 用户A和用户B非常相似,都喜欢了《肖申克的救赎》和《教父》。

    • 用户B还喜欢了《阿甘正传》,但用户A没看过。

    • 系统就会把《阿甘正传》推荐给用户A。

b) 基于物品的协同过滤(Item-Based CF) -> “物以类聚”

这是业界更常用、更稳定的一种方法(例如亚马逊、Netflix早期大量使用)。

  • 步骤

    1. 计算物品相似度:不是计算用户的相似度,而是计算物品之间的相似度(基于喜欢它们的用户群体有多大重叠)。

    2. 找出相似物品:对于目标用户曾经喜欢或评分过的每个物品,找出与之最相似的K个物品。

    3. 生成推荐:将这些相似物品(但目标用户还未接触过)根据相似度进行加权,预测用户对它们的喜好程度,然后进行推荐。

  • 例子

    • 很多用户都喜欢了物品《iPhone 15》和《AirPods Pro》,说明这两个物品非常相似。

    • 用户C刚刚购买了《iPhone 15》。

    • 系统就会把《AirPods Pro》推荐给用户C。

2. 基于模型的协同过滤(Model-Based CF)

这类方法不直接使用整个巨大的评分矩阵,而是通过机器学习算法从数据中学习一个模型,再用这个模型进行预测。这能解决基于内存方法的一些扩展性和性能问题。

  • 主流技术矩阵分解(Matrix Factorization, MF) 及其各种变体(如SVD, SVD++)。

  • 思想

    • 把一个巨大的、稀疏的用户-物品评分矩阵,分解成两个小的、稠密的矩阵。

    • 一个是用户矩阵,代表了用户的潜在特征(Latent Features),比如用户对“科幻元素”、“喜剧元素”的偏好程度。

    • 一个是物品矩阵,代表了物品的潜在特征,比如这部电影包含了多少“科幻元素”、“喜剧元素”。

    • 预测一个用户对一个物品的评分,就计算这两个向量的内积。

  • 优势

    • 处理大数据集更高效。

    • 能发现一些潜在的、无法直接解释的特征,挖掘更深层次的关联。


协同过滤的优缺点

优点:

  1. 无需领域知识:不需要了解物品的复杂属性,完全数据驱动。

  2. 能够发现复杂偏好:可以发现用户自己都可能没意识到的、意想不到的喜好。

  3. 推荐新颖性:可能会推荐出一些冷门的、但用户很可能喜欢的东西。

缺点(及常见解决方案):

  1. 冷启动问题(Cold Start)

    • 新用户问题:新用户没有行为数据,无法找到相似用户或推荐物品。 -> 解决方案:结合基于内容的推荐(根据用户注册信息)或进行热门推荐。

    • 新物品问题:新上线的物品没有被任何用户行为过,永远不会被推荐。 -> 解决方案:结合基于内容的推荐(根据物品属性)或进行曝光推荐。

  2. 稀疏性问题(Sparsity):用户数量巨大,物品数量巨大,绝大多数用户只对极少数物品有过行为,导致用户-物品矩阵非常稀疏(大部分是空白),难以找到可靠相似度。

  3. 流行度偏差(Popularity Bias):容易推荐热门物品,导致少数热门物品被反复推荐,而一些质量高但冷门的物品很难被发掘。

  4. “回声室”效应(Echo Chamber):推荐结果可能会越来越同质化,把用户限制在一个信息茧房里。

总结

协同过滤是推荐系统领域最经典、最核心的算法之一,它的思想直观而强大。尽管存在一些缺点,但通过与其他算法(如基于内容的推荐)结合以及模型优化(如矩阵分解),它仍然是现代推荐系统中不可或缺的一部分。你现在在淘宝、抖音、网易云音乐等App中收到的推荐,很多背后都有协同过滤的影子。