本发明涉及读者相似性、k近邻算法、类型因子、图书推荐,是一种基于数据挖掘的高校图书推荐方法。
背景技术:
随着信息化的飞速发展,数字图书馆的快速建设,高校图书馆存储了大量学生读者的行为数据,如何有效利用这些数据挖掘出有价值的信息成为了可研究的重要方向。于此同时,个性化推荐在网络生活中的作用越来越明显,准确、高效的推荐系统可以挖掘用户潜在的消费倾向。高校图书馆个性化推荐是将高校图书馆大数据与个性化推荐结合的最好案列。
当前主流的核心推荐算法有三种。一是基于内容的推荐算法,它根据用户过去喜欢的产品,为用户推荐和他过去喜欢的产品相似的产品;二是基于关联规则的推荐算法,同一用户借阅的不同图书可以认为之间有着关联关系,从借阅信息中搜索关联度最高的图书集合可以作为图书推荐的重要参考,李默等人提出了一种基于标签和关联规则挖掘的图书组合推荐模型;三是基于协同过滤的算法,基于用户的协同过滤与项目无关,它寻找当前用户最相似的邻近用户,推荐邻近用户借阅的图书给当前用户。武建伟,俞晓红等人提出了一种基于密度的动态协同过滤图书算法;黄太波等人在数据量不同的情况下对不同的协同过滤算法进行了对比,何佶星等人提出了一种基于项目评分系统的流行度划分结合平均偏好权重的协同过滤推荐算法。此外,王鹏等人还提出了一种基于社会网络的图书推荐算法。
技术实现要素:
相比其他图书推荐,高校读者图书推荐有其自身的特点和需求。首先,高校图书馆借阅量非常大,如果将每一个读者都加入到协同计算,计算效率太低;其次,高校图书馆还未拥有完善的读者评分系统,所以一般用于高校图书馆的协同过滤算法无法利用评分来衡量推荐度,仅仅只能使用读者个人信息之间的联系进行推荐;此外,高校图书团的馆藏图书专业性质更强。结合已有研究,本发明提出了一种基于兴趣度模型与类型因子的高校图书推荐方法,使用k近邻算法将读者聚类,减少计算量;建立了兴趣度模型来量化协同过滤;将类型因子加入到协同过滤计算过程中,提高了推荐的准确率。
为了解决上述技术问题本发明采用如下技术方案:
一种基于兴趣度模型与类型因子的高校图书推荐方法,该方法使用k近邻算法将读者聚类,减少计算量;建立了兴趣度模型来量化协同过滤;将类型因子加入到协同过滤计算过程中,提高了推荐的准确率,所述推荐方法包括以下步骤:
第一步,基于k近邻算法的读者聚类
采用k近邻算法将目标读者与其k个近邻读者聚类成一个只包含近距离数据的集合;
使用读者的借阅信息、专业、年级三个维度的相似度作为聚类的标准,如下:
1.1)借阅信息相似度
读者u和读者v借阅了相同的类型的图书数目越多,表明两者的相似度越高;设bo(u,i)表示读者u是否借阅了图书i,book(u)表示读者u所有借阅图书的集合,则:
用simr(u,v)表示读者u和读者v借阅相同书籍的数量,并以此作为两者在借阅信息特征方向的相似度:
其中,b表示所有图书集合。
1.2)专业相似度
读者u和读者v的专业相似度表示为:
其中p(u)表示用户u的专业,parentp(u,v)表示读者u和读者v在专业分类树中最近父节点的所在层数,layerall表示整个专业分类树的层数,是个常量。
1.3)检索次数
相同年级的学生读者的课程及学习进度很可能也相似,所以这些读者有借阅相同书籍的可能性,设读者u和读者v的年级分别为g(u)和个g(v),则两者的年级相似度simg(u,v)表示为:
1.4)综合相似度
基于上述读者u和读者v的三个特征向量借阅信息、专业、性别构建的综合特征向量的相似度sim(u,v)为:
sim(u,v)=α×simr(u,v)+β×simp(u,v)+(1-α-β)×simg(u,v)(5)
其中α和β为调整参数,因为不同的特征向量对读者之间的相似性的影响是不同的,通过实验结果调整α和β的值,找到最佳的参数值,k近邻算法使用sim(u,v)作为聚类的标准;
第二步,使用图书借阅行为数据推算,建立读者对图书兴趣度的模型,提出了一种使用图书借阅行为数据推算读者对图书兴趣度的模型,该模型分两步,第一初步计算读者对图书的兴趣度,第二考虑读者的借阅习惯对其进行修正计算,过程如下:
2.1)获得兴趣度值
读者对一本书借阅的时间越长表示他对这本书越感兴趣,考虑到书籍页数与阅读时间成正比,计算每本书平均每页借阅时长由以下公式算得:
其中tr(u,i)表示读者u返还图书i的时间,tb(u,i)表示读者u借阅图书i的时间,page(i)表示图书i的总页数;若借阅时间处于寒暑假,或者逾期时间超过20%未归还,则将该条数据作为噪声数据去除;
用下列公式将其特征缩放为0至1之间的数值,用来表示用户对图书的兴趣度:
2.2)修正计算
用平均借阅时间来对兴趣度进行修正,最终的兴趣度like(u,i)如下表示:
其中,count(book(u))表示读者u借阅图书集合的数量;
第三步,添加类型因子计算目标读者对未借图书的兴趣度来提高推荐的准确率,并对其排序得到一个top-n的推荐列表,过程如下:
3.1)图书类型因子计算
根据中国图书馆图书分类法,计算两本图书之间的类型因子factor(i,j):
其中,b.length是图书编号的总位数,k是图书i和图书j编号中最后一个相同字符的位置下标;
3.2)计算目标用户对目标图书的兴趣度
假设目标用户为u,v∈uk是聚类后的目标用户的近邻用户,计算目标用户对已借图书集合的平均兴趣度,近邻用户对其已借图书集合的平均兴趣度:
其中
sim(u,v)是由公式(5)得到的用户综合相似度,factor(i,j)是类型因子。根据运算结果,可以将预测出的目标读者ui对图书兴趣度进行排名,得到一个top-n的推荐集合li={<u,bj>|u=ui,1≤j≤n,bj∈books}。
本发明的技术构思为:该算法包括以下过程:第一步,采用k近邻算法将目标读者与其k个近邻读者聚类成一个只包含近距离数据的集合,减少了需要运算的数据量,提高了运算效率;第二步,使用读者行为信息计算读者对图书的兴趣度,用于量化近邻读者对目标读者的影响;第三步,通过添加类型因子计算目标读者对未借图书的兴趣度来提高推荐的准确率,并对其排序得到一个top-n的推荐列表;该算法在数据挖掘过程中相比普通协同过滤算法稳定性、准确率提高,满足了高校图书馆的图书推荐需求。
本发明的有益效果主要表现在:1、智能快速的给出推荐书单,大大提高了推荐的准确性和快速性。2、改进的协同过滤算法提高了准确率。
附图说明
图1为读者u和读者v相似度计算过程,主要包括借阅信息、专业、年级三个维度的计算。
图2展示了整个算法步骤,可以分为两部分,第一部分是聚类过程。获得目标读者的k个近邻用户,可以看作是整个算法的预备部分。第二部分为推荐过程,用于获得目标读者的推荐列表,是算法的主要步骤。
图3展示了不同比重的参数借阅相似性α和专业相似性β分别综合相似性的影响。有结果可知,当α约为0.4,β为0.3的时候准确率达到了最大。
图4展示了在不同的近邻读者个数下加入了类型因子的协同过滤算法的推荐准确率都要优于未加入类型因子的协同过滤算法,而且随着近邻个数的增加,准确率提升的更明显。
图5展示了随着读者个数的增加不同推荐算法准确率的变化情况。
具体实施方式
下面结合附图对本发明作进一步描述。
参照图1~图5,一种基于兴趣度模型与类型因子的高校图书推荐方法,包括如下步骤:
第一步,基于k近邻算法的读者聚类,
研究的原始数据来自于高校图书馆业务系统和相关自动化系统,使用读者的借阅信息、专业、年级三个维度的相似度作为聚类的标准,具体分为两步,步骤一:使用式(5)计算目标读者与其他读者v的相似度sim(u,v)。步骤二:使用k近邻算法以sim(u,v)为聚类标准,获得距离目标读者最近的k个读者集合uk。
使用读者的借阅信息、专业、年级三个维度的相似度作为聚类的标准,如下:
1.1)借阅信息相似度
读者u和读者v借阅了相同的类型的图书数目越多,表明两者的相似度越高;设bo(u,i)表示读者u是否借阅了图书i,book(u)表示读者u所有借阅图书的集合,则:
用simr(u,v)表示读者u和读者v借阅相同书籍的数量,并以此作为两者在借阅信息特征方向的相似度:
其中,b表示所有图书集合。
1.2)专业相似度
读者u和读者v的专业相似度表示为:
其中p(u)表示用户u的专业,parentp(u,v)表示读者u和读者v在专业分类树中最近父节点的所在层数,layerall表示整个专业分类树的层数,是个常量。
1.3)检索次数
相同年级的学生读者的课程及学习进度很可能也相似,所以这些读者有借阅相同书籍的可能性,设读者u和读者v的年级分别为g(u)和个g(v),则两者的年级相似度simg(u,v)表示为:
1.4)综合相似度
基于读者u和读者v的三个特征向量借阅信息、专业、性别构建的综合特征向量的相似度sim(u,v)为:
sim(u,v)=α×simr(u,v)+β×simp(u,v)+(1-α-β)×simg(u,v)(5)
其中α和β为调整参数,因为不同的特征向量对读者之间的相似性的影响是不同的。可以通过实验结果调整α和β的值,找到最佳的参数值。k近邻算法使用sim(u,v)作为聚类的标准。
第二步,建立读者对图书兴趣度的模型。
由于大多数高校图书馆还未提供书评打分服务,无法利用图书评分来衡量推荐度大小,故提出了一种使用图书借阅行为数据推算读者对图书兴趣度的模型。该模型分两步,第一初步计算读者对图书的兴趣度,第二考虑读者的借阅习惯对其进行修正计算。
2.1)计算兴趣度值
首先从借阅记录集合r中获得目标读者的借阅记录ri图书的借阅时间tb和归还时间tr和图书页数page。若借阅时间在寒暑假或逾期时间超过20%,则剔除该条数据。
计算近邻读者v对已借图书bj的兴趣度like(v,bj):
其中tr(u,i)表示读者u返还图书i的时间,tb(u,i)表示读者u借阅图书i的时间,page(i)表示图书i的总页数。。
用下列公式将其特征缩放为0至1之间的数值,用来表示用户对图书的兴趣度,这样做的目的是为了规约参数,避免某些兴趣度值太大在最后的计算中所占比重太大,导致不合理的结果:
2.2)修正计算
在用like′(u,i)表示用户兴趣度的时候还必须考虑读者的平均借阅时间,因为按习惯来说,平均借阅时间长的读者与平均借阅时间短的读者相比较,在借阅相同兴趣度相同的图书的情况下,like′(u,i)应也该较大。在这里需要用平均借阅时间来对兴趣度进行修正,最终的兴趣度like(u,i)如下表示:
其中,count(book(u))表示读者u借阅图书集合的数量。
第三步,添加类型因子计算目标读者对未借图书的兴趣度来提高推荐的准确率,并对其排序得到一个top-n的推荐列表。
具体分三步,首计算未借图书bi与已借图书bj的类型因子factor(bi,bj)。然后计算目标读者对目标未借图书的兴趣度like(u,bi)。接着对结果进行top—n的排序,获得最终的推荐列表。
3.1)图书类型因子计算
根据中国图书馆图书分类法,计算两本图书之间的类型因子factor(i,j):
其中,b.length是图书编号的总位数,k是图书i和图书j编号中最后一个相同字符的位置下标。
2)计算目标用户对目标图书的兴趣度
假设目标用户为u,v∈uk是聚类后的目标用户的近邻用户,计算目标用户对已借图书集合的平均兴趣度,近邻用户对其已借图书集合的平均兴趣度:
其中
sim(u,v)是由公式(5)得到的用户综合相似度,factor(i,j)是类型因子。根据运算结果,可以将预测出的目标读者ui对图书兴趣度进行排名,得到一个top-n的推荐集合li={<u,bj>|u=ui,1≤j≤n,bj∈books}。