浅谈Mahout在个性化推荐系统中的应用_第1页
浅谈Mahout在个性化推荐系统中的应用_第2页
浅谈Mahout在个性化推荐系统中的应用_第3页
浅谈Mahout在个性化推荐系统中的应用_第4页
浅谈Mahout在个性化推荐系统中的应用_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、    浅谈mahout在个性化推荐系统中的应用    邓秀娟摘要:面对当今信息过载的问题,推荐系统发挥了重要的作用,构建一种基于mahout的推荐引擎使推荐系统发挥更优的推荐效果。本文介绍了mahout中的各种推荐算法的基本特点,基于某约会网站的数据示例,对几种推荐算法进行尝试性测试,从而找出最优的算法组合方案实现一个推荐引擎。关键词:推荐系统;mahout;单机内存算法;组件:tp311 :a :1009-3044(2016)25-0171-02随着信息技术和互联网的发展,人们逐渐从信息匮乏的时代进入了信息过载的时代。推荐系统的出现可以帮助用户发现对

2、自己有价值的信息,同时能够让信息展现在对它感兴趣的用户面前。个性化推荐系统依赖于用户的行为数据,目前被广泛地应用在包括电子商务、社交网络、电影和视频、音乐、个性化邮件和广告、基于位置的服务、阅读等领域中,从而提高相关网站的点击率和转化率。mahout是来自apache的、开源的机器学习软件库,主要提供了机器学习领域的推荐引擎(协同过滤)、聚类和分类算法的实现,为推荐系统的应用和研究提供了支持。本文通过对mahout中的推荐算法进行研究,使用一个示例对推荐算法进行评估,从而找到一个有效的推荐程序应用到示例中,为用户实现推荐。1 mahout的推荐算法基于hadoop分布式框架的机器学习算法库ma

3、hout封装了多种机器学习算法的分布式实现,由多个组件混搭而成,各个组件的组合可以定制,从而针对特定应用提供理想的推荐。通常包括的组件如下:数据模型由datamodel实现;用户间的相似性度量由usersimilarity实现;用户近邻的定义由userneighborhood实现;推荐引擎由一个reommender实现。从数据处理能力上,mahout推荐算法可以分为单机内存算法和基于hadoop的分布式算法,本文仅讨论单机内存算法。1.1 推荐数据的表示推荐引擎的输入是偏好数据(preference data),通常用(用户id,物品id,偏好值)的元组集合来表示。在mahout中使用data

4、model对推荐程序的输入数据进行封装,gernericdatamodel是现有datamodel实现中最简单的,它通过程序在内存中构造数据表示形式,将偏好作为输入,将用户id映射到这些用户数据所在的preferencearray(一个接口,表示一个偏好的聚合)上。若用户和物品的数据无偏好值时,可以使用genericbooleanprefdatamodel来实现。基于文件的数据使用filedatamodel,从文件中读取数据,将所得的偏好数据存储到内存,即gernericdatamodel中。基于数据库的数据用jdbcdatamodel实现,若使用mysql数据库,可以使用其子类mysqljd

5、bcdatamodel。1.2 相似性度量基于用户的推荐程序和基于物品的推荐程序都依赖于usersimilarity这个组件,及用户或物品之间的相似性,缺乏对用户或物品的相似性定义的推荐方法是毫无意义的。相似度算法包括了欧氏距离相似度(euclideandistancesimilarity)、皮尔逊相关系数相似度(pearsoncorrelationsimilarity)、曼哈顿距离相似度(cityblocksimilarity)、对数似然相似度(loglikehoodsimilarity)、谷本系数相似度(tanimotocoefficientsimilarity)等1.3 用户近邻近邻算法

