协同过滤算法是推荐算法领域中基础但非常重要的部分, 它从1992年开始投入推荐算法的研究过程中, 并在AMAZON等大型电子商务的推荐系统中起到了非常出色的效果.
协同过滤算法可以被分为基于用户的协同过滤算法以及基于项目的协同过滤算法. 本项目将从电影推荐系统的简单构建出发来介绍基于用户的协同过滤算法
用相似统计的方法得到具有相似爱好或者兴趣的相邻用户, 所以称之为以用户为基础(User-based)的协同过滤或基于邻居的协同过滤(Neighbor-based Collaborative Filtering).
基本方法步骤:
- 收集用户信息
收集可以代表用户兴趣的信息, 一般的网站系统使用评分的方式或是给予评价, 这种方式被称为“主动评分”, 另外一种是“被动评分”, 是根据用户的行为模式由系统代替用户完成评价. 不需要用户直接打分或输入评价数据. 电子商务网站在被动评分的数据获取上有其优势, 用户购买的商品记录是相当有用的数据.
- 最近邻搜索(Nearest neighbor search, NNS)
以用户为基础(User-based)的协同过滤的出发点是与用户兴趣爱好相同的另一组用户, 就是计算两个用户的相似度. 例如:查找n个和A有相似兴趣用户, 把他们对M的评分作为A对M的评分预测. 一般会根据数据的不同选择不同的算法, 较多使用的相似度算法有Pearson Correlation Coefficient、Cosine-based Similarity、Adjusted Cosine Similarity.
- 产生推荐结果
有了最近邻集合, 就可以对目标用户的兴趣进行预测,产生推荐结果。依据推荐目的的不同进行不同形式的推荐, 较常见的推荐结果有Top-N 推荐和关系推荐。Top-N 推荐是针对个体用户产生, 对每个人产生不一样的结果, 例如:通过对A用户的最近邻用户进行统计, 选择出现频率高且在A用户的评分项目中不存在的,作为推荐结果。关系推荐是对最近邻用户的记录进行关系规则(association rules)挖掘.