推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

图书借阅推荐系统算法的python实现

更新时间:2019-12-24 14:38:11 大小:1M 上传用户:songhuahua查看TA发布的资源 标签:图书借阅推荐系统python 下载积分:1分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

本文对协同过滤算法中最常用的基于用户的协同过滤算法和基于物品的协同过滤算法进行了描述,然后针对图书借阅推荐系统实例进行了算法的pyhton实现代码,并对这两种算法进行了评价,对于实际工作者具有较好的参考价值。


部分文件列表

文件名 大小
图书借阅推荐系统算法的python实现.pdf 1M

部分页面预览

(完整内容请下载后查看)
-
-
84  
科学技术创新 2018.22  
图书借阅推荐系统算法的 python 实现  
谭立云 刘 琳 苏 鹏  
(华北科技学院,河北 三河 065200)  
摘
要:本文对协同过滤算法中最常用的基于用户的协同过滤算法和基于物品的协同过滤算法进行了描述,然后针对图书  
借阅推荐系统实例进行了算法的 pyꢆtꢄꢅ 实现代码,并对这两种算法进行了评价,对于实际工作者具有较好的参考价值。  
关键词:pytꢆꢄꢅ 基于用户的协同过滤算法基于物品的协同过滤算法  
中图分类号:G250.76 文献标识码:A  
文章编号:2096-4390(2018)22-0084-02  
在进行推荐系统设计时我们主要有两种推荐方式,分别是基 fꢄr u,related_users iꢅ C.itemsꢁ):  
于用户的协同过滤算法和基于物品的协同过滤算法。  
fꢄr v,cuv iꢅ related_users.itemsꢁ):  
W[u][v] = cuv/matꢆ.sqrtꢁN[u]*N[v])  
再利用下面公式来计算用户 u 对物品 i 的感兴趣程度,算法  
基于用户的协同过滤算法的基本思想是“:人以类聚”,即兴  
趣相同的用户往往有相同的喜好。当目标用户需要个性化推荐  
时,可以先找到和目标用户有相似兴趣的用户群体,然后把这个 会给用户推荐和他兴趣最相思的 K 个用户喜欢的物品。  
群体喜欢的,而目标用户没有的物品推荐给目标用户。  
基于物品的协同过滤算法是给目标用户推荐那些和他们之  
前喜欢的物品相似的物品。这里物品的相似性主要是通过用户的  
行为记录来计算物品之间的相似度。  
p(u,i) =  
å
wuv  
vÎ S(u,K )I N (i)  
其中 S(u,kꢀ是和用户 u 感兴趣最接近的 k 个用户,N(iꢀ是喜欢  
物品 i 的用户集合,Wuv 用户 u 和用户 v 的兴趣相似度,具体代码  
下面我们在开发在图书推荐系统中,分别谈谈“基于用户的 如下:  
协同过滤算法”和“基于物品的协同过滤算法”的 pthon 实现过程 def Recꢄꢃꢃeꢅd(user,traiꢅ,W,K,ꢅꢀ:  
和步骤。  
1 基于用户的协同过滤算法  
raꢅk = dict(ꢀ  
fꢄr v iꢅ W[user]:  
实现该算法的关键步骤是计算用户与用户之间的兴趣相似  
度。目前使用较多的相似度算法有:泊松相关系数、余弦相似度、  
调整余弦相似度等。  
fꢄr i iꢅ traiꢅ[v]:  
raꢅk[i] = 0  
iꢅteracted_iteꢃs = traiꢅ[user]  
fꢄr v,wuv iꢅ sꢄrted(W[user].items(ꢀ,key=itemgetter(1ꢀ,reverse=  
Trueꢀ[0:K]:  
fꢄr i iꢅ traiꢅ[v]:  
if i iꢅ iꢅteracted_items:  
给定用户 u 和用户 v,令 N(u)表示用户 u 感兴趣的物品集  
合,那么,我们可以用下面公式用户 u 和用户 v 的兴趣相似度:  
| N(u)I N(v) |  
W =  
| N(u) |×| N(v) |  
由于很多用户相互之间并没有对同样的物品产生过行为,即  
很多时候会有分子为 0。相似度当然也为 0。我们可以利用物品到  
用户的倒排表,即每个用户所对应的、对该物品感兴趣的用户列  
cꢄꢅtiꢅue  
raꢅk[i]+=wuv  
其中四个参数的意义是,user 代表特定的用户,即被推荐的  
表,仅需要对相同物品产生交互行为的用户进行计算,这样大大 用户,traiꢅ 是训练集就是从数据库中得到并简单处理过的原始  
节省了计算量。具体代码如下:  
for u,items in train.items(ꢀ:  
for i in items:  
数据,K 是和用户 user 兴趣最接近的用户个数,此处可以自己填  
写,ꢅ 是推荐算法结果中按兴趣相似度排名推荐出来的物品个  
数。  
if i not in item_users:  
item_users[i] = setꢁꢀ  
2 基于物品的协同过滤算法  
基于物品的协同过滤算法的计算过程和基于用户的协同过  
滤算法计算过程相似,先计算物品之间的相似度,再计算用户对  
ꢂteꢃ_users[i].addꢁuꢀ  
得到诸如‘{ 书号’:‘[ 学号 1’,‘学号 2’……]}这样的形式,就 物品的兴趣度。  
是得到了每个书号对应的借过这本书的所有学号。  
和基于用户的推荐算法类似,基于物品的推荐算法计算物品  
比如喜欢物品 C 的用户包括用户 a 和用户 c,那么 W[a][c]和 相似度时也要首先建立用户-物品倒排表(即对于每个用户建立  
W[c][a]都加 1,以此类推,这样就可以计算出了用户相似度,具体 一个包含他喜欢的物品的列表),其实我们的原始数据就是用户  
代码如下:  
fꢄr i,users in item_users.itemsꢁ):  
fꢄr u in users:  
N[u]+=1  
物品表,例如,‘{ 学号 1’:‘[ 书号 1’‘, 书号 2’, ……]},这样的形式。  
根据用户-物品倒排表,对于每个用户,将他物品列表中的物  
品两两在兴趣矩阵 C 中加 1。矩阵 C[i][j]中存储的数值,也就是每  
一对 ij 的值,都是对物品 i 和物品 j 这两个物品共同产生兴趣的  
用户数,在本系统就相当于同时借阅图书 i 和图书 j 的用户数。其  
计算过程如下:  
fꢄr v iꢅ users:  
if u==v:  
cꢄꢅtiꢅue  
fꢄr u,iteꢃs iꢅ traiꢅ.iteꢃs(ꢀ:  
C[u][v]+=1  
fꢄr i iꢅ iteꢃs:  
(转下页)  
-
-
85  
2018.22 科学技术创新  
PIMS 信息系统在生产应用中的分析研究  
张冬冬 王冰亚 张春研  
(河南神马氯碱股份有限责任公司,河南 平顶山 467ꢃꢃꢃ)  
摘
要:本文详细介绍了 PIMS 系统在河南神马氯碱化工股份有限公司中对多系统的集中控制,分散管理和统一实时监管方  
面的应用,对 PIMS 系统的使用具有一定的借鉴意义。  
关键词:网络拓扑;数据采集;安全设计  
中图分类号:TP27 文献标识码:A  
文章编号:2ꢃ96-439ꢃ(2ꢃꢀ8)22-ꢃꢃ85-ꢃ2  
神马氯碱化工股份有限公司是一家主要生产烧碱的化工企 我公司引入浙大中控的 PIMS 生产信息管理系统来将公司内部  
业。其中在电解精致盐水的过程中产生的大量的氯气是制约公 不同控制系统上统一采集生产信息,存储、查看、处理和管理。  
司安全生产以及发展的主要危险物,也就是在生产中使氯气能  
够安全有效的消耗掉,基于此我公司引入了氯化石蜡,氯乙酸  
等氯产品下游企业来解决这一难题。并在这些下游企业的氯气  
1 数据采集  
ꢀ.ꢀ DCS 系统数据采集方式  
DCS 控制系统具有标准的 OPC 数据通讯协议,其数据采集  
管道以及自来水,蒸汽等公用工程的输送管道和各储罐上安装 方式是使用一台计算机作为数据采集网关,通过数据采集网关  
测量流量,压力,温度,调节阀等仪表进行控制检测,为了更好 实现实时数据库服务器和控制系统的连接,具体连接方式如下  
有效的集中控制,分散管理氯化石蜡,氯乙酸等企业也引入了 图 ꢀ:  
浙大中控 DCS 系统以及浙江威盛控制系统。同  
时在公司内部一些生产装置也有各自的控制  
系统比如高纯水装置的 S7-3ꢃꢃ,35KV 变电站  
以及 ꢀꢀꢃKV 变电站的 S7-2ꢃꢃ 系统。虽然在各  
自的单位可以有效的进行计量,记录,管理但  
是在整个公司层面上来看依旧是无法进行统  
一实时监管,由于缺乏实时数据,导致公司在  
(转下页)  
安全生产方面存在着隐患。为改善这种现状,  
图 1  
N[i]+=1  
和目标用户有共同兴趣爱好的其他用户所喜欢的物品,而基于物  
品的算法推荐的是那些和目标用户和之前喜欢的物品类似的其  
他物品。基于用户算法随着用户数量的增加,计算用户相似度将  
越来越困难,其运算的时间复杂度和空间复杂度的增长与用户数  
量的增长近似于平方关系。在实际应用中,没有任何一种推荐算  
for j in items:  
if i==j:  
continue  
C[i][j] +=ꢀ  
有了之前的几步,我们得到了物品的相似度了,其代码如下: 法能够做到适用于各种场景且取得良好效果,不同推荐算法各有  
for i,related_items in C.items():  
for jꢁcij in related_itemsꢂitems():  
W[i][j] = cij/mathꢂsqrt(N[i]*N[j])  
千秋,各有应用场合,各有局限,在实践中常常采用不同推荐算法  
结合的模式。我们在开发我校图书借阅推荐系统时,利用当今最  
流行的 python 具体实现了“基于用户的协同过滤算法”和“基于  
这里的 W 矩阵就是用户对任意两个图书 i 和图书 j 的兴趣 物品的协同过滤算法”,这些代码详细可读性强,对于实际工作者  
相似度。  
具有较好的参考价值。  
我们得到物品相似度矩阵后,这个矩阵记录着所有图书之间  
的被借阅的相互关系。当我们借阅了一本书,从物品相似度矩阵 [ꢀ]项亮,陈义,王益ꢂ推荐系统实践[M]ꢂ北京:人民邮电出版社,  
中可以得到和这本书相似度最接近的几本书,从而进行推荐。过 20ꢀ2,6ꢂ  
参考文献  
程如下:  
[2]纪路ꢂPython 数据科学实践指南[M]ꢂ北京:机械工业出版社,  
2017,4ꢂ  
def Recommendation(bookꢁn):  
itemCF_W = ItemSimilarity(dict_data)  
[3]董付国ꢂpython 可以这样学[M]ꢂ北京:清华大学出版社,2017,2ꢂ  
[4]吴颜,沈洁,顾天竺,陈晓红ꢂ协同过滤推荐系统中数据稀疏问  
题的解决[J]ꢂ计算机应用研究,2007(6)ꢂ  
book_dic={}  
book_dic=itemCF_Wꢂget(book)  
re=sorted(book_dicꢂitems()ꢁkey=itemgetter(1)ꢁreverse=True)[0:n]  
本文得到了华北科技学院高教研究所课题(项目名称:基于  
KNN 的图书借阅智能推荐研究,编号:HKJYZD2ꢃꢀ632;项目名  
称:核心课程“数学分析”教学改革与实践,编号:HKJYZD2ꢃꢀ628)  
return re  
3 结论  
综上所述基于用户和基于物品的推荐算法思想是相似的,计 资助,再次深表感谢。  
算过程也相似,最大的区别在于:基于用户的算法推荐的是那些  

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载