APP下载

基于Mahout的个性化电子商务推荐系统研究

2015-06-24焦亚琴刘晓云张银叶

电脑知识与技术 2015年11期
关键词:推荐系统系统设计个性化

焦亚琴 刘晓云 张银叶

摘要:互联网技术的发展把电子商务带入了海量数据时代,这种“信息过载”现象不但没有给信息检索带来便利,反而带来了不少困惑。个性化推荐系统正是解决这一问题的有效手段之一。传统的研究主要侧重推荐算法等理论研究,并没有考虑到实际系统的开发难度问题。本文从实际应用出发结合开源框架Mahout来设计与实现推荐系统,首先对Mahout源码相关知识进行分析,研究Mahout推荐引擎的源码实现以及使用方式,然后采用MVC设计模式设计了整个系统架构和平台开发的技术路线,最后结合javaEE技术实现了整个系统功能并进行了实验分析。

关键词:电子商务;推荐系统;个性化;Mahout;系统设计

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)11-0261-04

Research on Personalized Recommendation System of E-commerce based on Mahout

JIAO Ya-qin1, LIU Xiao-yun1, ZHANG Yin-ye2

(1.School of Business, Anhui University, Hefei 230601, China; 2.Automation Department, University of Science and Technology of China, Hefei 230027, China)

Abstract: E-commerce has come into the era of massive data with the development of Internet technology, this " information overload" phenomenon not only failed to bring convenience to the information of find, but also brings a lot of confusion. Personalized recommendation system is one of effective means to solve this problem, traditional research mainly focuses on the recommendation algorithm research, does not take the difficulty of the problem of the actual system development into account. In this paper, design and implement a recommendation system with Mahout open source framework. Firstly, analysis Mahout with open source, study on the implementation and use of the recommendation engine. Secondly using the MVC design pattern to design the entire system and design the technology road map for development system. Finally, implementation the entire system with javaEE technology, and analysis of experiments based on open data sets .

Key words: E-commerce; recommended system; personalized; mahout; system design

随着互联网技术的发展,电子商务已经进入海量数据时代,这一变化却让人感觉到知识匮乏[1],原因是从海量数据里检索感兴趣的信息会花费较多的时间,而且检索过程不再跟以前一样简单。这种情况促进了个性化推荐系统(Personalized Recommendation System,PRS)的产生,其能根据历史内容自动提供相关信息给用户。

电子商务是互联网技术迅速发展的必然产物[2],随着网络技术和信息技术的不断发展,电子商务也得到了蓬勃的发展。当人们在享受电子商务带来方便的时候,却出现了一些新的问题,一方面,出现了“信息过载”现象,另一方面,商家与消费者失去了当面沟通的机会。个性化服务能预测潜在的需求,提供针对性服务,让客户与商家双赢,目前PRS已经成为解决上面两个问题的一种有效手段。PRS能搜集用户历史信息,然后根据其从互联网海量信息里寻找潜在的资源,最后为用户提供个性化推荐功能。推荐实际是根据历史信息,判断用户将来估计会感兴趣的资源,并将其展示给用户。

目前推荐系统研究成果已经应用到很多领域,虽然经过多年的发展,还是存在扩展性、稀疏性等问题。国内对PRS的研究绝大多数是停留在对算法本身的研究与改进上,更侧重理论研究,虽然有的算法在理论上得到了很好的提升,但是并没有考虑到实际的编码工作,这给开发系统带来了很大的难度。本文并没有依据传统的研究方式,而是从工程实际出发,真正的把推荐功能应用到电子商务中;本文结合了开源的Mahout来开发系统,减少了编码工作量,同时利于系统的扩展;设计系统采用“B/S架构”,服务器上存放着数据,业务数据不需要保存在客户端,这样就解决了数据安全性问题,每一笔交易都直接进入数据库,解决了数据一致性问题,客户端能更新实时数据,从而提高了系统的实时性;本系统为提高用户体验而将推荐结果设计为可视化界面。

1 相关研究

1.1 推荐系统的作用

1)对消费者的作用

