首页 > 其他分享 >读论文-基于协同过滤的个性化电影推荐系统

读论文-基于协同过滤的个性化电影推荐系统

时间:2024-04-11 22:13:02浏览次数:17  
标签:协同 推荐 用户 算法 过滤 物品 个性化

前言

今天阅读的论文为一篇名为《基于协同过滤的个性化电影推荐系统》的论文,文章混合了基于用户和基于物品的协同过滤推荐算法,提高了推荐算法的效果。

摘要

基于用户的协同过滤与基于物品的协同过滤的混合推荐算法。单一的推荐算法存在着劣势,比如说,基于用户的协同过滤存在用户冷启动、数据稀疏等问题,基于物品的协同过滤算法存在物品冷启动问题,且推荐的物品新颖性较差。为了解决单一推荐算法存在的问题并提升推荐质量,本文提出了混合推荐算法,主要工作包括:使用修正后的余弦相似度计算公式去提升协同过滤算法中相似度的计算准确度。对基于用户的协同过滤与基于物品的协同过滤算法进行加权融合,然后通过调整加权系数得到最佳推荐效果。实验证明本文提出的混合算法提升了系统推荐性能。

混合模式推荐算法

在使用单一的推荐算法进行推荐时,每种方法都有各自的优点和缺点,因此无法为消费者提供最佳的使用体验。基于用户的协同过滤算法充分利用相似用户的评分,根据相似用户的反馈信息来预测评分,保证了推荐商品的新颖性。这种算法的应用范围比其他算法更加广泛,推荐结果的精确度也相对较高,但是也存在一些问题,比如数据稀疏问题和用户冷启动问题。另一种基于物品的协同过滤算法,它通过分析商品的特征和属性,找到与用户喜好商品相似的商品,并将其推荐给用户。该算法可解释性好,计算复杂度较低,而且能够在一定程度上解决新用户的冷启动问题。但是基于物品的协同过滤算法推荐商品的新颖性和物品多样性较低。

协同过滤算法是推荐系统技术中应用最广泛且比较成功的一种算法。基于用户的协同过滤算法经过对用户行为的研宄,能够发现用户的偏爱和需求,从而为用户推荐与其兴趣爱好相匹配的商品。基于物品的协同过滤算法可以从多种商品中寻找到与用户喜好商品最相似的商品,并将其推荐给用户。两种方法相辅相成,基于用户的协同过滤可以在一定程度上缓解物品冷启动,并且其推荐的商品新颖性较高;而基于物品的协同过滤可以一定程度上解决前者存在的新用户冷启动问题。因此,利用合理的混合策略对两种协同过滤算法进行融合可以有效地解决推荐系统中的冷启动问题和推荐创新性问题,提高推荐的精确度和效率,具有很好的实际应用前景。

image

根据电影推荐的实际需求,对用户行为历史以及用户-电影数据集进行分析,决定使用加权混合策略。加权混合推荐系统使用不同的推荐算法来处理各种类型的用户数据和物品数据,该系统通过加权混合的方式将各个算法的推荐结果综合起来,形成最终的推荐列表,加权方法如下:

image

其中,Wk是第k个算法的预测权重,r^xi是第k个算法对物品i的预测分数。确定加权混合推荐系统的权重有多种方法,例如使用stacking集成学习模型、根据验证集的性能表现、由用户确定权值等。在确定权重时,需要考虑到不同推荐算法的性能差异、用户偏好、数据分布特征等因素。在实际场景中,人们已经广泛应用加权混合式推荐系统,但该系统也存在着很多难题急需解决,比如说,如何选择适当的推荐算法和权重,如何平衡多个算法的推荐效果等等。

本文的混合策略选择的推荐算法是基于用户的协同过滤和基于物品的协同过滤算法,因而可将公式转化为

image

公式中的系数xy;是可调的,需要实验过程中不断调试系数以达到最佳的推荐效果,其中x表示基于用户的协同过滤的电影评分预测权重,y表示基于物品的协同过滤的电影评分预测权重。其中jc和;;需要满足:x+y=l(0<x<l,0<y<l),即二者的和为1。讨论极端的情况:当x=l,y=0时,混合系统可看作单一的基于用户的协同过滤推荐系统;x=0,y=1时,混合系统则可看作由单一的基于物品的协同过滤推荐系统。

