基于Item—Based协同过滤农业高校图书个性化推荐算法研究

2017-04-26 10:12赵鹏博韩宪忠王克俭
湖北农业科学 2017年6期
关键词:高校图书馆大数据

赵鹏博+韩宪忠+王克俭

摘要:针对高校用户对图书的个性化需求,运用用户对图书的评分,构建了基于Hadoop和Mahout的图书推荐系统。通过Hadoop中分布式文件系统(HDFS)和Map/Reduce计算模型的应用,发现当Hadoop中节点数不断增加时,计算时间不断减少,实时响应效率得到了提高;通过对Mahout中传统的Item-Based聚类协同过滤推荐算法进行改进,利用MAE值对传统和改进后的协同过滤算法进行比较,发现图书推荐的精度进一步提高。总体来说,推荐系统改善了传统单机运行内存严重不足和推荐结果不精确的问题。

关键词:高校图书馆;个性化推荐算法;协同过滤算法;大数据

中图分类号:G258.6+62 文献标识码:A 文章编号:0439-8114(2017)06-1150-05

DOI:10.14088/j.cnki.issn0439-8114.2017.06.040

Abstract: For personalized book needs of users at colleges and universities, we build a book recommendation system based on Hadoop and Mahout using the scores given by users. Through the application of Hadoop distributed file system (HDFS) and Map/Reduce calculation model, we found that the calculation time is reduced while real-time response efficiency is improved with the increasing of the number of notes in the Hadoop. Through the improvement of traditional Item-Based collaborative filtering recommendation algorithm, which is based on item clustering in the Mahout, we compare the traditional collaborative filtering algorithms with the improved collaborative filtering algorithms by using MAE, and find that the precision of the recommendation is further improved. In general, this experiment improves the problem of out-of-memory for the running of traditional single machine and the inaccurate results of recommendation.

Key words: university library; personalized recommendation algorithm; collaborative filtering algorithm; big data

隨着图书馆事业的发展,用户对图书馆资源的使用提出了越来越高的要求;为读者提供有针对性的服务,成为图书馆发展中所面临的具体任务之一。在建设智慧图书馆中,国外个性化图书推荐服务已经比较成熟,但国内个性化推荐系统尚不完善[1]。目前国内大部分高校图书馆都是通过输入关键词进行模糊搜索,然后列出只和关键词相关的书籍,没有达到智能以及个性化推荐的效果。在借阅图书的过程中,用户过去产生的行为分为显式用户反馈与隐式用户反馈两种,主要包括浏览页面、搜索图书、收藏图书、借阅图书、评论图书、图书评分等用户行为[2]。本试验通过显式用户反馈中的图书评分,推荐出在校学生和老师感兴趣的书,达到一个图书个性化推荐的效果。河北农业大学图书馆每天产生大量的数据信息,单机运行无法满足实时响应的效率。在处理大规模海量数据时,许多研究者将其设计的协同过滤算法部署于Hadoop并行化平台,以期在保证结果准确的前提下,通过Hadoop提高协同过滤算法执行的效率。Mahout提供了Hadoop并行化算法的接口,本试验将Mahout中提供的基于项目聚类协同过滤算法与Hadoop中Map/Reduce计算模型和分布式文件系统(Hadoop Distributed File System,HDFS)进行结合,改进原来的推荐算法,设计出河北农业大学高校图书推荐系统。该推荐系统由Application业务系统、Mahout计算框架、Hadoop集群组成,解决了海量数据环境下算法实施的效率及推荐的精准性问题。

1 图书推荐系统环境

1.1 Hadoop 与Mahout