目前,个性化电子商务推荐系统的作用和意义主要是针对供应商,然而,推荐系统的真正使用者是消费者,只有消费者认可才能产生它应有的作用。如果根据消费者的互联网浏览历史来向其推荐物品当作是对消费者作出的一项决策,将会产生如下作用。

缩短决策时间。在购物决策方面体现的尤其明显。消费者可能盲目的在互联网中搜索产品或输入关键字搜索,但仍然是面向海量、异构的商品。推荐系统则可以依据消费者的历史购物信息或偏好推荐最为匹配的物品,在有限的商品里寻找到最中意的物品会变得容易。

提高决策质量。在信息查找决策方面体现的尤其明显。信息质量的高低是利用信息的基础,面对“信息过载”现象,推荐系统充当过滤器作用,帮助快而准的找到最适合的信息,从而避免大海捞针。

2 )对供应商的作用

提高消费者对供应商的忠诚度。一个高效运行的电子商务系统总是能让消费者快速找到自己需要的资源、从而作出决策,只有提供友好的用户体验的系统才能获得消费者持久支持。推荐系统分析用户的历史信息,根据不同情况向用户提供具体有价值的推荐。若推荐效果很好,那么消费者会在一定程度上依赖该推荐系统。

提高利润和交叉销售能力。推荐系统在一定程度上能帮助商家将潜在的客户转化为实际的客户,比如网站的浏览者,通过追踪浏览痕迹再实时适当为其推荐合适物品。推荐系统在另外一种程度上还有效提高了交叉销售能力,现实中主要借助CRM(客户关系管理)进行交叉销售,发现顾客的需求,并通过满足其需求而附带销售多种相关服务。推荐系统很好的充当了“销售员”的作用,其在帮助消费者完成购买的同时推荐那些确实需要但在购物过程中可能忽略的物品。

1.2 推荐系统面临的挑战

结果的解释。推荐系统就是以向用户推荐与其兴趣符合的物品为目的,需要对结果进行说明,但是目前的主要解释方式有其他用户的评价与销售排行,这些能说明推荐结果,然而说服力不强,所以需要进一步研究解释方式。

实时性与推荐质量。实时性和推荐质量是相互矛盾的,一般情况下实时推荐是以牺牲推荐质量为代价的,提高推荐质量往往是以实时性为代价的,所以如何在二者之间达到平衡亟待解决。

灵活性。现阶段推荐系统结构比较单一,随着用户多样性变化与电子商务的发展,要求电子商务推荐模型能适应这种需求的变化。

1.3 Mahout简介

本文系统设计使用的是Mahout,其为Apache Software Foundation旗下的一个开源项目[4],其提供了一些金典算法实现用于机器学习领域,能帮助快速开发智能处理应用系统。本文之所以使用Mahout是因为其不仅提供了推荐(Recommendation)模块的实现还增加了对Hadoop的支持[5],这样便于将来扩展系统到云计算的环境里。分析源码可以得出结论,引擎主要由数据模型模块、近邻算法模块、相似度算法模块、推荐算法模块和算法评分器等模块组成。数据处理能力方面,Mahout提供了单机算法实现的同时还提供了基于Hadoop的分布式实现。单机版由Taste项目实现,主要的UserCF、ItemCF都支持单机运行,但是存在内存数量有限、数据瓶颈等问题。分布式算法是把内存算法并行化,通过多台计算机一起来完成任务,但是也存在网络通信、数据合并和存储等问题。

1.4 开发程序的流程

研究源码可知算法是按照模块化设计来实现的,这样减少了开发的工作量,其中数据模型模块是用户偏好的接口抽象,其实现支持从任意数据源抽取偏好信息,Taste支持从文件和数据库读取偏好信息。相似度模块是推荐引擎的核心部分,其定义了两个用户间的相似度。在UserCF算法里,推荐的工作是找到与当前用户偏好相似的邻居用户。推荐模块是推荐引擎的接口抽象,Taste项目里其实现类有GenericUserBasedRecommender和GenericItemBasedRecommender,为其提供一个DataModel,它就可以计算出不同用户的推荐内容。

1.5 相似度算法实现

1)数据模型实现

