首页 > 编程语言 >基于内容的电影推荐算法研究

基于内容的电影推荐算法研究

时间:2024-04-11 21:55:27浏览次数:20  
标签:基于 推荐 电影 用户 TF 算法 相似 IDF

引言

今天读的文章为一篇名为《基于内容的电影推荐算法研究》的文章,文章提出了一种基于内容的电影推荐算法,通过分析电影特征和用户兴趣,实现更精准的电影推荐。

文章中使用到了TF-IDF向量化方法,将电影类型和导演信息转化为特征向量,然后使用余弦相似度来衡量电影之间的相关性,接下来根据用户的偏好和需求,通过加权相似度得分来提高相关电影的优先级,最后筛选和排序,选出最合适的推荐结果。

原理和方法

基于内容的推荐算法是以项目相关信息、用户相关信息及用户对项目的操作行为来构建推荐算法模型,不需要依据用户对项目的评价意见,更多地需要用机器学习的方法从关于内容的特征描述的事例中得到用户的兴趣资料。简单理解是根据推荐项目的属性计算项目间的相关性,然后根据用户的偏好记录,推荐给用户相似度高的物品。如下图所示:
image

使用到的技术

数据预处理

将获取到的数据进行去重、去除噪声等操作,得到一个电影数据,其中有些电影类型、导演是缺省值,可以将其替换为空字符串。最后将结果存储到csv文件中。电影数据详情如下所示。
image

创建一个TF-IDF向量化器,将电影的类型和导演转化为TF-IDF矩阵,计算机余弦相似度,得到余弦矩阵,此时可以创建一个索引,以便快速通过电影名称找到电影详细信息。

TF-IDF特征提取和矩阵构建

TF-IDF指的是:词频(TF)和逆文档频率(IDF),简单理解,TF指的是一个词语在文章中出现的频率,频率越高,说明这个词语对于文章越重要,反之,越不重要。IDF值的是一个词语在整个文档集中的出现的频率。TF-IDF的值就是TF乘以IDF。

所包含的公式符号说明:

M表示文档集包含的文档数,包含关键词ka的文档数为ma,fab表示关键词ka在文档db中出现的次数,fdb表示文档db中出现的词语总数。

TF、IDF以及TF-IDF的计算公式:

  1. TF的计算公式:
    image
  2. IDF的计算公式
    image
  3. 可以得到TF-IDF的计算公式
    image

余弦相似度计算和结果排序

将文本数据转换为特征向量表示,使用 TF-IDF 特征提取方法将文本数据转换为 TF-IDF 矩阵后,对于每个待推荐的项目,计算其特征向量与其他项目特征向量之间的余弦相似度。

余弦相似度

余弦相似度通过夹角的距离来判断两个向量之间的距离。

余弦相似度的计算公式为:
image

其中Fu表示某个用户的偏好特征,Fi表示某个候选物品的偏好特征。k表示第k个特征,向量中一共有K个特征。

余弦相似度所得的结果在-1到1之间,值越接近1,则代表物品越适合该用户,若值越接近-1则代表物品越不适合用户。

结果排序

对于待推荐的项目,计算其与其他项目的相似度,得到一个相似度列表。根据相似度列表,选取与待推荐项目相似度最高的前 N 个项目作为推荐结果。

用户偏好以及加权相似度

在推荐系统中考虑用户偏好和加权相似度的目的是更准确地推荐符合用户喜好的电影。用户偏好是指用户对电影的特定属性或特征的偏好,比如喜欢某个电影类型、喜欢某个导演等。加权相似度是根据用户的偏好信息对电影之间的相似度进行加权,使得与用户喜好更相关的电影得到更高的相似度分。

在推荐系统中考虑用户偏好以及加权相似度,可以提高推荐的准确性,让用户满意度更高。

假设有两个对象 A 和 B,它们的相似度得分为score(A, B),而对于不同的特征或属性,分别有权重weight1、weight2、...weightn。使用计算公式similarity(A, B) = weight1score1(A, B) + weight2 ·score2(A, B) + ... + weightn · scoren(A, B) 其 中,score1(A, B)、score2(A, B)、...、scoren(A, B)分别表示不同特征或属性的相似度得分。

实验所用数据集

使用 IMDB 电影评分作为数据集。

IMDB 是一个知名的电影评分网站,涵盖了大量的电影作品,包括各种类型、不同年代和不同国家的电影,拥有大量的用户评分和评论数据。评分数据不仅包括了用户的整体评分,还包括了用户对电影的不同方面的评分,如剧情、演员表演、音乐等。

实验

文章使用了Python中的两个函数,分别为get_recommendation和evaluate_recommendation。

使用 get_recommendation 函数获取推荐电影列表,并将其传递给 evaluate_recommendation 函数进行评估,输出推荐电影列表。下表展示了文章作者的get_recommendation函数参数列表:
image