Hadoop包括HDFS和Map/Reduce 2个子项目。HDFS由1个名称节点(Name Node)和多个数据节点(Data Node)组成[3]。Name Node管理和维护着系统中所有文件的索引目录,记录每个数据块节点的位置。Data Node存储着用户数据,实时被Namenode调用,并且定时向Name Node发送更新的数据列表信息。Map/Reduce并行编程框架[4]用于处理大规模计算机集群上的海量数据,该模型具有良好的扩展性及高容错性;集群中的Map/Reduce框架是由运行在主节点上的Job Tracker和运行在每个集群从节点的Task Tracker共同组成的。当一个Job被提交时,Job Tracker接收到提交作业和配置信息之后,就会将配置信息等分发给Task Tracker,Task Tracker负责完成由Job Tracker指派的任务。一个Map/Reduce作业分为Map和Reduce 2个阶段。HDFS在集群上将单机内存算法通过Map/Reduce模型并行化部署在多台电脑上,实现分布式文件系统高传输率访问数据;Map/Reduce在集群上实现了大量数据的并行化计算。二者相互作用,共同组成了Hadoop分布式系统体系结构的核心。

Mahout框架不仅提供了单机运行的接口,同时还基于Hadoop进行分布式运算。Mahout推荐引擎主要由Data Model、User Similarity、Item Similarity、User Neighborhood、Recommender[5]等模块组成。Taste是Apache Mahout提供的一个协同过滤算法的高效子系统,它实现了最基本的基于用户的协同过滤算法(User-based collaborative filtering)和基于物品的协同过滤算法(Item-based collaborative filtering)[6]。

1.2 环境配置

目前Hadoop有3种运行模式,分别是本地运行、伪分布运行、完全分布式运行[7];试验在2台普通的电脑上进行伪分布式模拟部署。试验的平台硬件需要2台4核的Intel普通电脑,其操作系统采用win7 64 bite,CPU的主频为3.5 GHz,内存的大小为8 G,硬盘空间为1 T。在物理硬件平台上面部署的软件为V Mvare Workstation 9.0、Cent OS 6.5、Open SSH、jdk-6u24-linux-i586、Hadoop 1.1.2、eclipse 10.0、maven 3.2.5、mahout 0.8、jdk-6u 45- Windows-x 64。

1.3 搭建集群

一个HDFS集群主要采用主/从式的逻辑结构,在搭建一个分布式集群时,需要为Hadoop 指定一个节点作为主节点,在该主节点上运行Name Node 和Job Tracker 2个守护进程,调度其他从节点的Data Node 和Task Tracker 2个守护进程。

搭建Hadoo 集群,首先要关闭各个节点的防火墙,修改配置文件/etc/hosts,保证所有节点的IP与主机名映射。试验虚拟1台主机当主节点,虚拟6台主机当从节点(需要保证各个节点之间SSH[8]能免密码登录)。其中主节点为(master,192.168.59.100),从节点为(slave1,192.168.59.101);(slave2,192.168.59.102)…….(slave6,192.168.59.106),具体见图1。

2 基于项目聚类协同过滤推荐算法

2.1 项目聚类

为了提高實时响应效率,首先调用Mahout中taste算法库的Kmeans算法[9],对项目进行聚类。通过聚类,项目之间相似性最高的归到一个集合,项目的最近邻居大部分分布在相似性最高的若干个聚类中,因此不需要在整个项目空间上进行搜索,而只需要在与目标项目相似性最高的若干集合中进行查询即可。

项目聚类过程如下:

建立用户-评分矩阵m×n。其中m为用户,n为项目,Ri,k为用户i对项目k的评分。试验采用的数据集评分设定在0到10,评分越高,表明该项目受用户喜爱的程度越高。评分矩阵如表1所示:

输入:项目集I={i1,i2,……in},用户评分矩阵Rm×n,

输出:聚类项目集C={c1,c2,……ck},

任意选择k个项目,将其用户评分作为初始聚类中心,为CC={w1,w2,……wk};

聚类集合C={c1,c2,……ck}初始化为空;

Repeat

For项目in(in∈I)do

For聚类中心wk(wk∈CC)do计算sim(in,wk);

sim(in,wk)=min{sim(in,w1),sim(in,w2),…… sim(in,wk)};

聚类ck=ck∪in;

For聚类ck(ck∈C)do

更新聚类中心wk=■∑■■in;

计算误差函数E=■■|in-ck|2;

Until E不再改变,生成的k个聚类项目集{c1,c2,……ck},有如下性质:

c1∪c2∪…∪ck=I;

