APP下载

基于Mahout的推荐系统构建

2014-09-21陶维成王婷婷

关键词:布尔环境算法

陶维成 王婷婷 姚 琪

(1.芜湖职业技术学院信息工程系,安徽 芜湖 241006;2.南京航空航天大学经济与管理学院,南京 210016)

自1992年Goldberg D等人提出首个基于协同过滤的推荐系统以来,信息化技术个性化服务得到了快速发展。Web技术和网络通信技术的深入发展,也促进了推荐系统的应用领域,拓展了推荐系统的应用平台。推荐系统是建立在用户、项目及用户对项目的评价基础上,针对“信息过载”问题,对其进行处理、挖掘,找到相似的用户或项目,利用用户或项目的相似性,实现向用户推荐其感兴趣和所需要的项目。Apache Mahout是 ASF(Apache Software Foundation)一个实现可扩展的机器学习算法程序库的开源项目,提供机器学习领域的一些经典算法的高效实现。推荐系统利用信息过滤技术,将不同的内容(如电影、音乐、书籍、商品、新闻、图片等)推荐给对其可能感兴趣的用户[1-2]。同时,将用户的个人偏好与特定的参考特征进行比较,并预测用户对一些未评分项目的偏好程度实现向用户自动推荐,从项目本身提供的信息或从用户所在的社区或社团环境选取特定的参考特征[3]。

本研究基于Mahout环境创建布尔推荐系统原型,旨在帮助开发者更高效地实现个性化推荐功能,提高用户满意度。所创建的推荐系统,使用shell控制台执行指令,在Ubuntu10.04平台上运行,也能够在大多数Linux版本及装有cygwin的windows平台上运行。

1 开发环境构建

在创建推荐系统之前,首先应准备好开发环境。本文的开发实验环境安装步骤如下:

(1)准备开发实验工具及安装。操作系统:Ubuntu10.04,JDK 1.6以上版本,Hadoop,Mahout,Maven及其他工具.进入到Mahout目录下。命令如下:

(2)安装注意事项。如果安装失败,试着进行修复。命令如下:

一般情况在 coretargetsurefire - reports下能够找出问题产生的原因。

2 创建推荐系统

成功安装Mahout后,可以尝试执行Mahout内置的例子,检验所构建的开发平台是否可以进行开发实验。成功运行Mahout内置示例之后,即可用自己的数据创建推荐系统。

2.1 创建Maven工程

到Mahout目录下(core目录的父目录)创建Maven工程:

通过mvn工具创建名为mahoutrec的空工程,包命名空间为com.unresyst;接下来,到mahoutrec目录下,运行所创建的新工程:

如果第二行命令没有通过-e选项,应设法找出错误所在。

2.2 配置工程依赖关系

从工程目录(mahoutrec)打开pom.xml文件,配置依赖关系如下:

添加 Mahout依赖关系到 pom.xml中,<dependency>必须在父元素<dependencies>下面:

如果所使用的版本不是0.4,用安装的版本号替换0.4。

在<parent>元素下,添加<relativePath>设置

相对路径

<relativePath >..pom.xml< relativePath >

配置完成的pom.xml如下所示:

■ 对工程进行编译:

编译成功,则显示“Build sccessful”的消息。

2.3 推荐系统的原型

经过上述步骤后,基于Mahout平台的推荐系统所需要的开发运行环境构建完成。在工程目录下创建 datasets目录,在该目录下创建 dummybool.csv文件,文件数据内容如表1所示。

表1 用户商品数据

表1中,如果用户表示对商品(项目)进行了评价,则对应相应的商品ID,表示用户的布尔偏好(boolean preferences)。当没有明确的用户(user)-商品(item)评级(ratings)时,用布尔型表示,构成布尔型推荐系统。上述dummy-bool.csv文件中表示用户1浏览了商品3和商品4,用户2浏览了商品44和46。以此类推,如表2所示。

表2 用户-商品-评级表

在工程目录的子目录下 srcmaincomunresyst创建名叫UnresystBoolRecommend.java文件:

在主函数中,创建一个数据模型(data model),实例化Slope One recommender,在数据集中迭代所有用户并输出所推荐的(商品)信息。

上述代码完成后,执行如下命令进行编译:

结束时出现BUILD SUCCESSFUL表示编译成功.然后运行主函数:

推荐系统向用户1推荐商品5,确定值1.0(对于布尔推荐系统而言是一个常量值),向用户2推荐商品5和商品3,等等。

4 结语

本文利用Mahout提供的基于用户和项目的布尔型推荐算法,构建了一个布尔型推荐系统原型,并对其进行了测试。由于Mahout的目标是一个可伸缩的机器学习算法库,与Hadoop相结合实现分布式并行计算,通过MapReduce实现对大数据集的处理。使用Hadoop和Mahout可以快速设计和开发出数据处理能力强、功能强大的企业级推荐系统。

[1]Sean Owen,Robin Anil,Ted Dunning,Ellen Friedman.Mahout in Action[M].New York:Manning Publications Co.2012.

[2]Goldberg D,Nichols D,Oki B,Terry D.Using Collaborative Filtering to Weave an Information Tapestry[J].Communications of the ACM,1992,35(12):61 -70.

[3]Adomavicius G,Tuzhilin A.Towards the next generation of recommender systems:A survey of the state-of-the-art and possible extensions[J].IEEE Trans.on Knowledge and Data Engineering(TKDE),2005,17(6):734 -749.

猜你喜欢

布尔环境算法
长期锻炼创造体内抑癌环境
一种用于自主学习的虚拟仿真环境
孕期远离容易致畸的环境
基于MapReduce的改进Eclat算法
Travellng thg World Full—time for Rree
布尔和比利
布尔和比利
环境
进位加法的两种算法
布尔和比利