首页 存档 技术 查看内容

为豆瓣电影实现User-based协同过滤的推荐系统

2018-3-30 13:00 |来自: 互联网 1315 0

摘要: 架构师(JiaGouX)我们都是架构师! 使用mahout实现user-based cf的电影推荐协同过滤(Collaborative Filtering),简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐使用者感兴趣的信息,个人透过合作 ...

架构师(JiaGouX)
我们都是架构师!


使用mahout实现user-based cf的电影推荐

协同过滤(Collaborative Filtering),简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐使用者感兴趣的信息,个人透过合作的机制给予信息相当程度的反馈(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息,反馈不一定局限于特别感兴趣的,特别不感兴趣信息的纪录也相当重要,比如浏览信息,收藏,分享,点击等。

在前一篇文章 使用Spark MLlib给豆瓣用户推荐电影 中,在那篇文章我我介绍了使用Spark MLlib实现了model-based 的系统过滤之推荐系统。但是Spark并没有提供user-based, item-based这两种memory-based传统的协同过滤算法,所以接下来的这两篇文章我会介绍使用Mahout实现user-based和item-based的电影推荐系统,数据还是基于豆瓣用户对电影的评论数据集。

Mahout是Apache的实现大规模的高性能的机器学习框架。它提供了很多的机器学习的算法和工具,以及利用Hadoop实现分布式的计算,本文将使用它的协同过滤算法(CF)实现非分布式的单机程序。

user-based协同过滤推荐算法就是通过不同用户对item的评分来评测用户之间的相似性,基于用户之间的相似性做出推荐。
下一篇文章中介绍item-based协同过滤推荐算法是通过用户对不同item的评分来评测item之间的相似性,基于item之间的相似性做出推荐。

User-based 优点

  • 能够过滤机器难以自动内容分析的信息,如艺术品,音乐等。

  • 共用其他人的经验,避免了内容分析的不完全或不精确,并且能够基于一些复杂的,难以表述的概念(如信息质量、个人品味)进行过滤。

  • 有推荐新信息的能力。可以发现内容上完全不相似的信息,使用者对推荐信息的内容事先是预料不到的。可以发现使用者潜在的但自己尚未发现的兴趣偏好。

  • 推荐个性化、自动化程度高。能够有效的利用其他相似使用者的反馈信息。加快个性化学习的速度。

缺点

  • 新使用者问题(New User Problem) 系统开始时推荐质量较差

  • 新项目问题(New Item Problem) 质量取决于历史资料集

  • 稀疏性问题(Sparsity)

  • 系统延伸性问题(Scalability)。

下面根据代码介绍具体的实现:

public class DoubanUserBasedRecommender {

public static Map

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部