基于Spark的高校图书馆书目推荐系统

2019-08-12 02:35常有学刘建胜刘旭波
现代电子技术 2019年14期
关键词:个性化推荐协同过滤高校图书馆

常有学 刘建胜 刘旭波

关键词: 高校图书馆; 个性化推荐; 协同过滤; Spark; 公开数据优化; 时间偏置

中图分类号: TN911?34; TP391.9               文献标识码: A                    文章编号: 1004?373X(2019)14?0064?04

Spark?based bibliographic recommendation system for university libraries

CHANG Youxue, LIU Jiansheng, LIU Xubo

(Nanchang University, Nanchang 330030, China)

Abstract: How to apply the recommendation system to university libraries and recommend books to users in a personalized manner for offering superior services to users is a topic worthy of study. The recommendation accuracy is ensured by optimizing public data and eliminating time offset. The Spark big data calculation platform is used to improve the calculation efficiency. The test results show that the system has a greatly?improved operation speed, and significantly?reduced mean absolute errors (MAEs), which can provide users with fast and accurate personalized recommendations to enhance user experiences.

Keywords: university library; personalized recommendation; collaborative filtering; Spark; public data optimization; time offset

0  引  言

随着互联网技术的发展,网络信息呈暴涨式增长,丰富多彩的网络生活给人们带来更多体验的同时,也给高校图书馆带来更大的压力。如何让高校图书馆保持活跃,给广大师生提供优质的服务,是一个比较重要的研究课题,如何在数以十万甚至百万的书籍中给用户推荐最适合的图书是其中的关键。

当前的图书推荐研究中,涌现出各种协同过滤算法的应用和优化。在应用方面,任星怡等人提出利用用户的兴趣点对书籍进行推荐,即通过跟踪用户的地理位置对用户提供合适的推荐[1];何胜等人提出基于用戶行为的图书推荐,不仅需要考虑到用户的属性,用户行为代表的喜好也同样重要[2];车晋强等人提出使用大数据框架处理推荐系统的大规模数据集,提高计算效率[3]。在协同过滤算法的优化方面,王成等人面对协同过滤的矩阵稀疏情况,提出建立项目?用户倒查表进行修正[4]。魏琳东等人提出一种基于矩阵分解和神经网络映射的冷启动推荐算法[5]。

以上方法均对推荐系统有不同程度的改进,并且收到了不错的效果;但是在高校图书推荐中,往往忽略了评分偏置和时间偏置的影响。本文通过建立用户模型和图书模型,结合用户行为修正用户模型,修正评分结果,消除时间因子的影响,并采用Spark作为计算平台提高计算效率,提供更快、更准确的图书推荐。

1  Spark技术

Spark源于美国加州大学伯克利分校AMPLab的集群计算平台[6],它是一个开源的并行式处理框架。Spark通过操作分布式弹性数据集(RDD)对数据进行处理,是一种基于有向无环图(DAG)的数据处理模型,相比于Hadoop在速度方面有很大提升;并且由于Spark快速、易用、通用、可拓展的特点,其已经逐渐应用在数据处理的各个方面。

2  模型构建

高校图书馆书目推荐系统是根据用户的行为和属性向其推荐相关书籍的推荐系统。根据用户之间的联系和书籍之间联系实现个性化推荐,减少用户搜索相关书籍的时间,提高用户体验。在系统中,用户和书籍是两个相互关联的主体,发现两者之间的相互关系和规律必须以两者存在为前提。用户在使用过程中,要经历模型构建、模型分析和列表输出3个阶段,模型流程图如图1所示。

2.1  用户模型

用户模型的构建依赖于用户的显式信息和隐式信息。用户的显式信息又称为基本信息,即用户所在学院、专业、年级和所修课程等固定信息;用户的隐式信息又称为行为信息,包含用户在图书馆所借书籍、网上图书浏览书籍和观看时长等不断变化的信息。在数据分析中,考虑更多的隐式信息有助于系统精确用户的爱好,并对其推荐相匹配的书籍。用户模型构建机制如图2所示。在本系统的用户模型构建中,主要有以下几个方面获取用户的相关信息:

1) 通过系统之间的相互连通,从高校管理系统中导入师生的相关基本信息。

