版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上基于hadoop作品推荐系统设计说明书1.引言1.1编写目的 Hadoop是一个开发和运行处理大规模数据的软件平台,是Appach的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算,同时它也是当前最流行的云计算平台,作为IT界的开发人员,我们也要跟上节奏,抓住机遇。本文通过Hadoop云计算平台实现一个推荐系统,希望通过编写本文,能够对Hadoop有一个基本的了解。1.2背景随着互联网技术的兴起,视频网站、社交网站、微博等广泛应用,用户在上网体验的过程中,产生了大量的用户信息移动互联网的迅速发展,使得用户随时随地的产生海量数据。
2、面对海量数据,单机运行处理的模式不论从效率或处理能力上来讲,都已经满足不了如今数据挖掘的需求。在信息过载的大背景下,本文研究内容应运而生。我们选取 Apache Hadoop 作为本应用系统的分布式计算平台。Hadoop 主要由两大核心模块组成:分布式文件系统 HDFS 和分布式批处理框架 MapReduce 两部分组成。HDFS 为我们提供了包括大规模文件存储系统以及对应可靠的备份管理机制的高容错性、高吞吐量的海量数据存储解决方案,而 MapReduce 编程模型为开发人员提供便利的分布式应用开发接口,如通信、同步、调度计算、负载均衡、处理机器异常等分布式计算和分布式系统常常遇到的复杂难题则
3、交由 Hadoop 平台解决,对于上层开发人员来说是透明的。Hadoop 是一个可靠、高效、可扩展的开源分布式软件框架解决方案和工业级应用,主要用于大规模数据的存储和离线业务计算处理,目前被很多大型网站和公司支持和采用,并取得很好的应用效果。本项目名称为:基于hadoop mapreduce的作品推荐系统开发者:杨建拙,张镇,胡志伟,王政。1.3定义MapReduce: MapReduce是Google于2004年出的一个软件架构,此概念首次出现在Jeffrey Dean和Sanjay Ghemawat发表的论文“MapReduce: Simplified Data Processing in
4、 Large Clusters”中。MapReduce编程模型主要用于大规模数据集的并行计算,其中Map表示Reducer映射,表示化简。Hadoop:是MapReduce编程模型的开源实现。1.4参考资料1 Jeffrey Dean,Sanjay Ghemawat,USENIX Association et al.MapReduce: Simplified Data Processing on Large ClustersC.Proceedings of the Sixth Symposium on Operating Systems Design and Implementation(OS
5、Df04).2004:137-149. 2 杨婷 基于MapReduce的好友推荐系统的研究与实现。2. 系统的结构推荐系统模型图Hadoop平台硬件部署图3Mahout推荐算法模块设计说明3.1模块描述推荐算法计算层是整个系统的核心模块,主要组成是 Hadoop 平台以及部署在平台上的已经 MapReduce 并行化的一系列抽象算法的集成,计算层不关心具体的业务逻辑的流程,而只负责用户历史日志数据的处理。例如物质扩散算法,计算输入为(用户 ID,作品 ID,评分数)三元组,在后台进行 MapReduce 并行化计算,然后将计算结果保存在存储层,以便让用户对结果进行请求,返回推荐结果。Maho
6、ut是Apache Software Foundation顶级的免费开源项目,它是从Lucene发展而来的,是一个数据挖掘、机器学习、个性化推荐等若干算法库,为程序员提供了高效算法实例。Mahout中实现了很多算法,如分类聚类、推荐技术、频繁项挖掘等。经过调用Hadoop库,它能够有效的在Hadoop云计算平台上运行。为了提高算法的处理性能,Mahout把运行于单机中的算法转变成MapReduce计算的模式。Mahoutt推荐算法,从数据处理能力上,可以划分为2类:· 单机内存算法实现· 基于Hadoop的分步式算法实现1). 单机内存算法实现单机内存算法实现:就是在单机下
7、运行的算法,是由cf.taste项目实现的,像我的们熟悉的UserCF,ItemCF都支持单机内存运行,并且参数可以灵活配置。单机算法的基本实例,请参考文章:单机内存算法的问题在于,受限于单机的资源。对于中等规模的数据,像1G,10G的数据量,有能力进行计算,但是超过100G的数据量,对于单机来说是不可能完成的任务。2). 基于Hadoop的分步式算法实现基于Hadoop的分步式算法实现:就是把单机内存算法并行化,把任务分散到多台计算机一起运行。Mahout提供了ItemCF基于Hadoop并行化算法实现。基于Hadoop的分步式算法实现。 分步式并行算法的问题在于,如何让单机算法并行化。在单
8、机算法中,我们只需要考虑算法,数据结构,内存,CPU就够了,但是分步式算法还要额外考虑很多的情况,比如多节点的数据合并,数据排序,网路通信的效率,节点宕机重算,数据分步式存储等等的很多问题。3.2功能用Mahout来构建推荐系统。Mahout完整地封装了“协同过滤”算法,并实现了并行化,提供非常简单的API接口;但因为我们不了解算法细节,很难去根据业务的场景进行算法配置和调优。该模块使用Mahout基于Hadoop的分步式算法实现:就是把单机内存算法并行化,把任务分散到多台计算机一起运行。Mahout提供了ItemCF基于Hadoop并行化算法实现。3.3性能Mahout提供了2个评估推荐器的
9、指标,查准率和召回率(查全率),这两个指标是搜索引擎中经典的度量方法。 相关 不相关检索到 A C未检索到 B DA:检索到的,相关的 (搜到的也想要的)B:未检索到的,但是相关的 (没搜到,然而实际上想要的)C:检索到的,但是不相关的 (搜到的但没用的)D:未检索到的,也不相关的 (没搜到也没用的)被检索到的越多越好,这是追求“查全率”,即A/(A+B),越大越好。被检索到的,越相关的越多越好,不相关的越少越好,这是追求“查准率”,即A/(A+C),越大越好。在大规模数据集合中,这两个指标是相互制约的。当希望索引出更多的数据的时候,查准率就会下降,当希望索引更准确的时候,会索引更少的数据。3
10、.4输入项Mahout 的推荐引擎实际接受的输入是 DataModel,它是对用户偏好数据的压缩表示,通过创建内存版 DataModel 的语句我们可以看出:DataModel model = new GenericDataModel(FastByIDMap<PreferenceArray> map);他保存在一个按照用户 ID 或者物品 ID 进行散列的 PreferenceArray,而 PreferenceArray 中对应保存着这个用户 ID 或者物品 ID 的所有用户偏好信息。DataModel 是用户喜好信息的抽象接口,它的具体实现支持从任意类型的数据源抽取用户喜好信息
11、,具体实现包括内存版的 GenericDataModel,支持文件读取的 FileDataModel 和支持数据库读取的 JDBCDataModel,下面我们看看如何创建各种 DataModel。 创建各种 DataModel3.5输出项3.6设计方法(算法)Mahout 提供的协同过滤的推荐策略最经典的三种:User CF, Item CF 和 Slope One。现对这两种算法进行简单的说明:基于用户的 CF 的基本思想相当简单,基于用户对物品的偏好找到相邻邻居用户,然后将邻居用户喜欢的推荐给当前用户。计算上,就是将一个用户对所有物品的偏好作为一个向量来计算用户之间的相似度,找到 K 邻居
12、后,根据邻居的相似度权重以及他们对物品的偏好,预测当前用户没有偏好的未涉及物品,计算得到一个排序的物品列表作为推荐。图 2 给出了一个例子,对于用户 A,根据用户的历史偏好,这里只计算得到一个邻居 用户 C,然后将用户 C 喜欢的物品 D 推荐给用户 A。基于物品的 CF 的原理和基于用户的 CF 类似,只是在计算邻居时采用物品本身,而不是从用户的角度,即基于用户对物品的偏好找到相似的物品,然后根据用户的历史偏好,推荐相似的物品给他。从计算的角度看,就是将所有用户对某个物品的偏好作为一个向量来计算物品之间的相似度,得到物品的相似物品后,根据用户历史的偏好预测当前用户还没有表示偏好的物品,计算得
13、到一个排序的物品列表作为推荐。图 3 给出了一个例子,对于物品 A,根据所有用户的历史偏好,喜欢物品 A 的用户都喜欢物品 C,得出物品 A 和物品 C 比较相似,而用户 C 喜欢物品 A,那么可以推断出用户 C 可能也喜欢物品 C。User CF 和 Item CF 是最常用最容易理解的两种 CF 的推荐策略,但在大数据量时,它们的计算量会很大,从而导致推荐效率较差。因此 Mahout 还提供了一种更加轻量级的 CF 推荐策略:Slope One。Slope One 是有 Daniel Lemire 和 Anna Maclachlan 在 2005 年提出的一种对基于评分的协同过滤推荐引擎的
14、改进方法,假设系统对于物品 A,物品 B 和物品 C 的平均评分分别是 3,4 和 4。基于 Slope One 的方法会得到以下规律:用户对物品 B 的评分 = 用户对物品 A 的评分 + 1用户对物品 B 的评分 = 用户对物品 C 的评分基于以上的规律,我们可以对用户 A 和用户 B 的打分进行预测:对用户 A,他给物品 A 打分 4,那么我们可以推测他对物品 B 的评分是 5,对物品 C 的打分也是 5。对用户 B,他给物品 A 打分 2,给物品 C 打分 4,根据第一条规律,我们可以推断他对物品 B 的评分是 3;而根据第二条规律,推断出评分是 4。当出现冲突时,我们可以对各种规则得
15、到的推断进行就平均,所以给出的推断是 3.5。这就是 Slope One 推荐的基本原理,它将用户的评分之间的关系看作简单的线性关系:Y = mX + b;当 m = 1 时就是 Slope One,也就是我们刚刚展示的输入输出。3.7流程逻辑1.根据 Data Model 创建数据之间线性关系的模型 DiffStorage。2. 基于 Data Model 和 DiffStorage 创建 SlopeOneRecommender,实现 Slope One 推荐策略。3.8接口算法API: org.apache.mahout.cf.taste.impl.recommender.slopeone.SlopeOneRecommender3.9存储分配并没有统计3.10注释设计无3.11限制条件Apache Mah
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026秋季国家管网集团工程技术创新公司(国家管网集团造价管理中心)高校毕业生招聘考试备考试题(浓缩500题)附答案详解(达标题)
- 2026年牡丹江市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(精练)
- 2026国网山西电力校园招聘(提前批)笔试模拟试题浓缩500题带答案详解(完整版)
- 国家管网集团湖南公司2026届秋季高校毕业生招聘考试参考试题(浓缩500题)含答案详解(精练)
- 2026国家管网集团广西公司秋季高校毕业生招聘笔试模拟试题(浓缩500题)及答案详解(典优)
- 2025国网辽宁省电力公司高校毕业生提前批招聘笔试模拟试题浓缩500题含答案详解(考试直接用)
- 2026秋季国家管网集团西北公司高校毕业生招聘笔试模拟试题(浓缩500题)附参考答案详解(黄金题型)
- 2025国网天津市高校毕业生提前批招聘(约450人)笔试模拟试题浓缩500题及1套参考答案详解
- 2026国家管网集团广西公司秋季高校毕业生招聘考试备考试题(浓缩500题)含答案详解(研优卷)
- 2026秋季国家管网集团东北公司高校毕业生招聘考试备考试题(浓缩500题)及答案详解【有一套】
- 2024年安装阳光房订购协议书模板
- 2024-2025学年天津市和平区汇文中学九年级(上)第一次月考数学试卷
- 田径运动会各类表格(表1-11缺表5)
- 农业种植项目方案
- 湖北境内旅游合同模板
- 高中信息技术学业水平考试“必修知识点”讲义
- 反诉状(业主反诉物业)(供参考)
- 二年级上册 乘法口诀表1000题
- 概率论和数理统计浙江大学第四版-课后习题答案解析
- 服务热线外包投标方案技术标
- JB-QGL-TX3016AJB-QTL-TX3016A火灾报警控制器安装使用说明书
评论
0/150
提交评论