协同过滤(CF)是推荐系统领域中经常应用的一种强大的算法方法。其基本前提是通过收集众多用户的偏好来预测特定用户的兴趣。支持 CF 的假设是,如果两个用户在一个问题上达成一致,他们也可能在其他问题上达成一致。
协同过滤的起源和演变
协作过滤首次提及是在 1992 年,由 Xerox PARC 的 David Goldberg 和其他人在开发早期电子邮件系统 Tapestry 时提出。 Tapestry 旨在利用人类智能,并允许人们向传入消息添加注释或“标签”,以便稍后用于过滤消息。
1994 年,明尼苏达大学的 GroupLens 项目通过提出自动 CF 方法引入了“协同过滤”一词。该项目将 CF 用于 Usenet 新闻,这是一个新闻组网络,用户可以在其中发布内容,也可以根据自己的喜好进行过滤。
展开协同过滤
协同过滤主要通过创建用户-项目矩阵来运行,其中包含用户对项目给出的偏好(如评分)。例如,在电影推荐系统的背景下,该矩阵将包含用户对不同电影给出的评分。
CF 基于两个主要范例:基于内存的 CF 和基于模型的 CF。
-
基于内存的 CF:也称为基于邻域的 CF,这种范式根据用户或项目之间的相似性进行预测。它被细分为User-User CF(识别与预测用户相似的用户)和Item-Item CF(识别与用户评分相似的项目)。
-
基于模型的 CF:这种方法涉及开发用户模型以了解他们的偏好。涉及的技术有聚类、矩阵分解、深度学习等。
协同过滤背后的机制
协作过滤流程的核心包括两个步骤:查找具有相似品味的用户并根据这些相似用户的偏好推荐项目。以下是其操作的概要:
- 计算用户或项目之间的相似度。
- 预测用户尚未评分的项目的评分。
- 推荐预测评分最高的前 N 个项目。
用户或项目之间的相似度通常使用余弦相似度或皮尔逊相关性来计算。
协同过滤的主要特点
- 个性化: CF提供个性化推荐,因为它在推荐时考虑了个体用户的行为。
- 适应性: 它可以适应用户不断变化的兴趣。
- 可扩展性: CF算法能够处理大量数据。
- 冷启动问题: 新用户或新商品可能会出现问题,因为没有足够的数据来做出准确的推荐,这个问题称为冷启动问题。
协同过滤的类型
类型 | 描述 |
---|---|
基于内存的CF | 使用先前用户交互的记忆来计算用户的相似度或项目的相似度。 |
基于模型的CF | 涉及模型学习的步骤,然后使用该模型进行预测。 |
混合CF | 结合基于内存和基于模型的方法来克服一些限制。 |
使用协同过滤:挑战和解决方案
CF 广泛应用于各个领域,包括但不限于电影、音乐、新闻、书籍、研究文章、搜索查询、社交标签和一般产品。然而,也存在一些挑战,例如:
- 冷启动问题: 解决方案在于混合模型,其中结合了基于内容的过滤或使用有关用户或项目的附加元数据。
- 稀疏性: 许多用户与少量项目交互,从而使用户-项目矩阵变得稀疏。降维技术(例如奇异值分解)可以缓解这个问题。
- 可扩展性: 随着数据的增长,快速提供建议可能会变得计算密集型。解决方案涉及分布式计算或使用更具可扩展性的算法。
与类似技术的比较
方法 | 描述 |
---|---|
协同过滤 | 基于这样的假设:人们喜欢与他们过去喜欢的东西相似的东西,以及品味相似的人喜欢的东西。 |
基于内容的过滤 | 通过比较项目的内容和用户的个人资料来推荐项目。 |
混合方法 | 这些方法结合了协同过滤和基于内容的过滤,旨在避免某些限制。 |
协同过滤的未来展望
随着更复杂的机器学习和人工智能技术的出现,CF 方法正在不断发展。深度学习技术现在用于开发 CF 的复杂模型,提供更准确的建议。此外,解决数据稀疏性和冷启动问题挑战的研究正在进行中,有望在未来提供更高效和有效的CF方法。
代理服务器和协同过滤
代理服务器(例如 OneProxy 提供的代理服务器)可以间接帮助协作过滤。它们提供匿名性和安全性,允许用户隐私地浏览。这鼓励用户自由地与互联网上的项目进行交互,而不必担心泄露他们的隐私。生成的数据对于 CF 至关重要,因为它在很大程度上依赖于用户-项目交互来提出建议。
相关链接
- 群镜研究
- Netflix 研究
- 亚马逊研究
- ACM数字图书馆 用于协同过滤的学术研究
- 谷歌学术 有关协同过滤的学术论文