协同过滤 ======== 协同过滤(Collaborative Filtering)是推荐系统中最基础的技术之一。它的基本想法很简单:如果两个用户过去喜欢相似的物品,那么他们未来也可能有相似的偏好。或者反过来说,如果两个物品被相似的用户群体喜欢,那么喜欢其中一个物品的用户也可能喜欢另一个。 这个想法最早在1992年的Tapestry系统 :cite:`goldberg1992using` 中被提出,后来在Amazon、Netflix等公司得到了广泛应用。 协同过滤的工作过程可以简单描述为:首先收集用户的历史行为数据(如评分、点击、购买记录),然后计算用户之间或物品之间的相似度,最后基于这些相似度为用户生成推荐。 根据计算相似度的对象不同,协同过滤可以分为两种基本类型: 基于用户的协同过滤(User-based CF)(:numref:`usercf`) :找到与目标用户兴趣相似的其他用户,然后推荐这些相似用户喜欢的物品。 基于物品的协同过滤(Item-based CF)(:numref:`itemcf`) :找到与用户历史喜欢物品相似的其他物品进行推荐。 除了这两种传统方法,矩阵分解(Matrix Factorization)(:numref:`matrix_factorization`) 作为一种基于模型的协同过滤方法,通过学习用户和物品的低维向量表示来进行推荐,在实际应用中也取得了很好的效果。 接下来我们将详细介绍这些协同过滤方法的原理和实现。 .. toctree:: :maxdepth: 1 1.usercf.md 2.itemcf.md 3.swing.md 4.mf.md 5.summary.md