基于UBCF算法在图书馆个性化资源推荐中的应用研究

2024-01-27 13:41聂伟郑冰树
电脑知识与技术 2023年36期
关键词:个性化推荐图书馆

聂伟 郑冰树

摘要:针对读者对图书馆图书资源无法快速获取的问题,引入基于用户的协同过滤算法,对图书馆历史数据进行分析,构建了读者喜好度矩阵,并根据矩阵使用UBCF算法对数据建立推荐分类模型,进而获取读者的阅读行为和兴趣爱好,借助该算法对读者进行有目的的推荐,提高读者对图书资源信息的有效获取,实现图书馆个性化推荐服务。

关键词:协同过滤算法;余弦相似度;图书馆;个性化推荐

中图分类号:TP312      文献标识码:A

文章编号:1009-3044(2023)36-0022-03

开放科学(资源服务)标识码(OSID)

0 引言

随着人工智能技术的发展,出现了很多个性化推荐技术,特别是基于用户的协同过滤(User-based Collaborative Filtering,简称UCBF)算法[1-2],在很多领域也得到了应用。各个高校馆藏书籍资源都很多,但是当读者进入图书馆寻找需要的、符合自身需求的图书资源,还是需要花很多时间和精力。当前,各个高校图书馆在进行阅读推广的时候,大多采用海报的形式进行静态推广[3]。这种方式局限性较大,不能根据读者的阅读行为和兴趣爱好进行个性化推荐。针对这种情形,文本把UCBF算法用于图书馆图书资源的个性化推荐,帮助读者能迅速定位到自己满意的书籍资源,更好地满足读者的需求,进而促进高校图书资源借阅量的提升。

1 UBCF算法基本原理

1.1 基于用户的协同过滤算法

UCBF算法是常用的推荐算法之一,在个性化资源推荐领域应用非常广泛[4]。UCBF算法的基本原理是对大量的读者历史行为数据进行分析,找出他们之间的关联,然后再依据这些关联信息推荐相关的图书给兴趣度相似的读者[5]。UCBF算法在执行的过程中,首先必须通过对历史数据的分析,找到和目标读者阅读习惯和行为相似的用户集,接着对用户集的读者以兴趣度为关联进行图书推荐[6]。

1.2 余弦相似度[7-8]

UCBF算法是通过计算两个读者之间的相似度来体现他们的关联程度[9],而相似度的计算采用余弦相似度。在图书馆图书的个性化推荐中,通过计算图书借阅数据分析出具有相似阅读习惯的读者,然后向具有相同阅读习惯的读者推荐他没有接触过的图书资源。一般而言,余弦值会落在[-1,1]的范围内,该值越接近1就表示两个目标之间相似度越高。余弦相似度的计算公式为:

[WUV=I(U)⋂I(V)I(U)||I(V)                        (1)]

公式(1)表示目标用户U与用户V对图书资源喜欢的相似度。其中,I(U)表示历史数据中用户U喜欢的图书资源集合,I(V)表示历史数据中用户V喜欢的图书资源。

2 UBCF算法在图书馆个性化资源推荐中的应用

2.1 数据的抽取

为了进一步验证UBCF算法在图书馆个性化图书资源推荐中的有效性,本实验从某高校图书馆借阅系统中抽取111 352笔图书馆各种行为的信息记录数据进行验证,部分数据截图见图1,抽取的图书资源馆藏状态见图2。从图中可以看到,图书借还比例接近1∶1,符合实验要求。对抽取出来的图书数据进行清洗,填充缺失值,提升数据质量。经过统计,实验抽取的数据总共涉及55 676本不同类型的书籍,7 698名讀者。本次实验用到的数据维度见表1。

2.2 矩阵的生成

本实验使用R语言编写,在实验过程中使用第三方资源包recommenderlab来拟合个性化图书推荐模型。为了能得到更好的、更精准的推荐模型,本文将数据整理为用户对某个分类的喜好度,然后向用户推荐出他可能喜好的分类[10]。基于此,用代码生成一个名为realRatingMatrix的喜好度矩阵,核心代码见算法1。

算法1:R语言生成名为realRatingMatrix的喜好度矩阵核心代码

stu<-levels(as.factor(sete$NAME))