evaluate_recommendation接受两个参数,一个参数为:目标电影的名称,另外一个参数为推荐电影列表。利用次函数,可以获得推荐电影的平均评分和平均投票数,如果推荐电影的平均评分和平均投票数与目标电影相似,那么说明有一个较好的推荐结果。下表为文章作者evaluate_recommendation的参数列表。
image

作者以《阿凡达》为例,使用了电影的类型和导演信息作为用户喜好的参数,并设置了最低评分和最低投票数的筛选条件。推荐的电影则是根据相似度得分排序。推荐的电影则是根据相似度得分排序后的前 5 部电影。
文章作者所得的实验结果如下所示
image

结语

好了,今天的分享就到这了,实现这个推荐系统以后,将会上传一个博客,把我实现的过程写到博客里,下个博客见!

标签:基于,推荐,电影,用户,TF,算法,相似,IDF
From: https://www.cnblogs.com/wephilos/p/18119951

相关文章

  • 深入理解MD5算法:原理、应用与安全
    第一章:引言导言在当今数字化时代,数据安全和完整性变得至关重要。消息摘要算法是一种用于验证数据完整性和安全性的重要工具。在众多消息摘要算法中,MD5(MessageDigestAlgorithm5)因其快速、广泛应用和相对较高的安全性而备受关注。本书将深入探讨MD5算法的原理、应用和安全性,帮......
  • 超详细!详解一道高频算法题:数组中的第 K 个最大元素
    超详细!详解一道高频算法题:数组中的第K个最大元素今天分享的题目来源于LeetCode第215号问题,是面试中的高频考题。题目描述在未排序的数组中找到第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。......
  • R语言基于决策树的银行信贷风险预警模型
    原文链接:http://tecdat.cn/?p=2783原文出处:拓端数据部落公众号 引言我国经济高速发展,个人信贷业务也随着快速发展,而个人信贷业务对提高内需,促进消费也有拉动作用。有正必有反,在个人信贷业务规模不断扩大的同时,信贷的违约等风险问题也日益突出,一定程度上制约着我国的信贷市场......
  • 基于dremio 安装包进行源码依赖包maven 私服重建的一个思路
    dremio25.0版本已经发布了,但是如果希望自己源码构建,但是缺少一些依赖造成编译会有问题,但是我们可以直接基于官方提供的下载包的文件进行maven私服的重建,以下说明下简单流程参考流程下载软件包这个可以从dremio官网下载到最好选择一个可以构建的分支本地构建下此步......
  • 实用算法模板——滑动窗口
    为了更好的说明这个问题,我们借用acWing上的一道题目模拟样例:解法一:使用stl中的双端队列求解解法二:使用数组模拟队列,运行速度更快如果还有疑问,可参考:C15【模板】单调队列滑动窗口最值_哔哩哔哩_bilibili希望对你有所帮助,感谢查看!......
  • Deep Deterministic Policy Gradient(DDPG)算法讲解笔记
    DDPGDeepDeterministicPolicyGradient,基于actor-critic模型提出了一个有效的valuebased连续型空间的RL算法,引入了一些帮助训练稳定的技术。基础:DQN,Batchnormm,Discretize,微积分backgroundDQN改进的推广Policybased方法(TRPO)已经在actionspace取得突破传统disc......
  • 算法训练营Day08-LeetCode344. 反转字符串 && 541. 反转字符串 II && 151. 反转字符串
    344.反转字符串题目链接:LeetCode344.反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题思路:字符串首尾字符交换即可完成反转。定......
  • 元启发式算法库 MEALPY 初体验-遗传算法为例
    简介官网:MealPY官网开源许可:(GPL)V3MEALPY简介官网简介翻译MEALPY(MEta-heuristicALgorithmsinPYthon)是一个提供最新自然启发式元启发算法的Python模块,它是最大的此类Python模块之一。这些算法模仿自然界中的成功过程,包括生物系统以及物理和化学过程。mealPy的目......
  • 基于k8s的高性能高可用的web集群
    目录项目信息项目架构图项目描述项目环境项目步骤ip规划一、部署k8s集群内的机器,一台master,两台node修改主机名添加域名解析关闭firewalld、selinux配置静态的IP地址关闭交换分区修改Linux内核参数更新和配置软件源配置ipvs功能同步时间安装docker环境配置docker配置k8s......
  • 基于SpringBoot+MySQL+SSM+Vue.js的餐馆订餐系统(附论文)
    演示视频基于SpringBoot+MySQL+SSM+Vue.js的餐馆订餐系统技术描述开发工具:Idea/Eclipse数据库:MySQLJar包仓库:Maven前端框架:Vue/ElementUI后端框架:Spring+SpringMVC+Mybatis+SpringBoot文字描述基于SpringBoot+MySQL+SSM+Vue.js的餐馆订餐系统(附论文),用......