推荐系统中的协同过滤方法详解
推荐系统中的协同过滤方法详解
推荐系统(Recommender System)是通过分析用户的行为和兴趣,自动预测并推荐相应内容的系统。协同过滤(Collaborative Filtering,CF)是推荐系统中最常用的方法之一,它通过发现用户或物品之间的相似性来预测用户的偏好。本文将详细介绍协同过滤的基本概念和实现方法。
介绍
简单来说,推荐系统(Recommender System,RS)就是用户通过明确的查询(search)从数据库中寻找所需内容(items)(如产品、网页或新闻),然后系统基于用户的行为或兴趣,自动预测并推荐相应内容(recommend)。如下图所示:
其中,最重要的就是如何实现推荐系统(Recommender Systems),以下是这个文章要讲的几个推荐方法:协同过滤(Collaborative Filtering, CF),基于内容的推荐方法(Content- based recommenders,CB-R)和潜在因素模型(Latent factors models,LF)。
在讲解前需要先了解几个概念:
Utility Matrix 效用矩阵:
- X= set of Customers 用户集合
- S= set of Items 物品集合
- R=set of ratings 评分集合
效用矩阵就是由X x S → R 形成的矩阵,如下图例子所示就是一个效用矩阵。
Similarity computation 相似度计算:
- cosine similarity 余弦相似度:
- Pearson correlation coefficient 皮尔逊相关系数:
协同过滤推荐-Collaborative Filtering(CF)
协同过滤是一种基于用户行为数据的推荐算法,通过发现用户或物品之间的相似性来预测用户的偏好,进而推荐可能感兴趣的物品。具体包含user-user CF和item-item CF两种实现方,即:
- user-user CF:相似的人喜欢相似的东西
- tem-item CF:相似的物品受到相似用户的喜欢
User-User CF
假设有一个用户x,先找到与用户x的评分行为“相似(similar)”的其他用户组成的集合N。基于集合N中用户的评分,预测x的评分并为其推荐物品。
user-user CF算法内容:
- Prepare Utility Matrix: center, replace NaN’s(准备效用矩阵,进行中心化处理,去除 NaN(缺失值))
- Find be the set 𝑁 of 𝑘 “neighbors” of x (寻找用户 x 的 k 个“邻居”)
- Preselect users who have already rated item i (选出已经对物品i 评分的用户)
- Rank them by 𝑠𝑖𝑚(𝑥, 𝑦), take top k(根据县四度排序,选取k个最相似的邻居)
- Use the formula to predict rating of 𝑥 for 𝑖(使用公式进行预测)
Item-Item CF
- For item 𝑖, find similar items rated by user x
- let 𝑁(𝑖; 𝑥) be the set of such items
- use similarity metrics 𝑠𝑖𝑚() as before
- Estimate rating of user 𝑥 for item 𝑖 based on previous ratings for the items in 𝑁(𝑖; 𝑥)
- The predicted rating of user 𝑥 for item 𝑖 is:
这个方法与User-User CF不同,Item-Item CF关注的是“用户是否会喜欢一个与他们之前喜欢的物品相似的物品”。遍历用户x评分的item,然后在这些item中寻找相似的item来计算rating。