干货基于用户的协同过滤推荐算法原理和实现余弦

在推荐系统众多方法中,基于用户的协同过滤推荐算法是最早诞生的,原理也较为简单。该算法1992年提出并用于邮件过滤系统,两年后1994年被GroupLens用于新闻过滤。一直到2000年,该算法都是推荐系统领域最著名的算法。

基本思想

俗话说“物以类聚、人以群分”,拿看电影这个例子来说,如果你喜欢《蝙蝠侠》、《碟中谍》、《星际穿越》、《源代码》等电影,另外有个人也都喜欢这些电影,而且他还喜欢《钢铁侠》,则很有可能你也喜欢《钢铁侠》这部电影。

所以说,当一个用户A需要个性化推荐时,可以先找到和他兴趣相似的用户群体G,然后把G喜欢的、并且A没有听说过的物品推荐给A,这就是基于用户的系统过滤算法。

原理

根据上述基本原理,我们可以将基于用户的协同过滤推荐算法拆分为两个步骤:

1.找到与目标用户兴趣相似的用户集合2.找到这个集合中用户喜欢的、并且目标用户没有听说过的物品推荐给目标用户1.发现兴趣相似的用户

通常用Jaccard公式或者余弦相似度计算两个用户之间的相似度。设N(u)为用户u喜欢的物品集合,N(v)为用户v喜欢的物品集合,那么u和v的相似度是多少呢:

Jaccard公式:

余弦相似度:

假设目前共有4个用户:A、B、C、D;共有5个物品:a、b、c、d、e。用户与物品的关系(用户喜欢物品)如下图所示:

如何一下子计算所有用户之间的相似度呢?为计算方便,通常首先需要建立“物品—用户”的倒排表,如下图所示:

然后对于每个物品,喜欢他的用户,两两之间相同物品加1。例如喜欢物品a的用户有A和B,那么在矩阵中他们两两加1。如下图所示:

计算用户两两之间的相似度,上面的矩阵仅仅代表的是公式的分子部分。以余弦相似度为例,对上图进行进一步计算:

到此,计算用户相似度就大功告成,可以很直观的找到与目标用户兴趣较相似的用户。

2.推荐物品

首先需要从矩阵中找出与目标用户u最相似的K个用户,用集合S(u,K)表示,将S中用户喜欢的物品全部提取出来,并去除u已经喜欢的物品。对于每个候选物品i,用户u对它感兴趣的程度用如下公式计算:

其中rvi表示用户v对i的喜欢程度,在本例中都是为1,在一些需要用户给予评分的推荐系统中,则要代入用户评分。

举个例子,假设我们要给A推荐物品,选取K=3个相似用户,相似用户则是:B、C、D,那么他们喜欢过并且A没有喜欢过的物品有:c、e,那么分别计算p(A,c)和p(A,e):

看样子用户A对c和e的喜欢程度可能是一样的,在真实的推荐系统中,只要按得分排序,取前几个物品就可以了。

园友推荐

1.计算10名与我兴趣最相似的园友

2.计算对推荐园友的兴趣度

这10名相似用户一共推荐了25名园友,计算得到兴趣度并排序:

排序昵称兴趣度1wolfy0.3730019232961262Artech0.3405026123034993CatChen0.3405026123034994WXWinter(冬)0.3405026123034995DanielWise0.3405026123034996一路前行0.315244162495647LiamWang0.315244162495648usharei0.315244162495649CoderZh0.3152441624956410博客园团队0.3152441624956411深蓝色右手0.3152441624956412Kinglee0.3152441624956413Gnie0.3152441624956414riccc0.3152441624956415Braincol0.3152441624956416滴答的雨0.3152441624956417DennisGao0.3152441624956418刘冬.NET0.3152441624956419李永京0.3152441624956420浪端之渡鸟0.3152441624956421李涛0.3152441624956422阿不0.3152441624956423JK_Rush0.3152441624956424xiaotie0.3152441624956425Leepy0.312771621085612

只需要按需要取相似度排名前10名就可以了,不过看起来整个列表的推荐质量都还不错!

