协同过滤算法(例题理解)

这篇具有很好参考价值的文章主要介绍了协同过滤算法(例题理解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        协同过滤算法是一种推荐系统算法,它利用用户对物品的评价数据来预测用户对未评价物品的喜好程度。该算法基于一个简单的思想:如果两个用户在过去对某些物品的评价很相似,那么在未来他们对这些物品的评价也很可能相似。因此,协同过滤算法将用户之间的相似度作为预测用户对物品的评价的依据,从而实现对用户兴趣的预测。该算法分为基于用户的协同过滤和基于物品的协同过滤两种类型。

一、基于用户的协同过滤

        基于用户的协同过滤算法是一种推荐系统算法,其基本思想是根据用户历史行为数据,找到和当前用户兴趣相似的其他用户,然后利用这些用户的行为数据来预测当前用户的兴趣,从而向其推荐物品。

具体来说,基于用户的协同过滤算法包括以下步骤:

  1. 确定目标用户,即需要为其推荐物品的用户。

  2. 找到和目标用户相似的其他用户,可以通过计算用户之间的相似度来实现。常用的相似度计算方法包括余弦相似度、皮尔逊相关系数等。

  3. 选取一定数量的相似用户作为邻居集合,可以根据相似度进行排名,选取前k个相似用户作为邻居。

  4. 预测目标用户对未评价过的物品的评分,可以通过加权平均或加权和等方法来计算。具体来说,可以将目标用户对邻居用户已评价过的物品的评分作为权重,进行加权平均或加权和运算。

  5. 为目标用户推荐未评价过的物品,可以根据预测的评分进行排序,选取前n个物品作为推荐结果。

协同过滤算法(例题理解)

        基于用户的协同过滤算法的优点是能够利用用户的历史行为数据进行推荐,具有较好的个性化效果。但是也存在一些缺点,比如对于新用户,无法准确预测其兴趣,需要等待其产生足够的历史行为数据;同时也存在冷启动问题,即对于新加入的物品,无法在初始阶段进行有效的推荐。

二、基于物品的协同过滤算法

        基于物品的协同过滤算法是一种推荐算法,它利用用户对物品的评分数据来发现物品之间的相似度,从而给用户推荐与其历史兴趣相似的物品。该算法的核心思想是基于物品的相似度,预测用户对物品的评分。

具体而言,基于物品的协同过滤算法的过程如下:

1、计算每对物品之间的相似度。常用的计算方法包括余弦相似度和皮尔逊相关系数等。

2、找到用户历史评分过的物品,对于给定的目标用户,需要找到其历史评分过的物品集合。

3、计算每个物品的加权评分

4、给用户推荐物品

        基于物品的协同过滤算法相比于基于用户的协同过滤算法,其优点在于可以在物品数量较多的情况下快速计算出相似度矩阵,且推荐结果更为稳定和准确。

三、关键公式

皮尔逊相关系数:

协同过滤算法(例题理解)

余弦相似度:

协同过滤算法(例题理解)

        皮尔逊相关系数和余弦相似度是用于衡量向量之间相似性的两种常用方法。它们在计算方式和应用场景上存在一些区别。

1、计算方式:

        皮尔逊相关系数是通过计算两个向量的协方差除以它们的标准差的乘积来度量它们之间的相似性。其取值范围为[-1,1],其中1表示完全正相关,-1表示完全负相关,0表示不相关。

        余弦相似度是通过计算两个向量的夹角余弦值来度量它们之间的相似性。其取值范围为[-1,1],其中1表示完全相似,-1表示完全相反,0表示无相似性。

2、应用场景:

        皮尔逊相关系数常用于处理具有数值属性的数据,如评分数据,以及在时间序列分析中。它可以度量两个变量之间的线性相关性,适用于连续变量

        余弦相似度常用于处理文本数据和其他稀疏数据,如推荐系统中的物品推荐。它可以度量两个向量之间的角度和方向,适用于处理大规模稀疏数据。

计算预测分值:

协同过滤算法(例题理解)

分子是对n个不同用户对同一商品的分析,而分母则是把每个用户单独的拿出来,分析不同商品

同现相似度:

        其中,分母是喜欢物品i的用户数,而分子则是同时喜欢物品i和物品j的用户数。因此,下述公式可用理解为喜欢物品i的用户有多少比例的用户也喜欢j  (和关联规则类似)

协同过滤算法(例题理解)

分母|N(i)|是喜欢物品 i 的用户数,而分子|N(i)∩N(j)|是同时喜欢物品 i 和j 的用户,但是如果物品 j 很热门,就会导致 Wij 很大接近于 1。因此避免推荐出热门的物品,我们使用下面的公式:

协同过滤算法(例题理解)

用户 u 对于物品 j 的兴趣:

协同过滤算法(例题理解)

四、实例

4-1  基于用户的协同过滤----余弦相似度

协同过滤算法(例题理解)协同过滤算法(例题理解)

用户间相似度计算:

        用户A与用户B的相似度=(5*0+1*0+0*4.5+0*3)/(SQRT(5^2+1^2+0^2+0^2)*SQRT(0^2+0^2+4.5^2+3^2)) =0

        用户A与用户C的相似度=(5*1+1*4+0*0+0*4)/(SQRT(5^2+1^2+0^2+0^2)*SQRT(1^2+4^2+0^2+4^2)) =0.307254934

        用户B与用户C的相似度=(0*1+0*4+4.5*0+3*4)/(SQRT(0^2+0^2+4.5^2+3^2)*SQRT(1^2+4^2+0^2+4^2)) =0.38624364

计算喜爱度:

协同过滤算法(例题理解)

用户A对商品3的喜爱度=用户A与用户B的相似度*用户B对商品3的评分+用户A与用户C的相似度*用户C对商品3的评分=0*4.5+0.307254934*0=0

用户A对商品4的喜爱度=用户A与用户B的相似度*用户B对商品4的评分+用户A与用户C的相似度*用户C对商品4的评分=0*3+0.307254934*4=1.22901974

用户B对商品1的喜爱度=用户B与用户A的相似度*用户A对商品1的评分+用户B与用户C的相似度*用户C对商品1的评分=0*5+0.38624364*1=0.38624364

协同过滤算法(例题理解)

4-2  基于用户的协同过滤----皮尔逊系数

 协同过滤算法(例题理解)协同过滤算法(例题理解)

 计算相似度:(用户C 商品4 为例)

 只有用户 A 和用户 D 对商品 4 评过分,因此候选邻居只有 2 个,分别为用户 A 和用户 D。

协同过滤算法(例题理解)

协同过滤算法(例题理解)

 计算预测分值:

协同过滤算法(例题理解)

 其它手写推导:

用户A:

协同过滤算法(例题理解)

 用户B:

协同过滤算法(例题理解)

 用户D:

协同过滤算法(例题理解)

 用户E:

协同过滤算法(例题理解)

4-3 基于物品的协同过滤----余弦相似度

协同过滤算法(例题理解)

协同过滤算法(例题理解)

商品余弦相似度计算结果如下

商品1与商品2的相似度=(5*1+0*0+1*4)/(SQRT(5^2+0^2+1^2)*SQRT(1^2+0^2+4^2))=0.428086345

商品1与商品3的相似度=(5*0+0*4.5+1*0)/(SQRT(5^2+0^2+1^2)*SQRT(0^2+4.5^2+0^2))=0

....

计算喜爱度:

用户A对商品3的喜爱度=商品1与商品3的相似度*用户A对商品1的评分+商品2与商品3的相似度*用户A对商品2的评分+商品4与商品3的相似度*用户A对商品4的评分=0*5+0*1+0.6*0=0

用户A对商品4的喜爱度=商品1与商品4的相似度*用户A对商品1的评分+商品2与商品4的相似度*用户A对商品2的评分+商品3与商品4的相似度*用户A对商品4的评分=0.156892908*5+0.776114*1+0.6*0=1.560578541

用户B对商品1的喜爱度=商品1和商品2的相似度*用户B对商品2的评分+商品1和商品3的相似度*用户B对商品3的评分+商品1与商品4的相似度*用户B对商品4的评分=0.47067872

协同过滤算法(例题理解)

另一个例子:

协同过滤算法(例题理解)

共现矩阵C表示同时喜欢两个物品的用户数,是根据用户物品对应关系表计算出来的。

协同过滤算法(例题理解)

 相似矩阵

协同过滤算法(例题理解)

协同过滤算法(例题理解)

补充:

1、共现矩阵(同时喜欢两个物品用户的人数)

协同过滤算法(例题理解)

协同过滤算法(例题理解)

 2、相似度算法改进

        从前面的讨论可以看到,在协同过滤中两个物品产生相似度是因为它们共同出现在很多用户的兴趣列表中。换句话说,每个用户的兴趣列表都对物品的相似度产生贡献。那么是不是每个用户的贡献都相同呢?
假设有这么一个用户,他是开书店的,并且买了当当网上80%的书准备用来自己卖。那么他的购物车里包含当当网80%的书。假设当当网有100万本书,也就是说他买了80万本。从前面对ItemCF的讨论可以看到,这意味着因为存在这么一个用户,有80万本书两两之间就产生了相似度,也就是说,内存里即将诞生一个80万乘80万的稠密矩阵

        John S. Breese在论文1中提出了一个称为IUF(Inverse User Frequence),即用户活跃度对数的倒数的参数,他也认为活跃用户对物品相似度的贡献应该小于不活跃的用户,他提出应该增加IUF参数来修正物品相似度的计算公式:

协同过滤算法(例题理解)

上述公式对活跃用户做了一种软性的惩罚,但是对于很多过于活跃的用户,比如上面那位买了当当网80%图书的用户,为了避免相似度矩阵过于稠密,我们在实际计算中一般直接忽略他的兴趣列表,而不将其纳入到相似度计算的数据集中。

3、相似度矩阵归一化处理

        Karypis在研究中发现如果将ItemCF的相似度矩阵按最大值归一化,可以提高推荐的准确率。其研究表明,如果已经得到了物品相似度矩阵w,那么可以用如下公式得到归一化之后的相似度矩阵w':

协同过滤算法(例题理解)

实验表明,归一化的好处不仅仅在于增强推荐的准确度,还可以提高推荐的覆盖率和多样性。

(2条消息) 基于用户的协同过滤算法(userCF)_overlordmax的博客-CSDN博客

https://blog.csdn.net/qq_52358403/article/details/112768902

协同过滤算法 | JIANG-HS

「Hive」协同过滤推荐系统-余弦相似度 - 知乎 (zhihu.com)

基于物品的协同过滤算法(ItemCF)原理以及代码实践 - 简书 (jianshu.com)文章来源地址https://www.toymoban.com/news/detail-486053.html

到了这里,关于协同过滤算法(例题理解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python协同过滤算法实现电影推荐(附源码)

    数据集请点赞收藏关注后评论区留言并且私信博主要  本例中使用得是著名得电影数据集MovieLens-100数据集 MoviesLens数据集是实现和测试电影推荐最常用得数据集之一,包含943个用户为精选得1682部电影给出得100000个电影评分 主要文件如下 1:u.data 2:u.item 3:u.user 1:查看用户/电影

    2024年02月11日
    浏览(45)
  • 毕业设计-基于协同过滤算法的旅游推荐系统

    目录 前言 课题背景和意义 实现技术思路 一、协同过滤算法的概念 二、旅游景点推荐系统设计与实现 三、总结 实现效果图样例 最后     📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各

    2024年02月04日
    浏览(59)
  • springboot集成mahout实现简单基于协同过滤算法的文章推荐算法

    更新:相关代码放gitee了,sql与测试类在如下位置https://gitee.com/hwp_ing/mahout.git 1.spring boot项目基于mahout推荐算法实现商品推荐 2.相关内容在章节5-9 这边只是跑了个文章推荐的demo,不过什么电影,商品啥的都一样,没啥区别就是把表当中的文章id改成商品id,操作类型自己修改一

    2023年04月27日
    浏览(51)
  • 毕业设计-基于协同过滤算法的电商平台推荐系统

    目录 前言 课题背景和意义 实现技术思路 一、文献综述 二、基于用户协同过滤推荐系统算法 三、实证分析 四、总结 实现效果图样例 最后     📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几

    2024年02月08日
    浏览(52)
  • 基于Python+协同过滤算法的小说推荐系统设计与实现

    博主介绍 : ✌ 全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到哟 2022-2024年

    2024年02月08日
    浏览(56)
  • 基于springboot+vue协同过滤算法的电影推荐系统054

    大家好✌!我是CZ淡陌。一名专注以理论为基础实战为主的技术博主,将再这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路,向着优秀程序员前行! 🍅更多优质项目👇🏻👇🏻可

    2024年02月07日
    浏览(43)
  • 基于Hadoop大数据技术和协同过滤算法的就业推荐系统

    随着互联网的快速发展,网络数据量不断增加,已经进入了大数据时代。大量的信息和商品同时呈现在用户面前,使我们面临一个严重的问题-信息过载,而个性化推荐是解决该问题一个有效的方法,协同过滤方法是目前在实际推荐系统中应用最多的个性化推荐方法,它基于群体的偏好

    2024年02月03日
    浏览(41)
  • 0002Java程序设计-SSM协同过滤算法的新闻推荐系统

    “互联网+”的战略实施后,很多行业的信息化水平都有了很大的提升。但是目前很多行业的管理仍是通过人工管理的方式进行,需要在各个岗位投入大量的人力进行很多重复性工作,使得对人力物力造成诸多浪费,工作效率不高等情况;同时为后续的工作带来了隐患。并且现

    2024年02月10日
    浏览(38)
  • 图书推荐管理系统Python,基于Django和协同过滤算法等实现

    图书推荐系统 / 图书管理系统,以Python作为开发语言,基于Django实现,使用协同过滤算法实现对登录用户的图书推荐。 视频+代码:https://www.yuque.com/ziwu/yygu3z/gq555ph49m9fvrze Django是一个强大而灵活的Python Web框架,它为开发人员提供了一种高效构建Web应用程序的方式。Django的设计

    2024年02月12日
    浏览(64)
  • python+django+协同过滤算法-基于爬虫的个性化书籍推荐系统(包含报告+源码+开题)

    为了提高个性化书籍推荐信息管理的效率;充分利用现有资源;减少不必要的人力、物力和财政支出来实现管理人员更充分掌握个性化书籍推荐信息的管理;开发设计专用系统--基于爬虫的个性化书籍推荐系统来进行管理个性化书籍推荐信息,以MySQL为后端数据库,以PYTHON为前

    2024年02月11日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包