DataModel是数据模型的抽象,数据是进行推荐的基础,Mahout支持匹配不同的数据源,包括文件、SQL数据库与NOSQL数据库。Mahout支持两种具体的数据文件格式。GenericDataModel:用户ID,物品ID,偏好(用户对物品的评分值)。GenericBooleanPrefDataModel:用户ID,物品ID。把这些数据文件按照规定的文件格式存储供引擎调用进行推荐。

2) 基于用户相似度算法

UserCF算法度量用户间的相似度主要通过不同用户对物品的偏好不同,然后依据相关性给出推荐结果,即给用户推荐其相似用户喜好的物品。UserCF的算法相对简单,首先利用用户对某物品的偏好找到相似邻居,然后把相似邻居的喜好物品推荐给该用户,实际计算的过程就是把用户对物品的偏好以向量的形式保存。再计算与其它用户之间的相似度,找出距离最小的邻居后,根据相似度与偏好值来预测该用户目前还没有偏好的物品,最后将得到的推荐结果展示给用户。Mahout提供了完整的UserCF算法实现。

3 )基于物品相似度算法

ItemCF评价Item之间的相似性主要通过用户对不同物品的偏好不同,然后根据偏好值之间的相似性来推荐,也就是根据用户的喜好推荐类似的物品。ItemCF与UserCF具有一定的相似性,其利用用户对物品偏好值数据来计算物品之间相似度,得到相似的物品以后,预测那些用户还没有表示偏好的物品,把推荐结果呈现给用户。Mahout实现了完整的ItemCF算法实现。

4) 相似度距离计算

上面两个算法都会使用到相似度的计

算,Mahout通过了大量的相似度计算实现,可以根据具体的使用情况进行选择。其中欧式距离:[d(x,y)=(xi-yi)2],该距离计算方法没有考虑数据重叠对结果的影响[6],Mahout利用枚举类来解决这个问题。皮尔森相似度:

[p(x,y)=nxiyi-xiyinxi2-(xi)2nyi2-(yi)2],使用该相似度计算的前提是数据满足正态分布,且数据是等间距的,Mahout同样使用枚举参数来解决这个问题。当对数据进行中心化以后余弦相似度与皮尔森相似度计算结果是一样的。秩相关系数相似度存在大量的排序,计算非常慢,所以一般不采用。Tanimoto相似度:[t(x,y)=xiyix2i+y2i-xiyi],专门负责处理没有偏好的数据。根据上面的分析,计算相似度要根据具体的情况选择合适的实现。

2 系统设计与实现

2.1 系统设计

本文采用“B/S”架构来设计这个个性化推荐系统,能支持多用户的并发使用情况,采用了分层的形式来设计系统,本文设计的系统的总体示意图如图1。系统包含五个层面,从下往上分别是底层数据源层、数据集成层、数据库操作层、业务逻辑层和用户界面层。这些层按照它们在系统的功能来分层设计,各自实现自己的功能与接口,通过分层来设计有利于系统的扩展。

图1 系统示意图

本文采用Java语言结合开源框架来实现系统,为了复用代码,采用模块化设计方法实现。其实现结构图如图2所示。

图2 系统结构图

根据图2可知,系统采用的是MVC的设计模式,表现层使用的是JSF开源框架,控制层主要是通过Spring来管理各种Bean,持久化层使用的是ORM框架Hibernate,为了提高系统可视化功能,把PrimeFaces的图形模块引入系统的设计。

2.2 系统实现

本文使用课题组某电商平台区域数据集进行实验,其中包含10000用户、6000件物品名字和100万偏好值,用户对物品的偏好值是取自1~5范围的整数值,取值越大也就说明用户对该物品的喜好程度越大。偏好数据格式为:物品编号(goodsID),用户编号(userID),时间(timestamp),偏好值(preference)。由于数据都存储在数据库里,对持久层数据进行数据库的优化设计与导入相关数据,最后按照前面的设计实现了系统要求的功能。

3 实验分析