userNo<-tibble(

No=seq_along(stu),

stu=stu

for (i in seq_along(sete$NAME)) {

sete$NAME[i]<-userNo$No[which(userNo$stu==sete$NAME[i])]

}

sete4<-group_by(sete,NAME,CLASSNO)%>%

summarise(n=n())

summary(sete4)

sete4$CLASSNO<-toupper(sete4$CLASSNO)

#将CLASSNO列存储为数字,便于数据填充

for (i in seq_along(sete4$CLASSNO)) {

sete4$CLASSNO[i]<-which(type$No==sete4$CLASSNO[i])

}

sete4$CLASSNO<-as.integer(sete4$CLASSNO)

stu<-levels(as.factor(title$NAME))

recom<-matrix(nrow=length(stu),ncol=length(sete2$type),

dimnames = list(seq_along(stu),type$No))

#将数据填充到矩阵中

for (i in seq_along(sete4$NAME)) {

recom[sete4$NAME[i],sete4$CLASSNO[i]]<-sete4$n[i]

}

recom<-as(recom,'realRatingMatrix')

2.3 具体应用

有了读者喜好度矩阵realRatingMatrix,接下来就可以利用该矩阵,使用UBCF算法通过遍历7 698名读者的借阅数据,并对编号为7 741的用户推荐分类模型,核心代码见算法2。

算法2:使用UBCF算法建立推荐分类模型,把结果存入book_user_1数据集中

recom.m <- Recommender(recom[1:7698], method = "UBCF")

#预测用户编号为7741:7748的喜好分类,使用topNList算法,输出前三个,因此n=3

recom.predict <- predict(recom.m,recom[7741:7741],n=3)

recc_user_1 <- recom.predict@items[[1]]

book_user_1<- recom.predict@itemLabels[recc_user_1]

通过算法2已经获得了用户可能喜好的分类,为了能进一步深入地使用这个预测出来的分类实现对用户的个性化推荐,同时避免该模型的失真情形,本实验中,选择利用UBCF算法再重新拟合一个模型,结合算法2推荐出来的分类来将推荐出来的书籍进行过滤,实现对用户的个性化推荐。本实验随机抽取记录号为7 741的数据进行验证,验证代码见算法4。按兴趣度最高的20本进行排序,核心代码见算法3。

算法3:重新拟合并推荐前20本最喜欢的书籍,把结果存入book_user_2中

book<-levels(as.factor(sete$TITLE))

bookNo<-tibble(

No=seq_along(book),

book=book

for (i in seq_along(sete$TITLE)) {

sete$TITLE[i]<-bookNo$No[which(bookNo$book==sete$TITLE[i])]

}

sete$TITLE<-as.integer(sete$TITLE)

recom.book<-matrix(data=0,nrow=length(stu),ncol=length(bookNo$book),

dimnames = list(1:7698,bookNo$book))

for (i in seq_along(sete$TITLE)) {

recom.book[sete$NAME[i],sete$TITLE[i]]<-1

}

#0-1二元矩陣:binaryRatingMatrix

recom.book<-as(recom.book,'binaryRatingMatrix')

recom.book.m<-Recommender(recom.book[1:7698],method="UBCF")

recommend.UBCF <- predict(recom.book.m,recom.book[7741:7741] , n = 20)

recc_user_2 <- recommend.IBCF@items[[1]]

book_user_2 <- recommend.IBCF@itemLabels[recc_user_2]

查看算法3的结果,如图3所示。

从图3的结果可以看到,使用UCBF算法重新拟合的推荐模型能很好地进行推荐。

3 总结

本文尝试将UBCF算法用于图书馆个性化图书资源推荐服务中,利用图书馆存在历史数据,借助UBCF算法对数据进行分析,找出读者间潜在的相似的阅读行为和阅读爱好,对其进行图书资源的个性化推荐,提高读者对目标图书信息的获取。实验结果表明,UBCF算法对提升图书馆的个性化推荐服务有很好的效果。

参考文献:

[1] 赵雨帆,郭梦洁.基于协同过滤算法的志愿者服务平台的实现[J].河南科技,2021,40(11):14-16.

[2] 郑思霞,闭应洲,潘怀奇,等.一种基于用户的协同过滤与人气排行榜的融合推荐算法[J].南宁师范大学学报(自然科学版),2020,37(1):63-68.

[3] 张盼盼,刘凯凯.基于协同过滤算法的图书推荐系统设计与实现[J].计算机时代,2023(8):144-146.

[4] 石弘利,王从瑜,谢维奇.基于协同过滤算法的教育平台课程推荐的研究[J].电脑知识与技术,2021,17(34):19-22.

[5] 张双庆.一种基于用户的协同过滤推荐算法[J].电脑知识与技术,2019,15(1):19-21.

[6] 凌坤,姜久雷,李盛庆.基于改进用户画像的协同过滤推荐算法[J].计算机仿真,2022,39(12):533-541.

[7] 廖天星,王玲.融合项目标签相似性的协同过滤推荐算法[J].计算机应用,2018,38(4):1007-1011,1022.

[8] 马建强,徐太星.协同过滤算法下公共计算机慕课资源推荐系统[J].现代电子技术,2022,45(23):177-181.

[9] 董跃华,朱纯煜.基于改进用户属性评分的协同过滤算法[J].计算机工程与设计,2020,41(2):425-431.

[10] 刘姜.基于大数据的用户画像构建方法与运用探究[J].科技创新与应用,2022,12(9):139-142.

【通联编辑:谢媛媛】

猜你喜欢
个性化推荐图书馆
图书馆
基于远程教育的个性化知识服务研究