基于Mahout的电子商务商品推荐系统

    景田+刘翠+寿晨鸣+温泰+归伟夏

    

    摘要:针对电子商务网站需要为用户提供快速、准确的商品推荐从而进一步促进商品交易的问题,实现客户与商家双赢,构建一个基于Mahout的电子商务商品推荐系统。通过对Mahout的开发环境、算法等内容的介绍和分析,并结合商品的特点及用户偏好等属性设计实现了基于Mahout的商品推荐系统。

    关键词:电子商务;Mahout;商品推荐;Hadoop

    中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)12-0291-02

    Abstract: A E-commerce product recommendation system is proposed based on the Mahout due to provide users with e-commerce website for fast, accurate product recommendations and further promote during commodity trading. So it will be in win-win situation. At first, Mahout development environment, algorithms and other content are presented and analyzed. Then, the product recommendation system which based on Mahout combined with product properties, design features and user preferences, etc. is built.

    Key words: e-commerce; Mahout; Product recommendation; Hadoop

    随着信息技术的飞速发展和政府对电子商务领域的积极推动,目前电子商务正以前所未有的速度蓬勃发展。但随着用户和需求的不断增长,电商交易环节中结构化与非结构化数据的存储和处理,用户需求种类的多样化等问题也提出了更高的要求。电子商务交易的商品数量及相关信息等呈爆炸性的增长,如何在这些海量信息中识别出真正有价值的信息也变得越来越困难。尽管Hadoop 软件框架的发展与工具的应用越来越成熟,能够较好地实现对海量数据的存储与计算,但将海量的数据存储在云端只是解决了数据的存储问题,如何满足用户的需求,将云数据转化为对用户有价值的信息并能高效、准确地推荐给用户才是目前电子商务网站亟需解决的关键问题。

    自1992年Goldberg D等人提出首个基于协同过滤的推荐系统[1]以来,电子商务个性化推荐服务得到了快速发展。2008推出的开源Apache Mahout是基于Hadoop分布式框架的机器学习算法库。[2]其中cf. taste包实现了推荐算法引擎,它提供了一套完整的推荐算法工具集,同时规范了数据结构,并标准化了程序开发过程。[3]此外,Mahout还提供了大量的功能实现,包括聚类、集群、分类、协同过滤和进化程序等数据挖掘算法。通过使用Apache Hadoop库,Mahout可以有效地扩展到云中。[4]

    本文基于Mahout设计开发了一个电子商务商品推荐系统,通过对用户已经产生的浏览记录、购买喜好、价格承受区间、商品内在的相关性等数据的挖掘及过滤,实现自动化、智能化和个性化的信息过滤服务,帮助用户发现所需商品,商家也可利用推荐进一步激发用户的购买欲望。

    1 Mahout开发环境

    Mahout最初应用的平台是Hadoop集群平台,但是现在经过扩展,Mahout已经不仅仅适用于Hadoop集群云平台,还可以单机运行算法,即与使用Java编写的算法是一样的,而且这个算法还是优化过的。

    配置Mahout环境之前必须安装好Java,然后就可进行Maven的安装。因为Mahout是利用Maven来构建和发布项目的。Maven是一个命令行工具,它管理依赖关系、编译代码、形成软件包、生成文档并发布正式版本。如果已经安装了Eclipse,Maven就已经被集成在其中了,可以直接使用Maven配置文件(pom.xml)来配置并导入项目。如果没有安装Eclipse,则首先要到Maven官网http://maven.apache.org/download.cgi下载Maven软件的bin版,解压到/home/mahout/apache-maven-3.1.0,然后设置环境变量。在系统环境变量配置文件中输入:sudo vim /etc/profile 并在其中添加:

    export M2=/home/mahout/apache-maven-3.1.0

    export PATH=$PATH:$M2

    然后使用命令source/etc/profile更新环境变量,输入mvn –version,则安装完毕。

    此外也可以到Mahout官网(http://mirror.bit.edu.cn/mahout/)下载Mahout-0.7版本,然后解压缩和安装。在终端输入命令:tar –zxvf mahout-distribution -0.7.tar.gz解压发布版到/home/mahout/mahout-distribution-0.7目录中 ,即可安装成功。

    2 基于Mahout的电子商务推荐系统设计

    2.1 推荐算法简介

    Mahout的推荐算法也称为协同过滤算法模块,主要包括基于项目的分布式协同过滤和使用并行矩阵分解的协同过滤两种类型。[5]

    项目即为电子商务网站中的各种商品。基于项目的协同过滤就是利用项目(商品)之间的相似度来为用户进行项目(商品)的推荐。项目之间的相似度通过不同用户对该项目的评分(即偏好值)来求出,每个项目都有一个用户向量,两个项目之间的相似度便是根据这个用户向量求得的。求得项目之间的相似度,便可以针对用户对项目的评分清单来推荐与清单中极为相似的项目(商品)。两个商品项目之间的相似度计算可以使用诸如Pearson距离、余弦距离、对数似然距离等向量距离计算公式来求出,就得到了项目相似度矩阵。

    使用并行矩阵分解的协同过滤核心思想则是把所有的用户以及项目想象成一个二维表格,该表格中有数据的单元格(i,j)就是第i个用户对第j个项目的评分,然后利用该算法使用表格中有数据的单元格来预测为空的单元格。预测得到的数据即为用户对项目的评分,最后按照预测的项目评分从高到低排序,便可进行推荐。

    2.2 系统设计

    本文主要采用Mahout的基于项目的协同过滤算法来实现电子商务商品的推荐。其中两个商品项目的相似度计算采用欧几里德距离的计算公式求出。其基本思想为:对于两个用户User1和User2,看成是n维空间的两个向量x和y, xi表示用户User1对itemi的偏好值,yi表示用户User2对itemi的偏好值,它们之间的欧几里德距离是如式(1)所示:

    算法的实现一共包括六个步骤:1)根据用户对商品的偏好表求出用户矩阵;2)根据用户对商品的偏好表求出项目(商品)矩阵;3)求出项目矩阵的平方和;4)根据项目矩阵、项目矩阵平方和求出项目(商品)相似度矩阵;5)整合用户矩阵、项目相似度矩阵,得到用户-项目相似度矩阵;6)根据用户-项目相似度矩阵求出用户推荐矩阵。六个步骤使用7个MapReduce的Job任务来进行数据处理。第一个Job任务是进行项目的数据格式转换,即把项目(商品)的编号由长整型转换为整型,并将同一个用户评价过的所有项目进行整合得到用户矩阵。算法的第二、三步分别用一个Job来实现。第四步求项目(商品)相似度矩阵需由两个Job任务共同处理完成,这是因为其中的第一个Job任务是依次对每个项目进行相似度的计算,第二个Job任务则需将前一个Job中已计算好的相关相似度(但未关联到该项目中)续接到该项目中。算法的第五步和第六步分别使用一个Job来进行处理,第五步就是将用户矩阵和项目相似度矩阵执行拼接,得到的用户-项目相似度矩阵。第六步则在第五步的基础上来计算用户推荐矩阵,得到最后向每位用户推荐的商品结果。

    整个系统设计采用B/S架构,这样能充分支持多用户并发使用的情况。数据库采用MySQL数据库集群,存储用户信息、商品等固定属性数据、用户偏好值、推荐引擎产生的结果等数据。其中用户对商品的偏好表如表1所示(只列出一部分)。

    3 结束语

    Mahout提供了一个伪分布式的推荐引擎框架,并且是一个可伸缩的机器学习算法库,通过使用Hadoop可以将用户集合分在n台机器上,实现分布式并行计算,对大数据集进行处理。本文通过引入介绍Mahout的推荐算法,设计了一个电子商务商品的推荐系统,可为用户推荐所需要的商品,促进商品的销售。下一步将深入研究结合更大数据量及更多属性集合上进行高效地推荐。

    参考文献:

    [1] GOLDBERG D,NICHOLS D,OKI B M, et al. Using collaborative filtering to weave an information tapestry[J]. Communication of the ACM, 1992, 35(2): 61-70.

    [2] ANIL R, DUNNING T,FRIEDMAN E. Mahout in action[M]. USA: Manning, 2011: 66-86.

    [3] 朱倩. 浅谈基于Mahout推荐引擎的构建[J]. 数字技术与应用, 2015(4): 44-45.

    [4] 建新, 徐迪威. 基于云计算平台的海量数据挖掘技术在塑料电子商务平台中的应用[J]. 广东科技, 2011(8): 59.

    [5] 樊哲. Mahout算法解析与案例实战[M]. 北京: 机械工业出版社, 2015.

相关文章!
  • 融合正向建模与反求计算的车用

    崔庆佳 周兵 吴晓建 李宁 曾凡沂<br />
    摘 要:针对减振器调试过程中工程师凭借经验调试耗时耗力等局限性,引入反求的思想,开展了

  • 浅谈高校多媒体教育技术的应用

    聂森摘要:在科学技术蓬勃发展的今天,我国教育领域改革之中也逐渐引用了先进技术,如多媒体技术、网络技术等,对于提高教育教学水平有很

  • 卫星天线过顶盲区时机分析

    晁宁+罗晓英+杨新龙<br />
    摘 要: 分析直角坐标框架结构平台和极坐标框架平台结构星载天线在各自盲区状态区域附近的发散问题。通过建