论文部分内容阅读
摘 要:文章结合关联规则挖掘和协同过滤算法的特点,根据图书馆的实际情况,提出了混合图书推荐算法。将该算法应用于广大图书管理系统中,有助于提高用户体验。
关键词:关联规则;协同过滤;图书推荐
中图分类号:TP391.3 文献标识码:A
一、引言
现如今,应用大数据技术已成为时代的主流,但海量的数据能给我们提供什么呢?答案是信息,而且是有价值的信息,能使我们提高工作效率。以图书馆为例,传统图书馆管理系统中不仅有大量图书信息、用户信息,也有许多借阅者的借阅信息,这就带来一个问题,这么多借阅信息能带来什么好处?通过数据挖掘,我们就能从中很容易发现用户的一些兴趣偏好,并以此为依据,向用户推荐他/她可能感兴趣的书籍。
二、现状
推荐系统运用十分广泛,最常见的可能就是电商网站上的推荐系统。国内如阿里旗下的淘宝、天猫等购物网站,同时网易云音乐在推荐系统方面也建树颇丰,往往能向用户推荐可满足其喜好的音乐。在图书推荐领域,国内外专家学者在其作品中也有涉及。如吉林大学李欣弘发表的《基于关联规则和情感分析的图书 推薦算法研究》中就介绍了利用关联规则和情感分析算法实现图书推荐,F.Heylighen的“Hebbian algorithms for a digital library recommandation system”等。但是相对其他领域,推荐算法在图书推荐方面的应用还是相对较少的。
三、关键技术介绍
1.基于KNN的协同过滤推荐算法
邻居模型通常又称为KNN模型(K-nearest neighbors),KNN算法的核心思想是:如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。采用 KNN方法进行类别决策时,只与极少量的相邻样本有关。相关性的计算本例中使用的是Pearson相关系数。Pearson相关系数考虑到不同用户的评分尺度问题,将同一个用户对不同的项目评分进行归一化的处理,这样就可消除因由用户个人主观因素而造成的对相似性结果的影响。结合本例Pearson相关系数公式如下:
sim(i,j)=
sim(i,j)表示书本i和j的相似度,Pmn表示对书m、n都评过分的用户集合rm,rn,分别表示书m和n的平均评分,分别表示用户v对书本m、n的评分。
2.关联规则
(1)关联分析(Association Analysis)
用于发现隐藏在大型数据集中的令人感兴趣的联系,所以发现的模式通常为关联规则(Association Rule),或以频繁项集的形式表示。
Apriori算法是关联规则挖掘中最常用的算法,在介绍Apriori算法之前要首先了解何谓先验原理。先验原理是减少候选集数量的方法之一,其核心思想是:如果一个项集是频繁的,则它的所有子集一定也是频繁的;反之,如果一个项集是非频繁的,那么它的所有超集一定也是非频繁的。Apriori算法正是运用这一性质。算法的主要步骤主要由连接步和剪枝步组成。这里不再描述连接步和剪枝步的具体实施步骤。不过Apriori算法存在一定的缺陷,如会产生庞大的候选集;多次扫描事务数据库时,需要很大的I/O负载。为此Jiawei Han等于2000年提出了不产生候选挖掘频繁项集的方法——频繁模式增长(Frequent-Pattern Growth,FP-Growth)算法。该算法通过把频繁项集的数据库压缩到一棵频繁模式树上,然后将这个压缩后的数据库划分成一组条件数据库并分别挖掘每个条件数据库,实验证明,采用这种方法可以克服改正数据集过大的缺点。
四、图书推荐的实现
1.目前图书推荐方面存在的问题
(1)KNN协同过滤算法相似度计算依赖共同评分的项目,对数据集的大小或者说数据的稀疏程度特别敏感,数据集数量越大,往往推荐的结果越精确,但系统刚上线时,往往数据较少,这时如果使用KNN协同过滤算法计算推荐的书籍时,结果可能不尽如人意。
(2)新用户的问题。其实和第一个问题类似,主要是新用户可能没有借阅过相应的书籍,或者借阅的数量太少,盲目使用KNN协同过滤推荐算法时并不会产生很好的结果。
(3)用户口味的变化。比如,某位读者可能以前经常看同一类书籍,例如,读者平常都会借阅一些与计算机相关的书籍,可是有一天该读者突然想看一本小说,就借了一本小说,期间读者可能还想再看其他小说类的书籍。这时运用算法进行推荐时,产生的推荐可能还会是计算机方面的书籍居多,这样的结果就不会准确。
2.针对以上问题,我们可以将两种算法适当做点改变并加以应用
首先,用关联规则算法挖掘图书与图书之间的关联程度,找出强关联。这可能需要大量的数据进行模型训练,所以,初期的数据集可以来源于网络或者其他资源,这样就产生了一个巨大的关联规则库,初期的用户图书推荐就可以使用这个关联规则库。例如用户A的借阅记录集合为{A,C,D,F,G},关联规则库{{A=>B},{D,F=>Z},...etc},这时候就可以把书B和书Z推荐给用户A。随着用户借阅记录的增多,关联规则库也会逐渐丰富,借阅数据达到一定量时,可以挖掘符合本管借阅者的借阅习惯的关联规则库。关联规则挖掘所需的时间较长,规则库的更新可以考虑每周更新或者每月更新。
其次,使用KNN协同过滤算法可用于实时在线的推荐,即推荐的书籍会根据用户的借阅记录改变而改变。这里又涉及一个问题,就是用户喜好突然发生改变,数据中可表示为近期的借阅记录的图书的种类与以往借阅图书的种类产生了区别,其实这种喜好变化也很难界定,因此每个人的借阅习惯不同。但我们可以大概猜测到最近的借阅记录一般对推荐书籍的影响比较大。二八定律可以解释生活中的一些现象,在这里我们也同样可以运用。一般来说,最近借阅的书籍对近期可能想看的书籍的影响程度是80%,而之前看的书可就只有20%。通过应用二八定律我们可以这么界定,假设用户A的借阅记录如下{计算机类书A,计算机类书B,计算机类书C},假设用户A近期突然借阅了一本文学类书D,那么用户A的借阅记录就可以表示成{计算机类书A,计算机类书B,计算机类书C,文学类书D},那么接下来用户A可能就有80%的可能还想借文学类的书来看,产生推荐结果时,也可以有80%的书籍是属于与文学类书籍D强关联的书,或者至少文学类的丛书应占大多数,这个问题的解决方案后文有阐述。 考虑到实时推荐,响应的时间往往是决定性因素,为了减少响应的时间,应该对数据集进行精简。图书的分类是个很好的切入点,根据中图分类法,书籍分为五个基本部类及下设的二十二个大类,不用通过实验计算,从理论上就可以知道一本相似的图书也应该是属于它所在的分类,或者在父分类、子分类里。例如,读者借阅的是一本小说类书籍,则认为推荐给该读者的书籍也一般是小说类。所以可以先从小说这个分类底下的所有丛书中寻找相似的图书。如果找不到适合的可推荐的书籍,则再从子分类中查找。如果图中小说分类底下没有子分类,则从父分类中进行查找,即从中国文学这个分类下查找,以此类推,一般来说父级的父级类别下的书与当前书的相关性也不高。相似程度从大到小可以分为:当前分类>子分类>父分类。
通过这种方式,可以大大缩短寻找可能推荐书籍的时间。
是否可进行推荐,主要是预测用户对这本书可能的评分,如果大于一个阈值,则可进行推荐。公式如下:
其中为用户对书籍ru,m的(预测)评分,Smn为书籍m和书籍n的相似度,ru,n是用户对书籍n的评分,书籍n的选择就是运用到了KNN算法找到的和书本m相似的k个“邻居”之一。采用该算法得出的结论其实往往并不是用户真实想得到的,为此,我们提出了两个场景的假设。场景1:读者读书的喜好的变化不大,都是在一个类别下面的书,即新借阅的书籍的类型和以往的书籍基本类似。场景2:读者读书兴趣比较广泛,新借阅的书籍往往和近一段时间所借阅的书籍的类型不同,可能之前有借阅过,也有可能之前并没有借阅过。
针对以上两个场景,可以灵活运用这两个算法:针对场景1,在数据量足够大的前提下,可以使用KNN协同过滤算法进行推荐。该算法很重要的一点,是在预测一本书可能的评分时,会去寻找读者借阅记录中与该本书相似的书,如果读者的读書喜好变化不大,则找到的“邻居”就足够多,计算结果也就更加准确。而场景2,则采用关联规则即可。关联规则算法弥补了传统协同过滤算法的不足。如遇到数据集的稀疏性和冷启动问题,同时针对场景2和上文遗留下的问题,如果发现用户的喜好发生了改变,应用二八定律,80%的书本可以为最近刚借阅的书的类似书本,20%为以前借阅的书籍的类似书。
最后,同时对关联规则加以挖掘,采用Apriori算法可以产生关联规则,也可使用FP-Growth算法,两者各有优缺点,可根据实际情况进行选择;不过在如此大规模数据量的情况下,FP-Growth算法的效率可能会更高。
五、结语
本文主要介绍了关联规则和协同过滤算法在图书推荐方面的应用,在图书应用方面,我们可以巧妙运用图书分类的特点,缩小候选图书集,从而提高图书推荐的效率,因而可以运用于实时图书推荐方面。此外,关联规则挖掘可以发据一些潜在的、不容易让人察觉的联系。本文所阐述的推荐方法还有待优化,以实现目标。
参考文献:
[1]贺嘉楠,董立岩.基于权重调节的矩阵补全协同过滤算法的研究[D].长春:吉林大学,2016
[2]梁亚声,徐 欣.数据挖掘原理、算法与应用[M].北京:机械工业出版社,2015.
[3]汪 静.一种基于混合推荐模式的图书推荐系统[J].计算机光盘软件与应用,2014(11).
[4]王雪梅.基于混合协同过滤推荐的图书馆管理系统设计与实现[D].秦皇岛:燕山大学,2015.
关键词:关联规则;协同过滤;图书推荐
中图分类号:TP391.3 文献标识码:A
一、引言
现如今,应用大数据技术已成为时代的主流,但海量的数据能给我们提供什么呢?答案是信息,而且是有价值的信息,能使我们提高工作效率。以图书馆为例,传统图书馆管理系统中不仅有大量图书信息、用户信息,也有许多借阅者的借阅信息,这就带来一个问题,这么多借阅信息能带来什么好处?通过数据挖掘,我们就能从中很容易发现用户的一些兴趣偏好,并以此为依据,向用户推荐他/她可能感兴趣的书籍。
二、现状
推荐系统运用十分广泛,最常见的可能就是电商网站上的推荐系统。国内如阿里旗下的淘宝、天猫等购物网站,同时网易云音乐在推荐系统方面也建树颇丰,往往能向用户推荐可满足其喜好的音乐。在图书推荐领域,国内外专家学者在其作品中也有涉及。如吉林大学李欣弘发表的《基于关联规则和情感分析的图书 推薦算法研究》中就介绍了利用关联规则和情感分析算法实现图书推荐,F.Heylighen的“Hebbian algorithms for a digital library recommandation system”等。但是相对其他领域,推荐算法在图书推荐方面的应用还是相对较少的。
三、关键技术介绍
1.基于KNN的协同过滤推荐算法
邻居模型通常又称为KNN模型(K-nearest neighbors),KNN算法的核心思想是:如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。采用 KNN方法进行类别决策时,只与极少量的相邻样本有关。相关性的计算本例中使用的是Pearson相关系数。Pearson相关系数考虑到不同用户的评分尺度问题,将同一个用户对不同的项目评分进行归一化的处理,这样就可消除因由用户个人主观因素而造成的对相似性结果的影响。结合本例Pearson相关系数公式如下:
sim(i,j)=
sim(i,j)表示书本i和j的相似度,Pmn表示对书m、n都评过分的用户集合rm,rn,分别表示书m和n的平均评分,分别表示用户v对书本m、n的评分。
2.关联规则
(1)关联分析(Association Analysis)
用于发现隐藏在大型数据集中的令人感兴趣的联系,所以发现的模式通常为关联规则(Association Rule),或以频繁项集的形式表示。
Apriori算法是关联规则挖掘中最常用的算法,在介绍Apriori算法之前要首先了解何谓先验原理。先验原理是减少候选集数量的方法之一,其核心思想是:如果一个项集是频繁的,则它的所有子集一定也是频繁的;反之,如果一个项集是非频繁的,那么它的所有超集一定也是非频繁的。Apriori算法正是运用这一性质。算法的主要步骤主要由连接步和剪枝步组成。这里不再描述连接步和剪枝步的具体实施步骤。不过Apriori算法存在一定的缺陷,如会产生庞大的候选集;多次扫描事务数据库时,需要很大的I/O负载。为此Jiawei Han等于2000年提出了不产生候选挖掘频繁项集的方法——频繁模式增长(Frequent-Pattern Growth,FP-Growth)算法。该算法通过把频繁项集的数据库压缩到一棵频繁模式树上,然后将这个压缩后的数据库划分成一组条件数据库并分别挖掘每个条件数据库,实验证明,采用这种方法可以克服改正数据集过大的缺点。
四、图书推荐的实现
1.目前图书推荐方面存在的问题
(1)KNN协同过滤算法相似度计算依赖共同评分的项目,对数据集的大小或者说数据的稀疏程度特别敏感,数据集数量越大,往往推荐的结果越精确,但系统刚上线时,往往数据较少,这时如果使用KNN协同过滤算法计算推荐的书籍时,结果可能不尽如人意。
(2)新用户的问题。其实和第一个问题类似,主要是新用户可能没有借阅过相应的书籍,或者借阅的数量太少,盲目使用KNN协同过滤推荐算法时并不会产生很好的结果。
(3)用户口味的变化。比如,某位读者可能以前经常看同一类书籍,例如,读者平常都会借阅一些与计算机相关的书籍,可是有一天该读者突然想看一本小说,就借了一本小说,期间读者可能还想再看其他小说类的书籍。这时运用算法进行推荐时,产生的推荐可能还会是计算机方面的书籍居多,这样的结果就不会准确。
2.针对以上问题,我们可以将两种算法适当做点改变并加以应用
首先,用关联规则算法挖掘图书与图书之间的关联程度,找出强关联。这可能需要大量的数据进行模型训练,所以,初期的数据集可以来源于网络或者其他资源,这样就产生了一个巨大的关联规则库,初期的用户图书推荐就可以使用这个关联规则库。例如用户A的借阅记录集合为{A,C,D,F,G},关联规则库{{A=>B},{D,F=>Z},...etc},这时候就可以把书B和书Z推荐给用户A。随着用户借阅记录的增多,关联规则库也会逐渐丰富,借阅数据达到一定量时,可以挖掘符合本管借阅者的借阅习惯的关联规则库。关联规则挖掘所需的时间较长,规则库的更新可以考虑每周更新或者每月更新。
其次,使用KNN协同过滤算法可用于实时在线的推荐,即推荐的书籍会根据用户的借阅记录改变而改变。这里又涉及一个问题,就是用户喜好突然发生改变,数据中可表示为近期的借阅记录的图书的种类与以往借阅图书的种类产生了区别,其实这种喜好变化也很难界定,因此每个人的借阅习惯不同。但我们可以大概猜测到最近的借阅记录一般对推荐书籍的影响比较大。二八定律可以解释生活中的一些现象,在这里我们也同样可以运用。一般来说,最近借阅的书籍对近期可能想看的书籍的影响程度是80%,而之前看的书可就只有20%。通过应用二八定律我们可以这么界定,假设用户A的借阅记录如下{计算机类书A,计算机类书B,计算机类书C},假设用户A近期突然借阅了一本文学类书D,那么用户A的借阅记录就可以表示成{计算机类书A,计算机类书B,计算机类书C,文学类书D},那么接下来用户A可能就有80%的可能还想借文学类的书来看,产生推荐结果时,也可以有80%的书籍是属于与文学类书籍D强关联的书,或者至少文学类的丛书应占大多数,这个问题的解决方案后文有阐述。 考虑到实时推荐,响应的时间往往是决定性因素,为了减少响应的时间,应该对数据集进行精简。图书的分类是个很好的切入点,根据中图分类法,书籍分为五个基本部类及下设的二十二个大类,不用通过实验计算,从理论上就可以知道一本相似的图书也应该是属于它所在的分类,或者在父分类、子分类里。例如,读者借阅的是一本小说类书籍,则认为推荐给该读者的书籍也一般是小说类。所以可以先从小说这个分类底下的所有丛书中寻找相似的图书。如果找不到适合的可推荐的书籍,则再从子分类中查找。如果图中小说分类底下没有子分类,则从父分类中进行查找,即从中国文学这个分类下查找,以此类推,一般来说父级的父级类别下的书与当前书的相关性也不高。相似程度从大到小可以分为:当前分类>子分类>父分类。
通过这种方式,可以大大缩短寻找可能推荐书籍的时间。
是否可进行推荐,主要是预测用户对这本书可能的评分,如果大于一个阈值,则可进行推荐。公式如下:
其中为用户对书籍ru,m的(预测)评分,Smn为书籍m和书籍n的相似度,ru,n是用户对书籍n的评分,书籍n的选择就是运用到了KNN算法找到的和书本m相似的k个“邻居”之一。采用该算法得出的结论其实往往并不是用户真实想得到的,为此,我们提出了两个场景的假设。场景1:读者读书的喜好的变化不大,都是在一个类别下面的书,即新借阅的书籍的类型和以往的书籍基本类似。场景2:读者读书兴趣比较广泛,新借阅的书籍往往和近一段时间所借阅的书籍的类型不同,可能之前有借阅过,也有可能之前并没有借阅过。
针对以上两个场景,可以灵活运用这两个算法:针对场景1,在数据量足够大的前提下,可以使用KNN协同过滤算法进行推荐。该算法很重要的一点,是在预测一本书可能的评分时,会去寻找读者借阅记录中与该本书相似的书,如果读者的读書喜好变化不大,则找到的“邻居”就足够多,计算结果也就更加准确。而场景2,则采用关联规则即可。关联规则算法弥补了传统协同过滤算法的不足。如遇到数据集的稀疏性和冷启动问题,同时针对场景2和上文遗留下的问题,如果发现用户的喜好发生了改变,应用二八定律,80%的书本可以为最近刚借阅的书的类似书本,20%为以前借阅的书籍的类似书。
最后,同时对关联规则加以挖掘,采用Apriori算法可以产生关联规则,也可使用FP-Growth算法,两者各有优缺点,可根据实际情况进行选择;不过在如此大规模数据量的情况下,FP-Growth算法的效率可能会更高。
五、结语
本文主要介绍了关联规则和协同过滤算法在图书推荐方面的应用,在图书应用方面,我们可以巧妙运用图书分类的特点,缩小候选图书集,从而提高图书推荐的效率,因而可以运用于实时图书推荐方面。此外,关联规则挖掘可以发据一些潜在的、不容易让人察觉的联系。本文所阐述的推荐方法还有待优化,以实现目标。
参考文献:
[1]贺嘉楠,董立岩.基于权重调节的矩阵补全协同过滤算法的研究[D].长春:吉林大学,2016
[2]梁亚声,徐 欣.数据挖掘原理、算法与应用[M].北京:机械工业出版社,2015.
[3]汪 静.一种基于混合推荐模式的图书推荐系统[J].计算机光盘软件与应用,2014(11).
[4]王雪梅.基于混合协同过滤推荐的图书馆管理系统设计与实现[D].秦皇岛:燕山大学,2015.