协同过滤是推荐系统中一种预测用户偏好的技术,它利用其他用户的行为和偏好。其基本原则是,过去有相似偏好(例如,喜欢相似项目)的用户将来也可能再次有相似偏好。与分析项目属性(例如,流派、关键词)的基于内容的推荐方法不同,协同过滤仅关注用户与项目的交互数据,例如评分、点击或购买历史。该方法主要分为两类:基于用户的和基于项目的过滤。基于用户的过滤识别口味相似的用户并推荐这些用户喜欢的项目,而基于项目的过滤识别与用户已经交互过的项目相似的项目并推荐它们。
一种常见的实现是 k近邻 (k-NN) 算法。对于基于用户的过滤,系统根据用户的交互模式计算用户之间的相似度分数(例如,余弦相似度)。例如,如果用户 A 和用户 B 都对电影 X 和 Y 给予高评分,系统可能会推荐用户 B 喜欢但用户 A 尚未看过的电影。基于项目的过滤工作方式类似,但比较的是项目。例如,如果看过电影 A的用户也看过电影 B,系统会推断相似性并向其他看过电影 A的用户推荐电影 B。另一种方法是矩阵分解,它将用户-项目交互矩阵分解为潜在因子(例如,代表用户偏好和项目特征),以预测缺失的交互。这种方法在 Netflix 等平台上的电影推荐中被广泛使用。
协同过滤的主要优点是它能够在不要求项目元数据的情况下发现复杂的模式。然而,它面临着挑战,例如冷启动问题(难以向新用户或没有交互数据的项目进行推荐)和数据稀疏性(有限的用户-项目交互会降低准确性)。对于大型数据集,可扩展性也可能是一个问题,因为计算成对相似度会变得计算成本高昂。开发人员通常通过将协同过滤与基于内容的方法(混合系统)相结合,或使用隐式反馈等技术(例如,点击而不是明确评分)来解决这些问题。像 Surprise 或 TensorFlow Recommenders 这样的库提供了有效实现这些算法的工具,使得协同过滤尽管存在局限性,但仍然是许多现实世界系统中的实用选择。