基于云平台与一卡通大数据的图书推荐的研究与应用
2018-08-30陈虹君赵力衡罗福强李瑶
陈虹君 赵力衡 罗福强 李瑶
摘 要:高校图书馆图书推荐是学生自主化学习的必然趋势。本研究充分利用高校一卡通大数据、图书系统、成绩管理系统数的海量数据,结合OpenStack云平台技术、大数据Spark MLlib的数据挖掘的技术进行图书推荐。本文从技术架构思路、OpenStack构建云平台、Spark集群配置、基于不同策略的图书推荐、组合图书推荐等方面进行了描述和分析,从用户行为相关性、基于图书行为的推荐、新书、提高专业成绩等多个维度进行了推荐为,学生提供个性化、多样化的图书推荐,对学生的学习效率和效果有很大的帮助。
关键词:云平台;大数据;图书推荐;关联规则
中图分类号:G715.5 文献标识码:A 文章编号:1671-2064(2018)14-0058-02
高校图书馆是学生系统化自主学习的主要阵地,尽管互联上的海量碎片化的信息可以快速方便地提供大量的信息量,但也大量地分散了学生的精力。高校的图书管理系统有大量有价值的数据,本文充分利用云平台分布式存储技术、与大数据spark的快速挖掘的技术,将高校一卡通数据及学生成绩系统数据,并结合云平台与大数据挖掘技术,为学生提供个性化的精准推荐。目前也有较多基于图书推荐的算法,其数据源信息相对比较单一,仅仅是用户的借阅信息,因此推荐的角度相对较窄,容易使得学生被限定在一个局部范围内。本研究数据源来源于一卡通信息、学生成绩系统、图书管理系统等,信息是多维度的,推荐信息更符合学生的实际需要。
1 建设主要内容
1.1 技术架构思路
数据的采集来自一卡通信息、学生成绩系统、图书管理系统,数据量十分巨大,采用Pandas进行了数据的清洗和分析,比如缺失值的处理;聚合、索引、选取和数据过滤等。清洗的数据以HDFS存于Hadoop集群中,推荐算法借助于了Spark MLlib的机器学习能力,进行了推荐模型的训练;由Spark MLlib推荐的结果以标准数据格式JSON保存;推荐结果送入web端,进行页面呈现。
面向REST服务的系统集成机制。WEB端有新的借阅行为并结合定时触发以REST服务HTTP请求的方式触发Python Pandas做数据清洗。清洗结束后,采用REST服务的方式发送HTTP请求,把数据推送给Spark Mllib。推荐结果存放在HDFS中,供登陆用户使用。为了提高用户使用感受,当用户登陆后,会在以其学号命名的HDFS文件中读取推荐结果显示。如图1所示。
1.2 构建云平台
OpenStack是搭建云平台的主流技术。OpenStack基于物理集群搭载多个虚拟机。虚拟机采用自管理,用户可以通过图形化界面的方式进行:虚拟机创建、开机、关机;挂起、暂停、调整;迁移、重启、销毁等操作。同时通过OpenStack,也可以默认或者用户自定义管理配置CPU、内存、网络等;同时对日志、镜像的管理也十分方便[1]。
Spark集群由六台虚拟机构成。四台作为工作节点slave,一台主节点master,一台主备份节点master backup。本研究在OpenStack云平台的基础上搭建了Hadoop分布式的环境,并搭建了Spark的大数据框架,运行模式采用Spark on yarn。Spark推荐结果的数据将通过JSON数据格式与PHP web端进行交互。
2 基于不同策略的圖书推荐
2.1 推荐算法比较
推荐技术已经有很多的应用,有基于内容的个性化推荐算法、基于协同过滤的推荐算法、基于关联规则的推荐算法等。下面对经典的图书推荐算法进行比较,以选择合适的推荐算法。
2.1.1 基于内容的个性化推荐算法
基于内容的推荐算法在图书推荐中一般从用户以往的历史评价记录中推断出用户对各个图书的特征[2]。
2.1.2 基于协同过滤的推荐算法
该算法在推荐系统中被广泛应用,该算法又分为两种具体的算法实现。
(1)基于User的协同过滤算法。该算法需要搜寻兴趣相似的“邻居”用户。在用户对项目(Item)有评分的基础上进行,首先分析不同评分之间的相似性,搜索与目标用户兴趣最相似的“邻居”用户,然后根据最相似的“邻居”评分给目标用户进行相关推荐。评分与计算用户相似性是该算法的重点。(2)基于Item的协同过滤算法。该算法需要搜寻相似度大的项目,用户对该项目兴趣大,那么有很大的可能性会对相似的项目感兴趣。该算法仍然是在用户对项目有评分的基础上进行,首先分析项目与项目的相似性,然后为目标用户推荐可能感兴趣的项目。评分与计算项目相似性是该算法的重点。
2.1.3 基于关联规则的推荐算法
基于关联规则的推荐算法是以关联规则为基础的,把曾经记录下来的行为作为推荐基础,从中挖掘出行为规律,发现不同用户或者项目之间的关联性,该算法无需重新为图书提取特征信息,无需考虑评分,也不需要计算相似度。具体有Apriori算法和FP-growth(Frequent Pattern growth)算法。Apriori算法需要对数据库进行多次扫描,同时产生大量的候选频繁集,之后产生频繁项式,这就使算法时间和空间复杂度较大。FP-growth算法只需要扫描两次数据集,对大规模数据釆用分治的办法以减少搜索空间,在时间效率、空间效率上都有一个量级的提高。
2.2 高校图书馆的图书推荐
本文对图书的推荐,基于关联规则的推荐算法选择了FP-Growth算法。组合了不同的策略。为用户呈现8本推荐的书目,其中3条基于用户行为相关性;2条基于图书行为相关性;2条新书推荐,按专业推荐;1条基于学生成绩的推荐,按课程推荐,是推荐算法与统计方法的结合。
FP-Growth算法中,支持度(Support)和置信度(Confidence)是关联规则的两个度量依据。支持度(Support)的公式是:Support(X=>Y)=P(X U Y),X的支持度是指事务集中同时包含X和Y的事务数与所有事务数的概率,概率小则说明X与Y的相关不大;反之则说明X与Y总是相关的。
Support(X=>Y)=P(XUY)=N(XUY)/N(T) 推导(1)
设M={M1,M2,…,Mm}是个元素的集合,其中的元素则是项(Item),设T是事务的集合,是由M中的元素构成的非空集合,且每一个事务TID有且仅有一个标识符。X包含于M,Y包含于M,并且X和Y没有交集。N(XUY)是X和Y并的数量,N(T)是T中所有事务的数量[3]。
置信度(Confidence)的公式是:Confidence(X=>Y)=P(Y|X)。置信度揭示了X出现时,Y是否也会出现或有多大概率出现,概率越大,说明A的出现B有很大可能出现。见公式(2),其中support_N(XUY)是同时包含和的事务的支持度计数,support_N(X)只包含X的事务的支持度计数。
confidence(X=>Y)=P(Y|X)=support(X=>Y)/support(X)
=support_N(XUY)/support_N(X) 推导(2)
给定了最小支持度和最小置信度,接在就在给定的最小支持度度和最小置信度的基础上确立了关联规则,就可以进行频繁项的挖掘了,指定全部图书编号同时为关联规则的前项(Antecedents)和后项(Consequents)来寻找频繁相关借阅的书籍[4]。
FP-Growth的推荐方法能解决基于用户行为相关性,基于图书行为的推荐,但是对于新书的推荐和帮助专业成绩提高为目的的推荐则没有办法,因此,本文结合了统计方法:对于新书,按专业和新书的上架时间推荐;对应专业成绩提高则结合了课程与成绩多种信息。
3 结果分析
推荐运行结果的一部分截取出来,如表1所示,这些规则展示了用户借阅一本书后,很有可能会借阅另一本书。比如借阅了34号书的用户有73.456%的可能借阅125号书,因此,就将为借阅34号书的用户推荐125号书。
4 结语
基于云平台与一卡通大数据的图书推荐采用了OpenStack构建云平台,搭建Spark集群,采用多种图书推荐策略,结合FP-Growth算法与统计方法,为用户推荐书目该过程考虑了用户行为相关性和图书行为相关性,同时也考虑了新书的推荐,基于学生成绩的推荐,并考虑了推荐的准确率及推荐的多样化。本研究还存在一些不足,比如采用HDFS文件存储方式,虽然降低了耦合,但从Spark的架构方式来看,并不是最优,应减少写入HDFS的次数,充分Spark实时快速的优势。
参考文献
[1]陈虹君,谢彩云.基于Spark的大数据实验室建设的研究与实施[J].教育现代化,2016,(8):218-219+233.
[2]李瑞敏,林鸿飞,闫俊.基于用户标签项目语义挖掘的个性化音乐推荐[J].计算机研究与发展,2014,51(10):2270-2276.
[3]劉亚林.基于FP_growth算法的音乐推荐应用研究,北京交通大学[D],2015.
[4]赵力衡,陈虹君.基于Apriori算法的图书推荐应用研[J].电脑知识与技术,2018,(4):211-212.