ci∩cj=(i≠j,对任意的1≤i≤k,1≤j≤k)。

2.2 传统协同过滤算法

随着用户数据量不断增加,运算用户兴趣相似度矩阵的时间和空间复杂度近似于平方关系增长,User CF很难做到实时计算预测值,试验采取的Item CF的协同过滤算法正好弥补了这样的缺陷。在构建图书推荐系统中Item CF算法利用用户的评分,离线分析计算物品之间的相似度,经过得到的用户对未评分项目的预测评分,快速推荐出高度相关的相似项目。

Mahout传统协同过滤算法中常以Euclidean Distance Similarity[10]系数计算项目之间的相似度。设Uij表示用户U对项目i和项目j共同评分的集合,项目i和项目j之间的相似性为:

sim(i,j)=■,

其中,Ru,i和Ru,j分别表示用户U对项目i和j的评分。

2.3 基于项目聚类改进的协同过滤推荐算法

在高校用户对图书进行评分时,由于用户的主观性,有些用户评分高,而有些用户评分相对低,传统的Euclidean Distance Similarity系数没有考虑用户的评分尺度,无法消除用户评分的主观性。试验采用的Adjusted Cosin Similarity系数将每个项目的评分减去该项目所有用户评分的均值,消除了用户的主观性评分,同时首先通过项目聚类将高度相似的项目聚集到若干个集合中。

2个项目的相似度常用余弦相似性来计算,即2个向量之间的夹角余弦值。余弦值的范围在[-1,1]之间(值越趋近于1,相应的相似度也越高)。

Cosin Similarity系数相似性计算公式为:

sim(i,j)=cos(i,j)=■=

■,

其中Ui和Uj分别表示用户U对项目i和项目j评分过的集合。

Adjusted Cosin Similarity系数相似性计算公式为:

sim(i,j)=■,

其中■u表示用户U对所有项目的平均评分。

为了验证算法的有效性,聚类数用k1表示,试验选择聚类数为30。在项目i的前k个聚类(c1,c2,……ck)中找到项目的最近邻数k2,试验选择近邻数为20。调用Mahout提供的Recommonder Job算法,以项目相似度作为权重,进行配置与调优,计算出用户U对任意项目i的预测评分值。选取前Top N个项目推荐给用户U。计算用户对项目的评分,用户U对项目i的评分:

Pu,i=■

其中,j为k个项目评分组成的集合,Ru,j为用户U对项目j的评分。

3 结果与分析

3.1 数据获取

为了验证Hadoop的性能,测试采用河北农业大学东、西校区图书馆近几年收集的信息,形成Book-Crossing数据集,并将用户对图书的评分信息形成BX-Books-Ratings数据集。同时为了验证改进的算法精确性,选取了河北农业大学图书馆计算机系的10 000本书,通过计算机系1 000名学生对10 000本书的评分,形成数据集Books-Library-Ratings。由于Mahout下处理的文件为Sequence File格式,因此需要将上述文件转换成Sequence File格式。

3.2 推荐算法效果评估

推荐算法的效果评估主要分为两个方面,一是性能评估,二是推荐质量评估。

3.2.1 性能评估 为了验证基于Hadoop中HDFS分布式文件系統和Map/Reduce计算模型的云平台能够提升协同过滤推荐算法的执行效率,试验用BX-Books-Ratings数据集进行测试。通过原始的Mahout 协同过滤推荐算法,采用Top10的方式对图书馆中所有用户推荐排名前10的书目;逐步增加伪分布式集群的节点数量,记录下相应节点数消耗的时间,结果见图2。由图2可以看出,随着Map/Reduce模型节点数量的增加,计算时间相应减少,但递减的幅度也在不断减少。因为随着节点的数量不断增加,Map/Reduce 操作需要的时间也越来越长;同时试验部署的伪分布式Hadoop 集群是在2台物理机上虚拟出的PC 集群,硬件总体的性能是一定的,节点的增加只是资源利用率的提高。如果采用多台物理机部署Hadoop 完全分布式集群,计算效率则会显著提升。

