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

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

时间:2024-01-17 14:15:10浏览次数:23  
标签:基于 推荐 电影 用户 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/wephiles/p/17969637

相关文章

  • 基于rest_framework的ModelViewSet类编写登录视图和认证视图
    背景:看了博主一抹浅笑的rest_framework认证模板,发现登录视图函数是基于APIView类封装。优化:使用ModelViewSet类通过重写create方法编写登录函数。环境:既然接触到rest_framework的使用,相信已经搭建好相关环境了。1建立模型编写模型类#models.pyfromdjango.dbimportmodel......
  • 基于SpringBoot+Vue的校园招聘系统设计实现(源码+lw+部署文档+讲解等)
    (文章目录)前言:heartpulse:博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌:heartpulse:......
  • 基于SSM的国外摇滚乐队交流和周边售卖系统
    互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对国外摇滚乐队交流和周边售卖信息管理混乱,出错率高,信息安全性差,劳动强度大,费时费力等问题,采用国外摇滚乐队交流和周边售......
  • 基于javaweb的吃了吗管理系统
    随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了吃了吗管理系统的开发全过程。通过分析吃了吗管理系统管理的不足,创建了一个计算机管理吃了吗管理系统的方案。文章介绍了吃了吗管理系统的系统分析部分,包括可行性分析等,系统设计部分主......
  • 基于WEB的开放性实验室管理系统
    现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本开放性实验室管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事......
  • 【源码系列#06】Vue3 Diff算法
    专栏分享:vue2源码专栏,vue3源码专栏,vuerouter源码专栏,玩具项目专栏,硬核......
  • 模拟适配器设计方案:360-基于10G以太网的模拟适配器
     基于10G以太网的模拟适配器一、产品概述   基于10G以太网的模拟适配器是一款分布式高速数据采集系统,实现多路AD的数据采集,并通过10G以太网光纤远距离传输到存储计算服务器,计算控制指令能通过光纤返回给数据卡进行IO信号控制。产品基于10G太网络,可迅......
  • 成为一个合格程序员所必备的三种常见LeetCode排序算法
    排序算法是一种通过特定的算法因式将一组或多组数据按照既定模式进行重新排序的方法。通过排序,我们可以得到一个新的序列,该序列遵循一定的规则并展现出一定的规律。经过排序处理后的数据可以更方便地进行筛选和计算,从而大大提高了计算效率。因此,掌握排序算法是每个程序员的基本功......
  • 最简单的LED驱动程序编写流程--基于IMX6ULL
    一.查看芯片手册根据芯片手册找到3个条件1.根据芯片手册找到对应端口,并对相应端口组使能,而IMX6ULL使能是默认的2.找到对应引脚的模式,设置为GPIO模式或者其他串口模式IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3地址:0x02290000+0x14设置引脚模式的地址3.并在GPIO模式下,设置引......
  • 基于centos环境的docker安装redis以及设置密码
    本篇的博客是因为之前的博客,写的存在问题,设置的密码无法使用,就是即使设置了密码,依旧提示认证失败,所以才有了本篇的博客文章 dockerpullredis 查看下载的镜像dockerimages新建redis配置文件mkdir-p/home/redis/conftouch/home/redis/conf/redis......