2) 通过用户的借阅记录。用户的借阅记录通常代表着此时用户的喜好和需求,是最直接的信息来源。

3) 通过用户在网络上的行为信息。高校在接入网络上通常使用一号一机,即一个用户只能使用一个固定的网络账号,可以确定个人在网络图书馆中搜索的书籍。

在借阅时长行为中,根据天数判断喜好程度。与网络商城不同的是,高校图书借阅行为是无代价的,因此在用户借阅时通常不会仔细判断是否是自己所需要的书籍。一般在两天之内还书代表不需要或者不喜欢此书。

在用户模型构建中,采用了SVD++的模型构建方法。其主要思想是根据用户的相关属性和行为构建一个f维的向量,即[Vf=V1,V2,…,Vf],再根据其代表的重要程度加以权重,构成一个完整的用户模型[Uf={N1,N2,…,Nf}]。对于用户的建模是本系统的关键,通过对比不同用户模型在f维空间向量的相似程度,可以计算出不同用户之间的相似程度。

2.2  图书模型

图书模型的建立用于向用户推荐相应的图书topN列表。与用户模型类似,图书模型也需要根据其属性信息构建,包括图书的类别、书名、出版日期和评分等信息。与网上商城推荐不同的是,高校图书馆借阅书籍后并没有对图书评价的信息,因此需要补全这种比较重要的数据。根据文献[7],可以利用群体的智慧优化推荐。本系统采用的方法是从网络上(比如豆瓣读书等)抓取相关图书的评分,再根据用户的相关行为和相应的权重,将其综合为一个携带用户特征的数据。

在本系統中构建的图书模型有类别、书名、版本号、作者、出版日期和评分等信息,同样考虑到某些技术性、时效性比较强的书籍,也需要对每类图书做一个时效性的标志,用于区分该图书是否有时效性。由此构建的图书模型为[BOOK={class,name,][public_date,author,rate}],其中:

1) class为图书的类别。在协同过滤中冷启动是一直存在的问题,即用户初次登录没有行为信息的时候推荐系统无法为其推荐所需的书籍,因此需要根据用户所在学院、专业匹配相应类别的书籍。例如计算机类专业偏爱编程性书籍,金融类专业所借金融类书籍比较多。

2) name为图书的名称。图书的名称涵盖本书的主要内容,依据图书名称的分析能进一步缩小书籍所涉及的内容。

3) public_date为图书的出版时间,用于确定受时间影响的因子。

4) author为图书作者。同一作者的书籍通常水平有保证,也更受一些用户的青睐。

5) rate为该图书的评分,即从网络上抓取的书籍评分,加以分析修正后,更有代表性和普适性。

3  推荐算法的选择与改进

3.1  推荐算法

协同过滤算法是推荐算法中最常见也是最有效的推荐算法之一,它的主要思想是利用群体智慧来进行事物的推荐。根据参照物的不同,协同过滤可分为基于用户的协同过滤(UserCF)和基于事物的协同过滤(ItemCF)。二者都是基于邻域的推荐模型,用于在N维空间计算用户或事物的相似性,最后选取topN作为推荐结果。在图书推荐领域中,最常用的推荐算法是基于事物的协同过滤,这是因为用户的兴趣爱好和偏爱书籍的类型往往是固定的,且高校图书馆中的书籍信息相对于用户的数据而言更少,这不仅可以减少计算次数,还可以大幅度提高计算速度。在推荐结果中,基于事物的协同过滤也更具有个性化,对于冷启动的问题优化更好。

基于事物的协同过滤是以事物为主体,首先根据用户对商品的评分(包括显式评分和隐式评分)构建一个[m×n]的图书?用户评分矩阵:

[R=r11r12…r1nr21r22…r2n????rm1rm2…rmn] (1)

式中:m为图书的数量;n为用户的数量;r为不同图书接收到的不同用户的评分。

根据不同图书接收到的各种评分,计算两两图书之间的相似度,常用的计算相似度的方法有余弦相似度、修正的余弦相似度、杰卡德系数和皮尔逊系数。

1) 余弦相似性

将不同用户的评分规划为N维向量,通过计算两个N维向量的夹角来判断相似性。

[snm=p=1nirnprmpp=1nir2npp=1nir2mp]  (2)

2) 修正的余弦相似性