目前主要有两种方式评价推荐系统[7],一种是决策支持精度度量方法,另外一种是统计精度度量方法。前者通过系统推荐给用户的项目对用户实际有效性来度量,其常见的指标有:召回率(Recall)和精确度(Precision),设S为原始数据集,R为推荐数据集合。则精确度的计算公式:[preision=S?RR],召回率的计算公式:[recall=S?RS],其实两个指标是相互矛盾的,实际使用是把两个指标赋予相同权重。后者通过计算系统项目评分值与实际评分值的差来度量,常见指标有:均方根误差(RMSE)、平均绝对误差(MAE)和标准化平均绝对误差(NMAE),MAE由于计算简单还能直观对系统进行度量得到了广泛的使用,设集合[{p1,p2,...,pn}]为系统给用户推荐的项目评分值,其中[pi]为用户对第[i]个项目的预测评分,集合[{q1,q2,...,qn}]为用户对项目的实际评分值,则MAE的计算公式:[MAE=i=1npi-qin],其中[i=1,2,3,...n]。MAE值越小表明推荐质量越高。本文在实验数据集的基础上得到了不同邻居数下的MAE值如下表1所示。

表1 实验MAE值

[

邻居数 MAE\&UserCF\&ItemCF\&10\&0.878\&0.876\&20\&0.874\&0.873\&30\&0.875\&0.870\&40\&0.870\&0.868\&50\&0.868\&0.863\&60\&0.864\&0.860\&70\&0.858\&0.855\&80\&0.854\&0.851\&90\&0.844\&0.843\&100\&0.834\&0.832\&]

根据上表可知随着邻居数目增大,MAE只逐渐减小,推荐精度逐渐增加,根据实验结果可知此数据集更适合ItemCF算法。

4 总结与展望

本文分析了电子商务的发展趋势、作用和面临的挑战,在此基础上分析了推荐系统。本文在开源Mahout的基础上结合MVC设计模式设计了一个电子商务推荐系统。对Mahout源码相关知识进行了分析,并对利用Mahout开发应用程序以及推荐引擎在整个推荐系统的结构与作用进行了研究,对系统进行了模块化的设计,并对实现过程的技术路线进行了设计,采用JavaEE技术实现了本文设计的系统,并且对系统进行了验证。本文并不是按照传统的研究方法来对推荐算法进行研究,而是从工程实际出发,主要是从快速开发系统和用户体验等角度来考虑系统的设计,真正的快速地把推荐功能应用到电子商务,Mahout提供了分布式版本,便于把系统扩展到云平台下。后期主要的研究方向是把更多的推荐算法应用到系统,把系统迁移至云平台下[8],提高系统基于大数据推荐能力。

参考文献:

[1] 李琪. 电子商务概论[M]. 北京:高等教育出版社,2009.

[2] 陈发鸿.电子商务发展与政府应对策略[J]. 企业经济,2011(11):138-140.

[3] Liu R R, Jia C X, Zhou T. Personal recommendation via modified collaborative filtering[J]. Physic A, 2009,388:462-468.

[4] Anil R,Dunning T,Friedman E. Mahout in action[M]. Manning,2011:28-35.

[5] 董西成. Hadoop 技术内幕:深入解析MapReduce架构设计与实现原理[M]. 北京:机械工业出版社,2013:32-36.

[6] 项亮. 推荐系统实践[M]. 北京:人民邮电出版社,2012:37-40.

[7] Sarwar B,Karypis G,Konstan J,et al.Item-based collaborative filteringre commendation algorithms. In: Proceedings of the 10th International Conference on WorldWide Web. New York: ACM Press,2001:285-295.

[8] 尹小明. 基于价值网的云计算商业模式研究[D]. 北京: 北京邮件大学, 2009.

猜你喜欢

推荐系统系统设计个性化
坚持个性化的写作
新闻的个性化写作
基于用户偏好的信任网络随机游走推荐模型
上汽大通:C2B个性化定制未来
基于个性化的协同过滤图书推荐算法研究
个性化推荐系统关键算法探讨
浅谈Mahout在个性化推荐系统中的应用
一种基于SATA硬盘阵列的数据存储与控制系统设计研究
工业热电偶计量检定系统设计
基于物联网的煤矿智能仓储与物流运输管理系统设计与应用