3.2.2 推荐质量评估 平均绝对误差MAE(Mean absolute error)方法通过比较得到的预测值和用户的实际评分值之间的偏差来计算结果的准确性,MAE值越小,表明推荐的越精确,质量越好。设预测的用户评分集合表示为{p1,p2,…,pn},对应的实际用户评分集合为{q1,q2,……qn},其计算公式为:

MAE=■。

Mahout算法库中Recommender Evaluator就是利用MAE来测试推荐的精确性。现将数据集Books-Library-Ratings划分成两个部分:训练集与测试集。从用户评分表Books-Library-Ratings中随机选20个用户,分别用原始推荐引擎Original Recommender和改进后的Improved Recommender推荐引擎计算出Top10列表及其预测值,在此基础上,使用Recommender Evaluator Runner算法评估器分别计算出20个用户的MAE值,以作推荐效果测试和比较。如运行传统协同过滤推荐算法得到用户56的推荐列表(Top10)及对应预测评分值,可从实际评分表获取用户56 实际的评分值,利用Recommender Evaluator计算出传统推荐算法下用户56的MAE值=1.46。利用改进基于项目聚类协同过滤推荐算法计算出用户56的推荐列表(Top10)及对应预测评分值,从实际评分表获取用户56实际的评分值,再利用Recommender Evaluator计算出改进推荐算法下用户56的MAE值=1.13。对用户56而言,推荐的准确率提高了(1.46-1.13)/1.46×100%=22.6%。

其他19个最近邻用户MAE的计算过程与此相同,依次进行计算,利用Recommender Evaluator Runner评估器分别依次基于原始推荐算法下和改进推荐算法,计算出其他19个用户的MAE值,结果见图3。对MAE值结果进行比较,可以看出改进算法的MAE值总体上比原始的协同过滤算法的MAE值要更低,这表明改进的基于项目聚类的协同过滤算法的整体推荐准确率要比原始的协同过滤推荐算法更高,平均提高了19.4%。同时也表明用户评分的主观性对推荐结果的准确性有较大的影响。

4 小结

试验结果表明,基于Hadoop分布式计算框架的河北农业大学图书推荐系统引擎通过搭建分布式计算平台,利用集群计算与存储能力,有效且快速的完成了个性化的图书推荐,性能有了明显提高。

Mahout是一个很强大的数据挖掘工具,通过试验中提出的改进的基于项目聚类的协同过滤推荐算法,计算所得的预测评分更加接近于用户的实际评分;虽然有个别用户改进后的协同过滤推荐算法的MAE值要大于原始协同过滤推荐算法的MAE值,即改进后的协同过滤算法推荐的准确率下降了,但整体有了提高。下一步要对Mahout中推荐算法进行改进,参数还要调优,同时研究用户的其他行为,不断提高推荐效率和精确程度。

参考文献:

[1] 华小琴.我国高校数字图书馆个性化服务探究[J].图书馆理论与实践,2014(5):85-88.

[2] 项 亮.推荐系统实践[M].北京:人民邮电出版社,2014.58-61.

[3] TOM W. Hadoop:The Definitive Guide[M].USA:O′Reilly Media,Inc,2015.166-178.

[4] DANIL Z,SUDHEESH N. Hadoop Cluster Deployment,Securing Hadoop[M].USA:Packt Publishing,2013.64-76.

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

[6] JANNACH D,ZANKER M,FELFERNIG A.Recommender Systems:An Introduction[M].Cambridge,UK:Cambridge University Press,2012.8-14.

[7] 奉国和,黄家兴.基于Hadoop与Mahout的协同过滤图书推荐研究[J].图书情报工作,2013,57(18):116-121.

[8] 李龙飞.基于Hadoop+Mahout的智能终端云应用推荐引擎的研究与实现[D].成都:电子科技大学,2013.

[9] 余 晖.基于Mahout的聚类算法研究[D].上海:上海师范大学,2014.

[10] 马 宁.基于Mahout的推荐系统研究与实现[D].兰州:兰州大学,2013.

猜你喜欢
高校图书馆大数据
大数据环境下基于移动客户端的传统媒体转型思路