冯丽娟 郭梦诗
(郑州科技学院电子与电气工程学院)
随着数据库技术和网络通信技术的飞速发展,目前多数高校图书馆已经开始使用计算机自动化处理模式取代传统的人工服务模式,并且通过数据库技术对图书借阅和编目过程进行管理。图书馆图书管理系统经过多年的积累,存储了大量的信息。发现隐藏的有价值信息或关联规则对图书馆管理和服务具有重要的指导意义。应用数据挖掘技术在图书馆管理系统中非常重要,因为它能根据读者的借阅记录和借阅规律有效地发现教师和学生的阅读兴趣,给读者推荐相关书籍,加强图书馆资源的整合和利用,调整书籍的布局模式。此外,充分有效的利用这项技术对于人们及时了解读者的信息需求,提高图书馆的服务质量,促进图书馆管理具有很强的指导意义[1-3]。
正如相似度的计算和推荐算法的应用。在相似度计算方面,用户相似度或项目相似度的计算采用相同相似度的计算方法。常用的计算思路是:将项目的权值用N维空间向量表示,然后通过代数的方法测量两个空间向量之间的距离和角度,从而表示相似度[4,5]。皮尔森相关系数是一种常用的基于相关系数的相似度计算方法。为了使计算准确,通常需要找到评价的用户。假设用户i和j共同评价项目c, R为评价矩阵,则对应的皮尔森相关系数计算公式如下:
余弦相似度是第二种相似度方法。如果项目i和j被看作两个m维的用户空间向量,进行相似度计算是通过计算两个向量的余弦角,然后,对于评分矩阵,i和j的相似度可以用以下公式计算:
调整余弦相似度是一种较为先进的计算方法。在余弦相似度的计算过程中,不考虑用户的评分标准不同(即部分用户得分高,部分用户得分低)。调整后的余弦相似度弥补了上述缺陷。具体来说,首先通过计算每个用户的平均分来调整评分偏差向量的得分向量,然后求解余弦相似度,公式如下:
基于项目的相似度和基于用户的相似度的方差分析:上述三个相似度公式都是基于项目相似度情景的,但实际上基于项目的相似度和基于用户的相似度存在基本的区别。其中,基于项目的相似度计算公式根据评价矩阵中列向量的相似度求解相似度,而基于用户的相似度计算公式根据评价矩阵中的行向量求解相似度。因此,以上三个公式可以分别使用。本文根据用户的借阅情况计算用户的相似度,因此读者与图书之间的相似度采用余弦相似度计算[6-9]。
在本文中关于推荐算法的使用,推荐算法是基于用户和图书的协同过滤推荐算法。相似的用户和相似的书籍被探索。相似用户被定义为借阅数量相同的用户,相似书籍被定义为同一时期一起借的书籍。基于用户的协同过滤,用户u和用户v之间的相似度定义为n,书籍的借阅量由u和 v表示。n越大,用户之间的得分向量和j更大,相似性度越大,说明这两个用户的相似度越高。对于每个用户u,找到相似度最高的k个用户,根据k个用户的借阅记录向v推荐图书。在基于图书的协同过滤中,将图书b与图书t的相似度定义为m,即两者一起被借的数量。m越大,他们的相似性就越大。找出第一本相似点最多的q书并推荐给其他人。基于用户的协同过滤挖掘算法分为用户模型的建立、最近邻的搜索和推荐列表的生成三个阶段。
首先,要建立读者借阅模型。协同过滤算法的输入数据通常表示为m*n个用户的评价矩阵,其中第m行表示有m个读者,第n列表示n本图书;是第一个i阅读器的第一个j项的得分值。评分值表示读者是否借阅该书,如果是,空格填充1;如果不是,空格填充0,如表1所示。
表1 读者
其次,应找到最近的邻居。在基于用户的协同过滤推荐算法中,最重要的步骤是找到最近的邻居用户(相似读者)。通过计算目标阅读者与其他阅读者之间的相似度,计算出与目标阅读者最相似的近邻集。第一步是搜索与目标读者最相似的近邻集合,u与用户UK在U中的相似度按降序排列。它的定义是:用户共同借阅的图书越多,u和UK之间的相似度就越大。下一步是选择k个相似度大于设置阈值的用户。假设k的最大值为20(当然,其他参数(如5或10)也可以根据需要选择)。
最后,生成图书推荐列表。推荐结果保存在数据库表中,包括读者姓名、图书卡号和推荐书目名称。读者登录图书推荐系统后,图书推荐系统根据读者的信息,将有针对性的推荐信息呈现给读者,实现个性化的图书推荐。基于图书的协同过滤推荐算法的原理与基于用户的协同过滤推荐算法相似,其主要过程包括图书相似度的计算和推荐的生成。第一阶段,计算图书与图书之间的相似度。计算书i和书j相似度的基本思想是基于读者对书的评价矩阵;每个项目的得分被视为一个n维用户空间向量。然后,根据相似度度量公式计算两者之间的相似度。第二阶段,根据生成的相似图书列表,选择相似度最高的前m本(如20本),并存储在数据库表中,以便图书推荐系统可以随时调用。基于图书的协同过滤算法的关键步骤也是计算项目之间的相似度,选择最相似的项目,类似于基于用户的协同过滤。
协同过滤挖掘是由建立用户模型、寻找最近邻和生成推荐列表三个过程组成。下面几节将阐述挖掘的实现过程。论文重点描述了基于用户的协同过滤挖掘的实现过程。算法的具体处理流程如下图1所示。
图1 算法流程图
由图1可知,基于用户的协同过滤算法首先输入用户物品的二维矩阵,然后采用相似度公式计算用户之间的相似度,推导出用户的偏好集,最后为每个用户生成推荐列表。下一步是建立读者图书的二维矩阵模型,在SQL中建立推荐书数据库,存储推荐系统中使用的各种数据表。在介绍将从图书馆发行系统中筛选出的用户借阅记录复制到建立的借阅表中之后,算法将借阅表中读者的借阅记录复制到用户表中的卡号和用户名信息。
最后,是在book表中复制Borrow表中的书名。在上述数据准备的基础上,现阶段是建立读者图书二维矩阵模型的时候。在初始化过程中,在借用记录中填充二维矩阵后,算法继续寻找最近邻集。基于用户的协同过滤计算,首要目标是得到一个与目标用户相似的用户集。本文在此定义了20个以上的邻居用户(或根据需要设置其他邻居的数量)。
在用户相似度计算方面,本文主要定义了一个用户二维矩阵top20booknums[users.count,20]。计算行数和20列以存储20个具有最大相似度的用户。相似度逐渐由高到低排序。同时,一个二维矩阵top20cardnums[users.count,20]被定义为在二维矩阵top20booknums中存储用户信息。接下来的任务是为每个用户依次找到最相似的20个邻居。用户相似度是通过相似的借书数量来衡量的。由于上述过程已经在二维借阅矩阵中填写了读者借阅记录,其中1意味着“有借阅记录”和0意味着“没有借阅记录”,本节将根据公式(2)计算用户I和用户j的相似度。如表1和表2所示,如果本文计划计算读者1和2之间的相似度,我们可以将读者1的向量设为u1 =(1,0, 0, 1, 1)和读者2的向量设为u2 =(1, 1, 1, 1, - 1)。读者1和2之间的相似性可根据上述公式计算。通过这样的类比,最终可以得知每个用户最相似的20个邻居。
通过以上相似度计算,本文获得最多20个相似用户,并将这20个用户的信息和相似度值输入到数据库表User Similarity中。接下来的任务是为每一个用户推荐一本书,即向目标用户推荐邻居借阅的书籍。定义了二维矩阵后,通过在图书推荐二维矩阵中输入推荐信息,就可以得到每个读者的图书推荐信息。为强化推荐结果,对读者的喜好进行了特别排序。到目前为止,基于用户的协同过滤结果已经存储在相应的表中。当用户登录系统时,系统会自动识别用户信息并推荐相关书籍。
基于上述思路进行编程,可得到如表2、表3所示的测试结果。从表3可以看出,两种算法的推荐效率(即准确率)会随着邻居阈值的增大而降低,归因于协同过滤中存在的稀疏性和冷启动问题。例如,基于用户的协同过滤算法的稀疏性问题是图书馆的书号绝对高于学生号。被读者借阅的书籍可能还不到图书馆藏书的2%。不同读者借同一本书的可能性非常低,甚至为零。而研究结果表明,当用户评估项目总数小于10%时,容易导致评估矩阵数据的严重稀疏性。因此,本文算法无法找到与用户具有相似偏好的邻居。在基于图书的协同过滤中也存在许多类似的问题。基于书籍的协同过滤推荐与用户以前喜爱的书籍风格相同的书籍。该算法通过分析阅读者对物品的评分来计算物品之间的相似度。因此,推荐同类书籍让读者借阅。应注意特殊用户问题是由于部分读者的图书证经常被其他读者借阅,这些读者没有固定的兴趣和爱好。而这恰好构成了基于用户的协同过滤系统的前提。在这种情况下,系统很难为这些读者找到邻居,也不能给出精确的推荐信息。
表2 基于用户的协同过滤
表3 基于用户的协同过滤
比较两种算法的推荐效果,基于图书的协同过滤的预测成功率(准确率)明显高于基于用户的协同过滤。原因与训练数据量有限有关。由于本文采用的借阅数据仅涵盖2012年的借阅记录,大部分读者的借阅记录都找不到。在该系统中,相似用户的计算方法将其定义为项目的向量。读者中有相当罕见的常见借阅记录。数据查询和分析结果表明,许多读者只有一本常见的借书。因此,用这种方法发现的邻居可能不是拥有相同利益的邻居。然而,这个问题在书中并没有出现在基于相似性的算法中。基于图书的协同过滤效果远远超过基于用户的协同过滤效果。基于这个原因,很多购物网站和图书网站设计了基于协同过滤的推荐系统。
在推荐效果方面,结果仍不尽如人意。一方面,检索到的数据都记录在2012年(自循环系统所使用的单位不能存储借阅历史总体的读者,但只能查询2012年的借阅记录)和推荐的图书信息系统不能发现在测试记录。但这并不意味着读者在2011年、2010年或更早的时候不再借书,也不意味着他们将不再借书。另一方面,通过以往的验证结果表明,用户或项目的邻居号对推荐效果有很大的影响。例如,适当缩短邻居数阈值或图书邻居阈值,相应图书推荐的成功率也会提高。此外,根据作者的调查,许多读者的借书证会被他人用来借书,这在一定程度上影响了推荐效果。
随着数据库技术和网络通信技术的飞速发展,绝大多数高校图书馆都已实现由传统的手工服务模式向计算机自动处理模式的转变。为了进一步提高图书馆管理的信息化程度,本文采用改进的基于协同过滤关联规则的算法对高校图书馆管理数据挖掘进行研究,并以图书馆的真实借阅记录为基础,采用基于用户和基于图书的协同过滤技术,设计合适的图书推荐系统,挖掘读者借阅偏好与图书关联,最终得出读者借阅规则。这样,系统就实现了适合读者的个性化图书推荐功能。最后,通过测试对推荐系统的有效性和预测性进行评估,得出基于图书的协同过滤算法比基于用户的协同过滤算法具有更高的预测准确率的结论,对图书馆的图书推荐工作具有一定的参考价值。