THE END
1.基于协同过滤算法图书推荐系统的设计与实现.pdf论文题目:基于协同过滤算法的图书推荐系统的 设计与实现 摘要 随着网络和信息技术的飞速发展,电子图书资源的数量也在以惊人的速度增 长,越来越多的用户通过图书购买网站购买图书或在图书阅读网站上阅读电子书, 不管是网上购书还是网上读书都会面临一个相同的问题,如何从海量的图书资源 ...https://max.book118.com/html/2024/0217/7053136045006042.shtm
2.推荐系统协同过滤算法对物品 的评分, 表示用户 对所有物品的平均评分, 代表所有物品的集合。 最终用户 对物品 的评分计算公式如下,在获得用户 对不同物品的评价得分后,根据得分进行排序就得到推荐列表。其中, 表示用户 与用户 的相似度, 表示用户 对物品 的评分。 基于用户的协同过滤算法缺点:( ...https://www.jianshu.com/p/0023df43622a
1.基于物品的协同过滤有以下优缺点:一是计算每两个物品之间的相似度...非常好,你已经很清楚地总结了基于物品的协同过滤推荐算法的优缺点。 对于第一点缺点,确实计算每两个物品之间的相似度是比较耗费计算资源的,但是随着计算机硬件的不断提升,这个问题也逐渐得到缓解。此外,还有一些优化方法,如采用索引结构、分布式计算等技术,可以进一步提高计算效率。 对于第二点优点,的确通过物品相似度的...https://wenku.csdn.net/answer/7353edb6f9c9470faf978d2646be24fb
2.协同过滤算法的优缺点学术指导常用经验分享协同过滤是一种常用的推荐算法,通过分析用户的行为和兴趣,发现相似的用户群体,并基于这些群体推荐相应的物品或服务。协同过滤算法可以分为基于用户的协同过滤、基于物品的协同过滤和基于模型的协同过滤等几种类型。以下是对协同过滤算法的优缺点分析:优点:1. 用户为中心:协同过滤算法以用户行为和兴趣为基础,通过分析用户...http://m.editoressay.com/news/849021/
3.推荐算法理论(一):协同过滤腾讯云开发者社区至此, 基于用户的协同过滤算法原理介绍完毕。基于用户协同过滤算法的代码,由于篇幅原因,这里就不放了,感兴趣的可以参考我们的fun-rec项目[基于用户的协同过滤代码](fun-rec/UserCF.py at master · datawhalechina/fun-rec ·GitHub) 1.4优缺点 User-based算法存在两个重大问题: ...https://cloud.tencent.com/developer/article/1981069
4.基于协同过滤算法的安规考核系统试题推荐方法研究本文主要完成了以下内容:1.研究了基于用户的协同过滤算法和基于物品的协同过滤算法,比较两者在不同推荐系统中的应用情况,比较其优缺点。结合安规考核系统的实际情况采用基于物品的协同过滤算法实现本课题的研究,根据需求在数据库中设计用于保存用户-物品评分矩阵和物品-物品相似度矩阵的数据表。2.学习中文分词技术,收集...https://wap.cnki.net/touch/web/Dissertation/Article/10079-1019233359.nh.html
5.系列学习——推荐算法综述同基于用户的推荐相比,基于物品的推荐应用更为广泛,扩展性和算法性能更好。由于项目的增长速度一般较为平缓,因此性能变化不大。缺点就是无法提供个性化的推荐结果。 · 协同过滤算法总结 两种协同过滤:基于用户和基于物品两个策略中应该如何选择呢?其实基于物品的协同过滤推荐机制是Amazon 在基于用户的机制上改良的一种...https://maimai.cn/article/detail?fid=242703356&efid=xCTosL0-evQLVNwAlACgEw
6.八股2024春招八股复习笔记1(搜索推荐AIGC)**协同过滤算法主要有两种类型:基于用户的协同过滤和基于物品的协同过滤。 基于用户的协同过滤算法通过比较用户之间的行为模式和兴趣来进行预测。例如,如果用户A和用户B在过去都喜欢相似的物品,那么当用户A喜欢一个新物品时,系统可以推荐给用户B。 基于物品的协同过滤算法则通过比较物品之间的相似性来进行预测。例如,...https://www.skycaiji.com/aigc/ai13693.html
7.基于JAVA+SpringBoot+Vue+uniapp+协同过滤算法+爬虫+AI的减肥小程序协同过滤算法:协同过滤算法是一种基于用户历史行为数据的推荐算法,它通过对用户历史行为数据的挖掘发现用户的偏好,基于不同的偏好对用户进行群组划分并推荐品味相似的商品。协同过滤推荐算法分为两类,分别是基于用户的协同过滤算法和基于物品的协同过滤算法。 https://community.sslcode.com.cn/669734ea962e585a256334a3.html
8.基于门控循环单元与主动学习的协同过滤推荐算法( latent factor mod~ el? LFM) 算法有更高的短时预测率,召回率,项目覆盖率以及用户覆盖数?能够有效预测用户短时兴趣?提升精度?发掘长尾 物品?且与原始 GRU 模型相比能够以更少的迭代次数达到相同效果? 关键词:协同过滤?门控循环单元?主动学习?深度学习? 时序化数据 中图分类号:TP311...http://gxbwk.njournal.sdu.edu.cn/CN/article/downloadArticleFile.do?attachType=PDF&id=1890
9.协同过滤是不是深度学习协同过滤算法的缺点协同过滤是不是深度学习 协同过滤算法的缺点 1 前言 众所周知,协同过滤算法是完全没有利用到物品本身或者是用户自身的属性, 仅仅利用了用户与物品的交互信息就可以实现推荐,是一个可解释性很强, 非常直观的模型, 但是也存在一些问题。但是协同过滤当中依旧存在着很多问题。https://blog.51cto.com/u_16099243/10409184
10....该仓库尝试整理推荐系统领域的一些经典算法模型基于物品的协同过滤算法(ItemCF): 给用户推荐和他之前喜欢的物品相似的物品 筋斗云:AI上推荐之协同过滤 协同过滤的特点就是完全没有利用到物品本身或者是用户自身的属性, 仅仅利用了用户与物品的交互信息就可以实现推荐,是一个可解释性很强, 非常直观的模型, 但是也存在一些问题, 第一个就是处理稀疏矩阵的能力比较...https://github.com/zhongqiangwu960812/AI-RecommenderSystem
11.推荐系统推荐系统简介分类以及长尾问题推荐算法:基于物品的协同过滤算法 参考《推荐系统实践》项亮 概念:基于物品的协同过滤算法,优化算法 对比:用户协同过滤的优缺点 python编码实现 1,算法定义基于用户的协同过滤算法基于商品的协同过滤算法 适用场景 时效性较强,用户个性化兴趣不太明显的领域长尾物品丰富,用户个性化需求强烈的领域用户较少的场合:新闻推荐物...https://www.pianshen.com/article/85642112599/
12.LearningDevelopUnion/fun算法评估 由于UserCF和ItemCF结果评估部分是共性知识点, 所以在这里统一标识。 召回率 对用户 $u$ 推荐 $N$ 个物品记为 $R(u)$, 令用户 $u$ 在测试集上喜欢的物品集合为$T(u)$, 那么召回率定义为: $$ \operatorname{Recall}=\frac{\sum_{u}|R(u) \cap T(u)|}{\sum_{u}|T(u)|}...https://openi.pcl.ac.cn/Learning-Develop-Union/fun-rec/src/branch/master/docs/ch02/ch2.1/ch2.1.1/usercf.md
13.大数据课程学习总结6篇(全文)6.基于协同过滤的推荐机制 基于协同过滤的推荐(这种机制是现今应用最为广泛的推荐机制)——基于模型的推荐(SVM、聚类、潜在语义分析、贝叶斯网络、线性回归、逻辑回归)余弦距离(又称余弦相似度):表示是否有相同的倾向 欧几里得距离(又称欧几里得相似度):表示绝对的距离 这种推荐方法的优缺点: ...https://www.99xueshu.com/w/file4b7yhm88.html