在余弦相似性中没有考虑到不同用户的评分尺度问题,修正后的余弦相似性在评分中减去评分的平均值来消除这种影响。

[snm=p=1ni(rnp-rn)(rmp-rn)p=1ni(rnp-rn)2p=1ni(rmp-rn)2] (3)

3) 杰卡德系数

杰卡德系数考虑到评价数量和比例对于评分的影响。

[snm=n?mn?m] (4)

4) 皮尔逊系数

将两个物品的相似性建模成衡量两个线性相关的变量的方法,意义在于不同用户对共同商品的评价。[snm=p∈Inm(rnp-ri)(rmp-rm)p∈Inm(rnp-ri)2p∈Inm(rmp-rm)2] (5)

由郑炳维在公开数据集中测试,修正的余弦相似性具有更好的效果,因此本文以修正的余弦相似性作为相似性判定[8]。

3.2  优化与改进

在推荐系统中,推荐结果往往会受很多方面的影响,如何根据应用情景精确推荐结果是一个值得研究的课题。在本设计中,来源于网络的评分数据往往不能直接使用,要经过分析对数据进行优化。同样在某些时效性要求较高的书目中,尤其是技术性丛书、教学型丛书,需要考虑时间的影响。因此,从以下两方面对其进行优化与改进。

1) 用户评分的优化

本系统选取网络上对书籍的评分,但这种评分对于图书类别有很大的局限性。经常阅读文学类书籍的用户对文学类书籍评分尺度相同,而对于计算机类相关书籍评分却很严格,这样就造成了评分尺度的不同。与此同时,这类用户可能很少甚至没有对其他类书籍的评价,这就造成了不同种类不同类型用户的评分,势必会影响图书的推荐结果。因此需要消除这些与商品?用户交互无关的影响,即消除偏置,建立统一的基准。消除偏置的计算公式为:

[sj=si-s+μ+α] (6)

式中:[si]为该图书的真实评分;[s]为该图书的平均分;[μ]为所有图书的平均分;[α]为用户模型构建的综合评分。该图书在消除了不同类图书的均值差异之后,再赋予共同的基准值,最后加上以用户模型为评判的综合评分,得到最终的用户评分。修改后的值消除了不同用户之间的偏置,更有代表性。

2) 时间因子的优化

在某些图书中,往往存在相应的时效性,随着时间的推移推荐值逐渐减小。例如2013年出版的《hadoop权威指南》与2017年出版的《hadoop权威指南》,前者介绍的是hadoop0.X,与现在主流使用的hadoop2.X存在很大的差异,因此需要着重推荐后者而不是前者。但这种时间的推移并不是逐渐转变的,而是阶段性的降低。对于上述需求,引入了一个非线性函数作为评分的权重,计算公式为:

[Sut=12ceilingt-ti] (7)

式中:u为使用用户;ceiling函数为向上取整函数;ti为该书籍的出版时间。由此可知,随着时间的增长,权重逐渐降低,很好地模拟了技术类丛书随着时间的推移,重要性呈阶段性降低的情况。

4  实验分析

以某高校圖书馆推荐为例,选取了115 MB的数据集,其中包括11.7 MB用户信息数据集,74.1 MB的图书数据集和29.2 MB的用户?图书借阅数据集。为了模拟实际运行环境,本实验运行在VMware虚拟机上,模拟4台计算机并且每台计算机分配1核CPU和2 GB内存的资源。计算速度记录如表2所示。

由表2可知,在预先计算好用户模型和图书模型的情况下,传统计算的时间平均为1.58 s,而Spark计算的时间平均为1.014 s,比传统算法快了35.8%,由此说明应用Spark计算大幅度提高了计算效率。

在对推荐算法的评估中,最常用的指标是平均绝对偏差(MAE)[9]。平均绝对偏差是比较预测评分与实际评分和的平均值,其计算公式为:

[MAE=i=1Npi-qiN] (8)

式中:[pi]为预测评分;[qi]为实际评分。由此可见预测评分和实际评分的差距越小,MAE值就越小,所推荐的商品也就越准确。