通过加权混合两种算法,我们可以有效地处理冷启动的情况。两种算法相辅相成,基于物品的协同过滤算法在一定程度上能解决新用户冷启动问题,而基于用户的协同过滤算法可以在一定程度上解决新物品冷启动问题,且推荐的物品新颖性较高。因此,利用合理的混合策略对两种协同过滤算法进行融合可以有效地改善推荐系统中的冷启动问题和推荐创新性问题,提高推荐的精确度和效率。

基于用户的协同过滤推荐算法采用“人以群分”的思想,它根据用户之间的相关性,找到用户的近邻用户,并从这些近邻用户的商品库中筛选出预期评价最高的n种商品,从而为目标用户提供最优的推荐列表。该算法通常包括3个步骤:收集用户行为数据、建立近邻用户集合以及产生推荐。

基于物品的协同过滤算法和基于用户的协同过滤算法所采用的思想十分相似,只不过前者是利用和用户喜好物品相似的物品来为用户进行推荐。通过基于物品的协同过滤算法,能够从商品库中寻找到与目标用户偏好商品类似的近邻商品集合并从中筛选出预期评价最高的前n种商品,以此为用户提供推荐服务。这一过程包括三个步骤:收集用户行为数据、建立近邻物品集合以及产生推荐。

基于用户聚类与改进用户相似度的协同过滤算法

为了解决推荐系统中的数据稀疏问题,本文提出使用K-meanS++算法对用户进行聚类并在每一簇内重新建立用户-物品评分矩阵,从而获得稠密的用户-物品评分矩阵,然后本文在更新后的矩阵基础上运行基于用户的协同过滤算法。此外,传统的相似度计算方法忽略了热门商品的影响,这将严重影响推荐结果的准确性,从而降低了用户体验。为了解决这些问题,本章将从以下两个角度对协同过滤算法进行改进:

  1. 使用聚类算法对用户进行分簇聚类,并在每一簇内重新建立用户-物品评分矩阵,这样能够很好地缓解数据稀疏性。使用聚类算法来重新建立用户-物品评分矩阵可以很好地解决数据稀疏问题。经过调研,本文发现传统的K-means聚类算法存在着不足:随意选取初始聚类中心可能会造成局部最优解,进而影响聚类结果。为此,本课题提出使用K-means++算法对用户进行聚类并在每一簇内重新建立用户-物品评分矩阵,该方法可以准确高效地对用户进行聚类,并且可以有效地降低数据的稀疏性。

  2. 本文在计算用户相似度时加入了热门商品的惩罚因子,这样能够帮助目标用户更加准确地找到近邻用户。

在传统的基于用户的协同过滤算法中,计算相似度仅仅使用了用户-项目评分数据,未曾考虑到热门商品的影响。在实现算法的过程中,本文发现热门商品会影响用户相似度的计算准确性,因而使用融合了热门商品惩罚因子的皮尔逊相关系数来计算相似度,这样能够帮助目标用户更加准确地找到近邻用户。

基于K-Means++算法的用户聚类

在一个推荐系统中,用户-项目评分数据极其稀疏,这会导致推荐算法的效果不佳。通过K-Means聚类算法,能够有效地处理信息稀疏问题。利用该算法将用户集合划分成K个簇,并在每一簇内重新建立用户-物品评分矩阵,这样能够很好地缓解数据稀疏性。然而,经过深入研究,发现该算法具有一定的不足之处:随意选取初始聚类中心,可能会出现局部最优状况,进而影响结果的准确性。我们采用K-Means++方法将用户聚成簇并在每一簇内重新建立用户-物品评分矩阵,有效地解决了传统K-Means方法中存在的聚合结果不准确的问题,大大提高了聚类的准确度,同时也降低了数据的稀疏性。相较于K-means算法,K-means++算法能够有效地选择初始聚类中心,并且将它们之间的距离尽可能地拉远。这种算法比传统的K-means++算法更加精确,能够更好地捕捉数据集中的特征。K-meanS++算法具有出色的操作性能,且效率和可靠性较高,能够有效地处理大规模数据。

