2.1.1. 协同过滤(Collaborative Filtering, CF)¶
核心思想一句话概括¶
协同过滤的核心思想是:利用群体智慧(很多人)的行为和偏好,来预测(过滤出)你(单个用户)可能喜欢的东西。
简单来说,就是 “物以类聚,人以群分”。
人以群分:和你喜好相似的人喜欢的东西,你也很可能喜欢。
物以类聚:你喜欢了一个东西,那么和这个东西相似的其他东西,你也很可能喜欢。
它不需要知道任何关于物品本身的属性(比如电影的类型、导演、演员),也不需要知道用户的个人信息(如年龄、性别),它只依赖于用户和物品之间的互动历史数据(比如评分、点击、购买、观看时长等)。这是它最强大的特点。
协同过滤主要分为两类:¶
1. 基于内存的协同过滤(Memory-Based CF)¶
这类方法直接使用整个用户-物品评分矩阵(User-Item Matrix)来进行预测,可以再细分为两种:
a) 基于用户的协同过滤(User-Based CF) -> “人以群分”
步骤:
找到相似用户:计算目标用户(你想为其做推荐的用户)与其他所有用户之间的相似度(常用余弦相似度、皮尔逊相关系数等)。
找出邻居用户:筛选出与目标用户最相似的K个用户(称为“最近邻”)。
生成推荐:将这些邻居用户喜欢(但目标用户还未接触过)的物品,根据相似度进行加权,预测出目标用户可能对这些物品的评分,然后推荐评分最高的物品。
例子:
用户A和用户B非常相似,都喜欢了《肖申克的救赎》和《教父》。
用户B还喜欢了《阿甘正传》,但用户A没看过。
系统就会把《阿甘正传》推荐给用户A。
b) 基于物品的协同过滤(Item-Based CF) -> “物以类聚”
这是业界更常用、更稳定的一种方法(例如亚马逊、Netflix早期大量使用)。
步骤:
计算物品相似度:不是计算用户的相似度,而是计算物品之间的相似度(基于喜欢它们的用户群体有多大重叠)。
找出相似物品:对于目标用户曾经喜欢或评分过的每个物品,找出与之最相似的K个物品。
生成推荐:将这些相似物品(但目标用户还未接触过)根据相似度进行加权,预测用户对它们的喜好程度,然后进行推荐。
例子:
很多用户都喜欢了物品《iPhone 15》和《AirPods Pro》,说明这两个物品非常相似。
用户C刚刚购买了《iPhone 15》。
系统就会把《AirPods Pro》推荐给用户C。
2. 基于模型的协同过滤(Model-Based CF)¶
这类方法不直接使用整个巨大的评分矩阵,而是通过机器学习算法从数据中学习一个模型,再用这个模型进行预测。这能解决基于内存方法的一些扩展性和性能问题。
主流技术:矩阵分解(Matrix Factorization, MF) 及其各种变体(如SVD, SVD++)。
思想:
把一个巨大的、稀疏的用户-物品评分矩阵,分解成两个小的、稠密的矩阵。
一个是用户矩阵,代表了用户的潜在特征(Latent Features),比如用户对“科幻元素”、“喜剧元素”的偏好程度。
一个是物品矩阵,代表了物品的潜在特征,比如这部电影包含了多少“科幻元素”、“喜剧元素”。
预测一个用户对一个物品的评分,就计算这两个向量的内积。
优势:
处理大数据集更高效。
能发现一些潜在的、无法直接解释的特征,挖掘更深层次的关联。
协同过滤的优缺点¶
优点:¶
无需领域知识:不需要了解物品的复杂属性,完全数据驱动。
能够发现复杂偏好:可以发现用户自己都可能没意识到的、意想不到的喜好。
推荐新颖性:可能会推荐出一些冷门的、但用户很可能喜欢的东西。
缺点(及常见解决方案):¶
冷启动问题(Cold Start):
新用户问题:新用户没有行为数据,无法找到相似用户或推荐物品。 -> 解决方案:结合基于内容的推荐(根据用户注册信息)或进行热门推荐。
新物品问题:新上线的物品没有被任何用户行为过,永远不会被推荐。 -> 解决方案:结合基于内容的推荐(根据物品属性)或进行曝光推荐。
稀疏性问题(Sparsity):用户数量巨大,物品数量巨大,绝大多数用户只对极少数物品有过行为,导致用户-物品矩阵非常稀疏(大部分是空白),难以找到可靠相似度。
流行度偏差(Popularity Bias):容易推荐热门物品,导致少数热门物品被反复推荐,而一些质量高但冷门的物品很难被发掘。
“回声室”效应(Echo Chamber):推荐结果可能会越来越同质化,把用户限制在一个信息茧房里。
总结¶
协同过滤是推荐系统领域最经典、最核心的算法之一,它的思想直观而强大。尽管存在一些缺点,但通过与其他算法(如基于内容的推荐)结合以及模型优化(如矩阵分解),它仍然是现代推荐系统中不可或缺的一部分。你现在在淘宝、抖音、网易云音乐等App中收到的推荐,很多背后都有协同过滤的影子。