不仅推荐质量对MAE的大小有影响,邻居数量也会对MAE的大小有很大影响。选取邻居数量分别为10,20,30,40,50,得到相应的MAE值如图3所示。由图3可知,改进的协同过滤算法MAE值不仅比传统的协同过滤算法更低,而且随着邻居数量的增加,MAE上升速度也更慢。通过上述两组对比,可以看出基于Spark平台的推荐在速度上有了很大提升。基于用户模型和图书模型,并对评分偏置和时间偏置进行优化的算法在准确率上也起到了很大的作用。

5  结  语

本文主要对传统高校图书馆的书目推荐系统进行改进。虽然推荐系统在运行速度和准确率上有了很大提升,但是在用户和图书信息收集方面存在很大缺陷,尤其是如何判定书籍中的知识是否符合现在需求方面,还需要在未来的研究中继续深入探索。

参考文献

[1] 任星怡,宋美娜,宋俊德.基于用户签到行为的兴趣点推荐[J].计算机学报,2017,40(1):28?51.

REN Xingyi, SONG Meina, SONG Junde. Point?of?interest recommendation based on the user check?in behavior [J]. Chinese journal of computers, 2017, 40(1): 28?51.

[2] 何胜,冯新翎,武群辉,等.基于用户行为建模和大数据挖掘的图书馆个性化服务研究[J].图书情报工作,2017,61(1):40?46.

HE Sheng, FENG Xinling, WU Qunhui, et al. Research on personalized services of library based on user behavior modelling and big data mining [J]. Library and information service, 2017, 61(1): 40?46.

[3] 车晋强,谢红薇.基于Spark的分层协同过滤推荐算法[J].电子技术应用,2015,41(9):135?138.

CHE Jinqiang, XIE Hongwei. Hierarchical collaborative filtering algorithm based on Spark [J]. Application of electronic technique, 2015, 41(9): 135?138.

[4] 王成,朱志刚,张玉侠,等.基于用户的协同过滤算法的推荐效率和个性化改进[J].小型微型计算机系统,2016,37(3):428?432.

WANG Cheng, ZHU Zhigang, ZHANG Yuxia, et al. Improvement in recommendation efficiency and personalized of user?based collaborative filtering algorithm [J]. Journal of Chinese computer systems, 2016, 37(3): 428?432.

[5] 魏琳东,黄永峰.融合用户属性信息的冷启动推荐算法[J].电子技术应用,2017,43(10):137?140.

WEI Lindong, HUANG Yongfeng. Incorporating user attribute data in recommendation system [J]. Application of electronic technique, 2017, 43(10): 137?140.

[6] 詹义,方媛.基于Spark技术的网络大数据分析平台搭建与应用[J].互联网天地,2016(2):75?78.

ZHAN Yi, FANG Yuan. Building and application of network big data analysis platform based on Spark technology [J]. China Internet, 2016(2): 75?78.

[7] 马玲娜.基于集体智慧的标签推荐系统的设计与开发[D].西安:陕西师范大学,2013.

MA Lingna. Design and development of tag recommendation system based on collective intelligence [D]. Xian: Shaanxi Normal University, 2013.

[8] 郑炳维.基于Spark平台的协同过滤算法的研究与实现[D].广州:华南农业大学,2016.

ZHENG Bingwei. Research and implementation of collaborative filtering algorithm based on Spark platform [D]. Guangzhou: South China Agricultural University, 2016.

[9] 张宏,王慧.基于用户评分和共同评分项的协同过滤算法研究[J].计算机应用研究,2019,36(1):77?80.

ZHANG Hong, WANG Hui. Research on collaborative filtering algorithm based on user score and common score [J]. Application research of computers, 2019, 36(1): 77?80.

[10] 王捷.基于用户行为数据分析的高校图书馆信息服务平台研究[J].现代情报,2017,37(1):127?130.

WANG Jie. Study of information service platform based on data analysis of user behavior in university libraries [J]. Modern information, 2017, 37(1): 127?130.

猜你喜欢
个性化推荐协同过滤高校图书馆
基于链式存储结构的协同过滤推荐算法设计与实现
基于相似传播和情景聚类的网络协同过滤推荐算法研究
个性化推荐系统关键算法探讨
基于协同过滤算法的个性化图书推荐系统研究
混合推荐算法在电影推荐中的研究与评述
高校图书馆阅读推广案例分析
微信公众平台在高校图书馆信息服务中的应用研究
高校图书馆阅读推广实践探讨
高校图书馆电子资源的宣传与推广