6、适用于基于用户的协同过滤算法,选出前n个最相似的用户构成邻域,作为最终推荐参考的用户。近邻算法分为2种:基于固定大小和基于阈值的。nearestnuserneighborhood实现基于固定大小的邻域,指定n的个数,如选出前10个最相似的用户;thresholdusernerghborhood实现基于阈值的邻域,指定比例,如选择前10%最相似的用户。1.4 推荐算法mahout的推荐算法以recommender作为基础父类,实现类有基于用户的推荐算法、基于物品的推荐算法、基于物品的knn的推荐算法、slope-one推荐算法、基于奇异值分解(svd)的推荐算法、基于聚类(treecluster

7、)的推荐算法。推荐算法对比如表1所示。2 mahout在推荐系统中的应用上节介绍了mahout提供的推荐算法,接下来讲述如何在数据集上使用mahout开发推荐系统。首先分析样本数据,对数据做预处理,然后选取一个方法,收集数据、评估结果,多次重复这个过程,找到最优的推荐算法创建一个推荐引擎。本示例数据来自捷克的一个约会网站(http:/libimseti.cz)。该网站的用户可以对其他用户的档案进行评分,分值从1到10不等,分值1代表“喜欢”,分值10代表“不喜欢”。2.1 数据的输入示例数据集有17359346份评分,存储为ratings.dat文件,是一个简单地以逗号分界的文件,包含用户id

8、、档案id和评分,档案是指其他用户的档案。每行代表一个用户对另一个用户档案的一次评分,如:1,133,8,表示用户id为“1”的用户对档案id为“133”的评分值为8。输入数据的格式直接可以用于mahout的filedatamodel。即用户和档案是数字,文件按字段依次以逗号分隔:用户id,物品id,偏好值。2.2 寻找一个有效的推荐程序为了创建一个推荐引擎来处理示例数据,需要从mahout中挑选一个推荐程序。通过在基于用户的推荐程序和基于物品的推荐程序下选择几种不同的相似性度量和邻域定义进行尝试性测试,测试结果如表2、表3所示。 以上的结果较为理想。这些推荐程序估计的用户偏好平均偏差在1.1

9、21.56之间,而取值范围为110。最佳的方案是选择基于欧氏距离相似性度量和2个最近邻域的基于用户的推荐程序,其评分估值为1.12。从结果看出,平均误差,即估计值和实际值的平均差值翻了大概2倍,具体值超过了2,显然基于物品的推荐方法相较于基于用户的推荐方法效果不佳。slope-one推荐程序在数据模型中的大多数物品对之间求得一个差值。示例数据集中有168791个物品(档案),意味着潜在存储了280亿个差值,它太庞大因而无法存入内存。可以考虑在数据库中存储这些差值,但会极大地降低性能。对于示例数据集,slope-one推荐程序也并非最佳选择。读者还可以尝试更多的组合进行测试,经过目前所做的测试进

10、行对比分析,这里在mahout中选择最佳方案:基于用户的推荐程序,采用欧氏距离测度且邻域为2。2.3 评估性能使用mahout的loadevaluator类评估该数据集上使用的推荐程序,采用如下的标识类参数:-server d64 xmx2048 xx:+useparallelgc xx:+userparalleloldgc。在测试机上平均每次推荐会用218ms。这个程序在运行时仅占用1gb左右的堆空间。这些测试结果是否可被接受,依赖于应用的需求和可用的硬件资源。对于许多应用而言,这些测试数据应该还是符合要求的。3 结束语本文通过使用一个来自约会网站的数据作为示例,分析了数据的格式,使之成为适合mahout应用的数据输入格式。通过尝试性测试不同算法组件的组合进行对比,找出最佳的推荐程序,并对推荐程序进行性能评估,使读者了解在mahout选择和创建一个推荐引擎的基本过程。本文仅讨论了基于单机内存的算法,基于hadoop的分布式算法将是今后考虑的研究方向。参考文献:1 朱倩,钱立.基于mahout的推荐系统的分析与设计j.科技通报,2013(6):35-36.2 韩怀梅,李淑琴.基于mahout的个性化推荐系统架构

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论