李文华
摘要:该文根据图书借阅数据的特点,提出了一种基于Apriori关联分析与协同过滤推荐算法。对于协同过滤算法的重要难点是计算图书之间的相似性,尤其是在缺乏用户评分数据的情况下。该文通过将Apriori关联性算法与协同过滤推荐算法相结合,利用图书之间的关联性来构建图书之间的相似性矩阵,从而解决了在图书借阅数据中缺乏用户评分的问题,试验结果表明该文在图书借阅数据集上的推荐准确率和效率都有较大改善。
关键词: Apriori;关联分析;协同过滤;图书推荐;相似矩陣;图书借阅
中图分类号:TP181 文献标识码:A 文章编号:1009-3044(2017)33-0032-02
Abstract: Based on the characteristics of book borrowing data, this paper proposes an algorithm Based on Apriori association analysis and collaborative filtering recommendation. The important difficulty for collaborative filtering algorithms is to calculate the similarity between books, especially in the absence of user rating data. In this paper, the Apriori correlation algorithm and the collaborative filtering recommendation algorithm are combined to construct the similarity matrix between books by using the correlation between the books, which solves the problem of lack of user score in the book borrowing data. The experimental results show that The recommendation accuracy and efficiency of the book borrowing data set have improved greatly.
Key words: apriori; association analysis; collaborative filtering; book recommendation; similar matrix; books borrow
1 概述
近年来,随着数据挖掘领域研究的活跃,数据挖掘技术在各行各业都得到了广泛的应用。如何有效地利用图书借阅数据来提高图书管理服务,是当前图书借阅数据挖掘的重点。在图书管理服务中,有效的图书推荐是提高读者借阅查找效率和读者借阅体验[1]。在过去的几年中,协同过滤推荐算法在商品推荐中得到了广泛的应用,特别是在商品图书推荐中,例如亚马逊、当当、等电子商务中,都采用了协同推荐算法来实现商品推荐[2]。
但是在基于图书借阅数据的协同推荐中,还存在着一些需要解决的难题。采用协同过滤算法根据借阅数据进行借阅图书推荐的难点包括以下两个方面:
1) 评分数据的获取。在商品数据推荐中,协同过滤算法需要使用商品的评价来对计算用户对商品之间的相似度。然而在高校图书管理系统中,图书借阅系统很少包括借阅后对图书的评价,难以收集图书评分数据。这是协同过滤在图书借阅数据中最大的难点。
2) 相似性度量。在传统的商品推荐系统中,由于用户之间很少存在相同的知识背景以及生活场景,所以用户之间的相似性只能通过对商品的购买来判断。但是在图书借阅系统中,特别是高校读书借阅系统中,借阅用户通常会具有年龄、专业以及知识背景等相似性,传统的商品推荐中的协同过滤算法并没有考虑这些相似的背景。
基于以上考虑,本文提出了一种基于Apriori关联分析的协同过滤图书推荐算法。通过图书之间的关联性分析来解决缺乏用户评分的问题,同时,通过对数据库的解析,在计算相似性矩阵时,嵌入了用户的背景知识,如:用户年纪、年级、专业、学院等。本方法在高校图书借阅数据中的测试表明了推荐的有效性。
2 相关研究
2.1 Apriori关联分析
关联规则的挖掘最早是应用在商品数据库中的挖掘[3-5],其中最为著名的关联规则挖掘算法是基于Apriori算法[4-6]。Apriori算法可以快速的挖掘数据集合中的频繁项集,其中频繁项集指的是数据集中出现频率最高的数据项组合,其具体算法流程是:
1) 首先,找出所有1项频繁集[L1]。
2) 根据[L1]频繁项计算得到候选集[M2]。
3) 根据新的候选集[M2]得到频繁集[L2]。
4) 依次迭代,直到得到指定项的频繁集,最后根据设定的最小置信度和频繁集产生关联规则。
2.2 协同过滤
协同过滤算法[7-9]进行推荐是根据其他用户的对商品的评论,从而产生对目标用户的推荐列表。协同过滤的基本假设是:不同用户对项目的评分相似,那么他们对其他相似项目的评价也比较相似。基于协同过滤系统的推荐算法主要是通过统计技术来寻找目标用户的最近邻邻居,然后从邻居相似的列表中产生推荐列表。在协同过滤算法中最重要的是找到目标用户的最近邻居,必须度量用户之间的相似性,然后选择相似性最高的若干用户作为目标用户的最近邻居。目标用户的最近邻居查询是否准确,直接关系到整个推荐系统的推荐质量.准确查询目标用户的最近邻居是整个协同过滤推荐成功的关键。
在协同过滤算法中,用户评分数据可以用[m×n]阶矩阵[A(m,n)]表示, m行代表m个用户,n列代表n个项目,第i行第j列的[Rij]代表用户i对项目j的评分。用户评分数据矩阵如表1所示。度量用户i和用户j之间相似性的方法是,首先得到经用户i和用户j评分的所有项目,然后通过不同的相似性度量方法计算用户i和用户j之间的相似性,记为sim(i,j)。
基于协同过滤推荐算法的核心是构建用户之间的相似性矩阵,在商品推荐系统中,用户之间的相似性是通过用户对商品的评价来计算。然而在图书借阅记录数据中,读者很少会对图书进行评分,因此,在利用借阅数据进行图书推荐时,需要提出新的相似性度量方法以便構建借阅用户之间的相似性矩阵。
3 基于关联分析的协同过滤推荐算法
为了根据借阅数据来实现借阅图书推荐,首先需要解决的问题是如何定义借阅用户之间的相似性。因此基于关联分析的协同过滤推荐算法主要是通过图书关联来构建图书相似性矩阵,从而进一步实现图书推荐。通过对图书馆的借阅数据的分析,可知,在图书卡的信息中包含了两部分信息,一是学生的基本信息,如年级、专业、出生日期、性别等;二是学生的书籍借阅历史信息。通常,我们可以根据学生之间的基本信息快速的定义学生之间的相似性矩阵,但是这种相似性定义仅仅只考虑了学生的基本信息,并没有考虑学生之间借阅相似性进行。因此,在本文中,提出了一种基于关联分析的协同过滤借阅图书推荐算法。其算法的核心思想是通过对借阅数据中频繁项集的挖掘来定义学生之间对图书的兴趣,并基于此构建学生之间的相似性矩阵。算法的流程基本流程如下:
1) 首先分别根据图书的借阅数据进行图书之间的关联性挖掘,得到2项集频繁集置信度。
2) 从借阅数据中,提取学生专业、年纪等属性信息,并向量化。
3) 利用图书之间的关联性与基本信息之间的相似性,构建相似性矩阵。
4) 根据相似性矩阵查找目标用户的最近邻。
5) 根据目标用户最近邻,生成图书推荐列表。
在本算法中,最为关键的两点是如何利用图书关联性来构建相似性矩阵,以及如何定义用户之间的相似性。对于用户来说,相似性可以根据用户的属性信息来定义,用户的相似性定义如下:
[SimUseri,Userj=Majori, Agei,Sexi,Gradei×Majorj, Agej,Sexj,Gradej] (1)
对于图书相似性,可以通过挖掘图书之间的关联性来进行定义。例如在图书集合[B={B1,B2,B3,B4,B5}]中,通过关联分析可以得到图书之间的被同时借阅的频率,基于此我们即可构建图书的相似性矩阵。图书相似性矩阵定义,如存在图书[Bi,Bj],其中由关联挖掘得到的2-项支持度,定义为:
[AssociationBi,Bj=Sup(Bi,Bj)Max(Bi,Bj)] (2)
采用式(2)中的关联度来定义相似性会存在一个问题,通过对数据库中的数据挖掘可知,在大部分的图书之间没有被同时借阅过,因此,这会造成相似矩阵过于稀疏,不利于进一步进行协同过滤算法。为了解决该问题,在度量图书相似度时,本文还引入了常见的图书属性,例如书名、分类、出版年限等。对于图书[Bi=α1,α2,…αn,Bj={β1,β2,…,βn}],其矩阵相似度
[EuclideanBi,Bj=(α1-β1)2+ (α2-β1)2+(αn-βn)2] (3)
由图书之间的关联性和图书属性之间的相似性我们可以定义图书之间的相似度如式(4)所示:
[SimBi,Bj=α*EuclideanBi,Bj+1-α*EuclideanBi,Bj] (4)
其中[α]用来控制在相似性属性中属性距离和关联性所占的比重,在实际推荐中可以对其进行调节。
下面以表2为例,假设历史借阅数据如表2所示,当需要对新的借阅用户进行图书推荐时,首先通过式(1)得到该用户的最近的几个相似性邻居用户,然后查找得到邻居用户的借阅图书记录。再将这些图书数据与该用户的借阅图书记录根据式(4)计算得到图书之间的相似性,并排序,并将排序的[Topk]推荐给该用户。
4 实验与结果
对于一个推荐算法来说,首先需要验证的是其推荐结果的有效性。在试验中,通过将本文提出的算法与基于K-means聚类算法以及基于模糊聚类(FCM)的协同推荐算法进行了对比。
在本文中,我们通过将已有的9000条借阅数据,随机分成了3份,采用3交叉验证方法对算法进行了对比。对于,每个算法,我们将3000条数据算作历史数据,其余6000条数据进行测试,计算并比较算法的推荐准确率。其中推荐准确率定义如式(6)所示:
[Precision= 推荐准确图书数目总借阅图书数] (6)
3组实验结果统计如表3所示:
从实验结果对比可以看到,本文提出的算法在推荐准确率上有了较为显著的提高,一方面是由于本文通过关联分析增加了图书相似性的属性,另一方面是由于考虑了学生之间的属性,增加了推荐算法的针对性,从而提高了算法的准确率。
5 结论
本文提出了一种基于Apriori关联分析算法的协同过滤推荐算法。在本文中,通过对图书之间关联性的分析,提出了一种基于关联分析的相似性计算方法,并应用它将协同过滤算法应用到图书借阅推荐中来。与K-means以及FCM算法的结果对比,可知本文提出的方法在推荐准确率上得到了显著的提高。
参考文献:
[1] 赵祖应, 丁勇, 邓平. 基于Apriori算法的购物篮关联规则分析[J]. 江西科学, 2012, 30(1):96-98.
[2] 焦亚琴, 刘晓云, 张银叶. 基于Mahout的个性化电子商务推荐系统研究[J]. 电脑知识与技术, 2015(4X):261-264.
[3] 周发超, 王志坚, 叶枫,等. 关联规则挖掘算法Apriori的研究改进[J]. 计算机科学与探索, 2015, 9(9):1075-1083.
[4] 张启徽. 关联规则挖掘中查找频繁项集的改进算法[J]. 统计与决策, 2015(4):32-35.
[5] 李仕琼. 数据挖掘中关联规则挖掘算法的分析研[J]. 电子技术与软件工程, 2015(4):200-200.
[6] 陈方健, 张明新, 杨昆. 一种具有跳跃式前进的Apriori算法[J]. 计算机应用与软件, 2015(3):34-36.
[7] 吴月萍, 郑建国. 协同过滤推荐算法[J]. 计算机工程与设计, 2011,32(9):3019-3021.
[8] 张光卫, 李德毅, 李鹏,等. 基于云模型的协同过滤推荐算法[J].软件学报, 2007,18(10):2403-2411.
[9] 黄创光, 印鉴, 汪静,等. 不确定近邻的协同过滤推荐算法[J].计算机学报, 2010,33(8):1369-1377.