2KB项目,专业的源码交易网站 帮助 收藏 每日签到

使用 Hadoop 和 Mahout 实现推荐引擎

  • 时间:2019-01-23 18:51 编辑:2KB 来源:2KB.COM 阅读:388
  • 扫一扫,手机访问
  • 分享
摘要:
Hadoop Apache Mahout 英文原文:Implementing a recommender engine using Hadoop and Mahout

作为我之前博客的延续,在这篇博客中,我将探讨如何使用 MahoutHadoop 实现一个 推荐引擎

  • 第一部分 介绍 MapReduce 和 为什么为了利用并行计算的优势,一些算法需要而重写
  • 第二部分 我会探讨 利用Hadoop的优势 推荐算法 在 Mahout 中如何推演
  • 第三部分 我会用 使用案例 来展示 如何在Hadoop和Mahout中实现 MapReduce 推荐引擎
利用并行计算的优势,一个基础要点是,集群中的计算机可以在不依赖于和其他计算机共享数据的情况下进行同一个任务。考虑排序算法情况下,他们并不是设计用于如下场景:我们将大块数据集拆分,然后递交给许多并行计算的计算机,当数据返回的时候,将大块数据集组装,得出结果。如果我们需要做排序,我们需要写一个利用MapReduce优点的算法。Terasort 算法是一个高度利用MapReduce优势的排序技术。

推荐引擎十分相似,如果我们需要利用MapReduce的优点,我们需要重写它。Mashout支持推荐算法。推荐引擎包含如下组件:

  • 基于用户/项目的推荐系统
  • 相似性(近邻概念)

在推荐引擎里面,相当于“Hello world”的程序就是Netflix电影评分。电影数据可以在这里下下载。测试数据包含用户租借电影的历史数据和用户对电影的评分数据。当你需要租借一部新的电影,推荐引擎会基于你的租借习惯,还有其他跟你相似的用户的租借记录,给你推荐一些电影。测试数据保存在事务型数据库里面,就如MySQL。我们可以写一个程序读取测试数据并把它导入Hadoop的文件系统里面。当你运行Mashout MapReduce,就会得到前“n”个推荐电影。如果你细心观察测试数据,你会发现有userid, itemid, rating字段,并以逗号隔开。它会假设,你在数据库中维护着用户和项目的数据表,并且通过这两个表的结合,给用户提供有意义的信息。

下面,我们一起看看基于项目的推荐算法是如何通过MapReduce实现的,想获得更多这方面的信息,可以查阅Mahout in Action by Manning, chapter 6.

推荐系统相关

  • 第一步,利用上面的数据建立一个co-occurrence矩阵。矩阵主要作用是告诉我们2个项目同时被用户购买的发生次数。它基本上是一个以n×n的方形矩阵(n是用户购买的所有项目的总数)。
  • 下一步,计算用户购买了哪些项目的向量,以单列矩阵实现。
  • 最后一步,把第一步生成的co-occurrence矩阵与用户向量相乘得到推荐数据。我们把最大非零值的项目推荐给用户。

下面让我们来分析一下航班预订系统。当一个用户需要购买到达某地的机票的时候,我们就会基于他之前购买过的航班记录和其他相似乘客的订票记录,给他推荐航班。假设MySQL里面存在这样的数据,我们可以使用sqoop脚本把数据导入到HDFS:

sqoop import --connect jdbc:mysql://localhost/reservation --username krishna --password pass123  --table useritem
在Hadoop中运行以下mashout脚本
hadoop jar mahout-core-0.6-job.jar org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -Dmapred.input.dir=input/input.txt -Dmapred.output.dir=output --usersFile input/users.txt --booleanData --similarityClassname SIMILARITY_COOCCURRENCE

最后,运行sqoop脚本把分析结果导回到mysql中:

sqoop export --connect jdbc:mysql://localhost/reservation --username krishna --password pass123 --table useritem --export-dir useritem/part-m-00000
现在,我们就可以读取useritem表把推荐结果返回给你的用户了。 本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部