0702基于协同过滤的推荐算法B站水论文的程序猿

fromnumpyimportrandomdefsplit_data(data,M,k,seed):"""切割训练集,防止过拟合data:训练集M:切割训练集的份数k:测试集的索引seed:随机数种子"""test=[]train=[]random.seed(seed)foruser,itemindata:ifrandom.randint(0,M)==k:test.append([user,item])else:train.append([user,item])returntrain,test二、评测指标2.1准确率/召回率对用户\(u\)推荐\(N\)个物品,记作\(R(u)\),用户\(u\)在测试集上喜欢的物品集合为\(T(u)\),可以使用准确率/召回率评测推荐算法的精度。

准确率公式为:

其中\(R(u)\)是用户在训练集上的行为给用户作出的推荐列表。

召回率公式为:

其中\(T(u)\)是用户在测试集上的行为给用户作出的推荐列表。

准确率描述最终的推荐列表中有多少比例是发生过的用户-物品评分记录;召回率描述有多少比例的用户-物品评分记录包含在最终的推荐列表中。

defrecall_(train,test,N):"""计算召回率"""hit=0all_=0foruserintrain.keys():tu=test[user]rank=get_recommendation(user,N)foritem,puiinrank:ifitemintu:hit+=1all_+=len(tu)returnhit/(all_*1.)defprecision(train,test,N):"""计算准确率"""hit=0all_=0foruserintrain.keys():tu=test[user]rank=get_recommendation(user,N)foritem,puiinrank:ifitemintu:hit+=1all_+=Nreturnhit/(all_*1.)2.2覆盖率覆盖率反映了推荐算法发掘长尾的能力,覆盖率越高,说明推荐算法越能够将长尾中的物品推荐给用户。

defpopularity(train,test,N):"""计算新颖度"""item_popularity=dict()foruser,itemsintrain.items():foriteminitems.keys():ifitemnotinitem_popularity:item_popularity[item]=0item_popularity[item]+=1ret=0n=0foruserintrain.keys():rank=get_recommendation(user,N)foritem,puiinrank:#物品的流行度分布满足长尾分布,对流行度取对数后,流行度的平均值更稳定ret+=math.log(1+item_popularity[item])n+=1ret/=n*1.returnret三、基于领域的算法基于领域的算法分为两大类,一类是基于用户的协同过滤算法,另一类是基于物品的协同过滤算法。

在一个基于用户的协同过滤算法的在线个性化推荐系统中,当一个用户A需要个性化推荐时,一般需要以下两个步骤:

对于步骤1,我们需要计算两个用户的兴趣相似程度,协同过滤算法主要利用用户的行为的相似度计算用户间兴趣的相似度,可以使用以下两种方法计算用户间的兴趣相似度(其中\(u\)和\(v\)表示不同的用户,\(N(u)\)表示用户\(u\)曾经拥有正反馈的物品集合;\(N(v)\)表示用户\(v\)曾经拥有正反馈的物品集合。):

假设上图为某个网站用户行为记录,UserCF(基于用户的协同过滤算法)时使用余弦相似度计算用户A和用户B的兴趣相似度为:

同理我们可以计算出用户A和用户C、D的相似度为:

defuser_similarity(train):"""计算用户间的余弦相似度"""W=dict()foruintrain.keys():forvintrain.keys():ifu==v:continueW[u][v]=len(train[u]&train[v])W[u][v]/=math.sqrt(len(train[u])*len(train[v])*1.)returnW对于上面的余弦相似度计算,有着很大的计算开销。因为很多用户之间并没有对同样的物品产生过行为,即有时候\(|N(u)\bigcap{N(v)}|=0\).因此我们可以考虑首先计算\(|N(u)\bigcap{N(v)}|\neq0\)的用户对\((u,v)\),然后再对这些用户进行余弦相似度计算,即下面改进的余弦相似度计算。

改进的余弦相似度计算,需要以下三个步骤:

defuser_similarity(train):"""计算用户之间的相似度"""#构建物品-用户的倒排表item_users=dict()foru,itemsintrain.items():foriinitems.keys():ifinotinitem_users:item_users[i]=set()item_users[i].add(u)#计算用户之间的共同有过行为的物品C=dict()N=dict()fori,usersinitem_users.items():foruinusers:N[u]+=1forvinusers:ifu==v:continueC[u][v]=+=1#计算最后的余弦相似度矩阵WW=dict()foru,related_usersinC.items():forv,cuvinrelated_users.items():W[u][v]=cuv/math.sqrt(N[u]*N[v])returnWFile"",line19C[u][v]=+=1^SyntaxError:invalidsyntax通过上述得到用户之间的兴趣相似度之后,UserCF算法会给用户推荐和他兴趣最相似的K个用户喜欢的物品。并且可以通过下述公式计算用户\(u\)对物品\(i\)的感兴趣程度:

其中\(S(u,K)\)包含和用户\(u\)兴趣最接近的\(K\)个用户,\(N(i)\)是对物品\(i\)有过行为的用户集合,\(w_{uv}\)是用户\(u\)和用户\(v\)的兴趣相似度,\(r_{vi}\)代表用户\(v\)对物品\(i\)的兴趣,因为使用的是单一行为的隐反馈数据,因此所有的\(r_{vi}=1\)。

defrecommend(user,train,W):"""实现UserCF算法"""rank=dict()interacted_items=train[user]forv,wuvinsorted(W[u].items,key=itemgetter(1),reverse=True)[0:K]:fori,rviintrain[v].items():ifiininteracted_items:#在继续之前我们应该筛选用户间的行为rank[i]+=wuv*rvireturnrank3.1.2User-IIF推荐算法如果两个用户都买过《新华字典》,并不能证明两个人兴趣相似,因为中国绝大多数人都买过《新华字典》,但是两个用户都买过冷门商品,如《机器学习》,则可以认为两个用户的兴趣相似。因此我们可以通过如下公式计算用户间的兴趣相似度:

基于上述用户间兴趣相似度则可以改造UserCF算法为User-IIF算法。

defuser_similarity(train):"""计算用户之间的相似度"""#构建物品-用户的倒排表item_users=dict()foru,itemsintrain.items():foriinitems.keys():ifinotinitem_users:item_users[i]=set()item_users[i].add(u)#计算用户之间的共同有过行为的物品C=dict()N=dict()fori,usersinitem_users.items():foruinusers:N[u]+=1forvinusers:ifu==v:continueC[u][v]=+=1/math.log(1+len(users))#计算最后的余弦相似度矩阵WW=dict()foru,related_usersinC.items():forv,cuvinrelated_users.items():W[u][v]=cuv/math.sqrt(N[u]*N[v])returnW3.2基于物品的协同过滤算法基于物品的协同过滤算法的推荐系统主要分为两步:

由于基于物品的协同过滤算法的思想是——购买了该商品的用户也会经常购买其他的商品。根据这句话,可以用下面的公式定义物品的相似度:

其中\(N(i)\)是喜欢物品\(i\)的用户数,\(|N(i)\bigcap{N(j)|}\)是同时喜欢物品\(i\)和物品\(j\)的用户数。

ItemCF算法的思想是,假设每个用户的兴趣都局限在某几个方面。如果两个物品属于一个用户的兴趣列表,那么这两个物品可能就属于有限的几个领域;如果两个物品属于很多用户的兴趣列表,则它们可能就属于同一个领域,因而有很大的相似度。

ItemCF算法类似于UserCF算法,也需要建立用户-物品倒排表,建立该表流程如下:

THE END
1.基于协同过滤算法的推荐系统推荐系统有着广泛的应用,电影推荐,商品推荐等都用到推荐系统。本文介绍协同过滤算法的基本原理,进而理解推荐系统的实现原理。 推荐系统的描述 我们以电影推荐系统来看一下怎么样以机器学习的角度来描述推荐系统。我们记 $n_u$ 为用户的数量,$n_m$ 为电影的数量,$r(i,j) = 1$ 表示用户 j 对电影 i 进行过...https://www.jianshu.com/p/9b06ef8c79fa
2.基于协同过滤算法图书推荐系统的设计与实现.pdf基于协同过滤算法图书推荐系统的设计与实现.pdf 原文免费试下载 想预览更多内容,点击免费在线预览全文 免费在线预览全文 本科毕业设计 论文题目:基于协同过滤算法的图书推荐系统的 设计与实现 摘要 随着网络和信息技术的飞速发展,电子图书资源的数量也在以惊人的速度增 ...https://max.book118.com/html/2024/0217/7053136045006042.shtm
3.协同过滤(基于用户)的推荐系统.zip本项目是一套基于协同过滤推荐算法的电影推荐系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战的python学习者。也可作为课程设计、期末大作业 包含:项目源码、数据库脚本、软件目实战练习的工具、项目说明等,该项目也可以直接作为毕设使用。 基于协同过滤的电影推荐系统下载即可使用,无需修改,确保可以直接运行...https://www.iteye.com/resource/qq_44593353-12488115
4.协同过滤算法深入解析:构建智能推荐系统的核心技术协同过滤算法是推荐系统中的一种核心技术,通过挖掘用户之间的相似性或物品之间的相似性,为用户推荐与其兴趣相关的物品。本文详细介绍了基于用户的协同过滤、基于物品的协同过滤以及矩阵分解方法等常见的协同过滤技术。 然而,协同过滤算法也存在一些局限性。例如,冷启动问题(Cold Start Problem),当新用户或新物品加入系统时...https://developer.aliyun.com/article/1267365
5.协同过滤推荐研究综述AET目前,应用于推荐系统的算法主要分三类:基于内容的过滤推荐算法、协同过滤推荐算法及混合推荐算法。 基于内容的过滤推荐算法[2]是对用户的兴趣进行分析,构成用户配置文件,并将其和文件集中的文件用共同的特征变量表示。最后比较两者的相似度来为用户进行推荐。随后,通过用户的反馈信息,不断更新用户配置文件,以此来动态地...http://www.chinaaet.com/article/212308
6.新传说之常见算法市面比较常用的推荐系统算法包括:一是基于内容的...新传说之常见算法 市面比较常用的推荐系统算法包括: 一是基于内容的推荐。这种推荐方法主要依赖于信息内容,推荐类似用户曾经感兴趣的信息内容; 二是协同过滤。这种推荐方法主要依赖于用户的行为,比如用户的点击、评论等,根据用户如果在某一方面有相似行为,那么他们在其他方面的行为也可能相似的假设,来进行推荐; 三是混合...https://wmjx.m.jxwmw.cn/topics/news/591192
7.相似度计算方法:余弦相似度基于用户的协同过滤算法是推荐系统中最古老的算法,这个算法是1992年提出的,是用在了邮件过滤系统中,后面被用到了新闻过滤系统中。简单的来说,推荐系统中,基于用户的协同过滤就是,先找到与目标用户兴趣相似的用户,然后把这些用户喜欢的推荐给目标用户,先找到与目标用户兴趣相似的用户就是计算用户之间的相似度,今天主要...https://www.imooc.com/article/254371
1.基于协同过滤的推荐系统腾讯云开发者社区基于协同过滤的推荐系统 推荐算法是对我们现实生活影响最大的计算机算法,它影响了我们看到的新闻、广告、以及我们身边现实环境的东西,这些最终决定了我们的态度和生活方式,尤瓦尔.赫拉利在《未来简史》中声明“算法会比我们更了解自己”。 本文介绍了一种较基础的推荐算法,协同过滤Collaborative Filtering。基于用户购买的...https://cloud.tencent.com/developer/article/1366089
2.基于协同过滤算法的图书推荐系统(源码+定制+开发)图书推荐平台优化...在这样的背景下,基于协同过滤算法的图书推荐系统应运而生,旨在为用户提供个性化的书籍推荐,从而提升阅读体验和效率。 该系统采用Spring Boot, Vue, MySQL, 爬虫技术和大数据处理技术,不仅优化了书籍的搜索和分类,还通过协同过滤算法推荐算法精准匹配用户偏好,实现个性化推荐。系统包括用户注册登录、个人信息管理、书籍收藏...https://blog.csdn.net/m0_64148096/article/details/143218511
3.基于协同过滤算法的论文推荐系统研究与设计基于上述问题,本文设计了一个论文推送系统。改进了传统基于用户的协同过滤算法,在计算用户与用户之间的相似度时加权融合了用户点击和搜索词的相似度,并且计算点击得分的时候会对点击文章的时间做衰减处理,进而更加精准地召回近邻用户。通过实验,本文选取多样性和准确率这两个指标来对本文所提出的论文推荐算法进行评价。https://cdmd.cnki.com.cn/Article/CDMD-10488-1018203115.htm
4.java代码实现协同过滤算法商品推荐基于协同过滤算法在推荐系统的众多方法之中,基于用户的协同过滤是诞最早的,原理也比较简单。基于协同过滤的推荐算法被广泛的运用在推荐系统中,比如影视推荐、猜你喜欢等、邮件过滤等。该算法1992年提出并用于邮件过滤系统,两年后1994年被 GroupLens 用于新闻过滤。一直到2000年,该算法都是推荐系统领域最著名的算法。 https://blog.51cto.com/u_16213604/10293525
5.武汉大学学报(理学版)推荐系统一直以来都是很活跃的研究方向。回顾了近5年来推荐系统涉及的数据集、算法、效果评估的研究发展状况,给出了推荐系统在互联网应用场景中的系统架构,从工业知识与经验以及工业生产工艺与工艺参数这两方面对推荐系统工业生产中的最新应用做了介绍。分析了推荐系统中http://xblx.whu.edu.cn/zh/article/20898290/
6.相似度算法(精选十篇)1.1基于语义资源的词语相似度算法 近年来, 一些诸如同义词词林、WordNet、知网这种大规模可量化的语言本体的诞生与发展, 为进行真实文本的语义分析和理解提供了强有力的资源支持。特别是最近几年“知网”等语义资源不断丰富发展, 中文语义研究方向逐渐增多。知网作为一个知识系统, 是一个网而不是树, 它主要反映概念...https://www.360wenmi.com/f/cnkeyytvb26n.html
7.推荐系统推荐系统简介分类以及长尾问题推荐系统简述 当下我们已经处于信息爆炸的时代,要从庞大的各类数据库中提取有用的信息,并能为目标用户提供他们需要的信息变得越来越困难。推荐系统正是为了解决这个问题所提出的。 推荐系统目前在很多领域都发挥着重要的角色,比如电子商务... 查看原文 推荐算法:基于物品的协同过滤算法 ...https://www.pianshen.com/article/85642112599/