结尾

明日见!

标签:协同,推荐,用户,算法,过滤,物品,个性化
From: https://www.cnblogs.com/wephilos/p/18119933

相关文章

  • 基于矩阵分解的协同过滤算法
    引言随着互联网、大数据等新技术的迅速发展,人们的生活变得更加便捷,但同时也导致网络数据爆炸式增长。为了快速帮助用户找到感兴趣的内容,越来越多的研究者致力于推荐算法的研究,以提高推荐质量,向用户推荐更符合其喜好的内容。然而,目前的推荐算法仍存在数据稀疏性、隐私保护和冷启动......
  • Java List集合去重、过滤、分组、获取数据、求最值、合并、排序、跳数据和遍历
    前言请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i、准备工作:现有一个User类、Student类和Ticket类,加入相关依赖@DatapublicclassUser{/***id*/privateIntegerid;/***姓名*/privateStringname;/**......
  • 布隆过滤器 及 Redis Sorted sets 使用注意事项
    布隆过滤器基本概念布隆过滤器(英语:BloomFilter)是1970年由伯顿·霍华德·布隆(BurtonHowardBloom)提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有......
  • 打造个性化聊天机器人:用Ollama和Open WebUI搭建你的私有ChatGPT!
    一简介Ollama官网:https://github.com/ollama/ollamaOllama是一个开源的人工智能(AI)和机器学习(ML)工具平台,特别设计用于简化大型语言模型(LLM)的部署和使用流程。用户可以通过Ollama在本地环境中便捷地运行各种大型语言模型,比如Llama2和其他开源模型。该工具的主要优势和特......
  • 基于OT与CRDT协同算法的文档划词评论能力实现
    基于OT与CRDT协同算法的文档划词评论能力实现当我们实现在线文档平台时,划词评论的功能是非常必要的,特别是在重文档管理流程的在线文档产品中,文档反馈是非常重要的一环,这样可以帮助文档维护者提高文档质量。而即使是单纯的将划词评论作为讨论区,也是非常有用的,尤其是在文档并不那么......
  • mysql中将where条件中过滤掉的group by分组后查询无数据的行进行补0
    背景mysql经常会用到groupBy来进行分组查询,但也经常会遇到一个问题,就是当有where条件时,被where条件过滤的数据不显示了。例如我有一组数据:我想查询创建时间大于某一范围的spu的分组下的sku的数量正常的sql查出的话,假如不存在相关记录SELECTproduct_id,count(*)countF......
  • Node.js毕业设计基于个人阅读习惯的个性化推荐系统研究(Express+附源码)
    本系统(程序+源码)带文档lw万字以上  文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:随着互联网的普及和数字化阅读的兴起,个人阅读习惯在信息时代扮演着越来越重要的角色。个性化推荐系统作为满足用户个性化需求的有效工具,已经成为数字阅读平......
  • ES查询之查询属性过滤、结果高亮显示
    目录一、Elasticsearch之查询字段过滤1.前言2.准备数据3.结果过滤:_source二、Elasticsearch之高亮查询内容1.前言2.准备数据3.默认高亮显示4.自定义高亮显示一、Elasticsearch之查询字段过滤1.前言在未来,一篇文档可能有很多的字段,每次查询都默认给我们返回全部,在数据......
  • 深入理解PHP+Redis实现布隆过滤器(亿级大数据处理和黑客攻防必备)
    布隆过滤器极简概括英文名称BloomFilter,用于判断一个元素是否在一个大数据集合中,如果检测到存在则有可能存在,如果不存在则一定不存在。Redis官网对于布隆过滤器的说明:https://redis.io/docs/data-types/probabilistic/bloom-filter/使用场景防止缓存穿透:用于快速判断某个商......
  • axios配置全局过滤器
    importaxiosfrom'axios'constservice=axios.create({baseURL:'/api',//注意!!这里是全局统一加上了'/api'前缀,也就是说所有接口都会加上'/api'前缀在,页面里面写接口的时候就不要加'/api'了,否则会出现2个'/api',类似'/api/api/user'......