协同过滤介绍Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。
Mahout使用了Taste来提高协同过滤算法的实现,它是一个基于Java实现的可扩展的,高效的推荐引擎。Taste既实现了最基本的基于用户的和基于内容的推荐算法,同时也提供了扩展接口,使用户可以方便的定义和实现自己的推荐算法。同时,Taste不仅仅只适用于Java应用程序,它可以作为内部服务器的一个组件以HTTP和Web Service的形式向外界提供推荐的逻辑。Taste的设计使它能满足企业对推荐引擎在性能、灵活性和可扩展性等方面的要求。
协同过滤是目前推荐系统中使用最广泛也是最成熟的一种推荐算法,分为基于用户的协同过滤(User-based CF)和基于项目的协同过滤(Item-based CF),它们都是基于邻域的推荐。协同过滤主要分为三个步骤:用户项目评分矩阵的建立、相似度计算、评分预测。其中相似度计算是最核心的部分,后续的评分预测是在此基础上完成的,相似度的计算直接决定着推荐系统的质量,如图。
基于用户的 CF 的基本思想相当简单,基于用户对物品的偏好找到相邻邻居用户,然后将邻居用户喜欢的推荐给当前用户。计算上,就是将一个用户对所有物品的偏好作为一个向量来计算用户之间的相似度,找到 K 邻居后,根据邻居的相似度权重以及他们对物品的偏好,预测当前用户没有偏好的未涉及物品,计算得到一个排序的物品列表作为推荐。下图给出了一个例子,对于用户 A,根据用户的历史偏好,这里只计算得到一个邻居 - 用户 C,然后将用户 C 喜欢的物品 D推荐给用户 A。
如何计算相似的用户常见计算公式如下:
欧几里得距离,如图:
如下图所示,其中dist(A,B)为三维空间中两点间的距离。
拓展到n维空间时的一般性公式为:
使用Mahout 实现推荐这里我采用的将用户的行为数据保存到.csv 文件中,通过文件去构建DataModel,mahout也提供了连接数据库的方式去构建。生成.csv 文件的代码在这里不贴了。
数据格式
public List getRecommendItems(Long uid) throws Exception{
List recommendedItemList = null;
List
org.apache.mahout
mahout-core
0.9
org.apache.mahout
mahout-integration
0.9
相关系统演示
SSM - 基于mahout实现协同过滤推荐的插画交流平台
点我查看视频号中其他系统
参考资料
Mahout实例(UserCF,ItermCF,SlopOne)_kyrin_云中鹤的博客-CSDN博客
https://www.csdn.net/tags/NtjaAgzsMTY2MDUtYmxvZwO0O0OO0O0O.html
Mahout的taste推荐系统里的几种Recommender分析_beck_zhou的博客-CSDN博客
mahout推荐2 - jseven - 博客园
Mahout介绍和简单应用 - ahu-lichang - 博客园
Mahout推荐系统初试 - 简书
基于用户兴趣模型的推荐算法
Mahout推荐算法编程实践_wolvesqun的博客-CSDN博客
如何动手设计和构建推荐系统?看这里 - 知乎
MovieLens | GroupLens 测试数据
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)