引言
今天读的文章为一篇名为《基于内容的电影推荐算法研究》的文章,文章提出了一种基于内容的电影推荐算法,通过分析电影特征和用户兴趣,实现更精准的电影推荐。
文章中使用到了TF-IDF向量化方法,将电影类型和导演信息转化为特征向量,然后使用余弦相似度来衡量电影之间的相关性,接下来根据用户的偏好和需求,通过加权相似度得分来提高相关电影的优先级,最后筛选和排序,选出最合适的推荐结果。
原理和方法
基于内容的推荐算法是以项目相关信息、用户相关信息及用户对项目的操作行为来构建推荐算法模型,不需要依据用户对项目的评价意见,更多地需要用机器学习的方法从关于内容的特征描述的事例中得到用户的兴趣资料。简单理解是根据推荐项目的属性计算项目间的相关性,然后根据用户的偏好记录,推荐给用户相似度高的物品。如下图所示:
使用到的技术
数据预处理
将获取到的数据进行去重、去除噪声等操作,得到一个电影数据,其中有些电影类型、导演是缺省值,可以将其替换为空字符串。最后将结果存储到csv文件中。电影数据详情如下所示。
创建一个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的计算公式:
- TF的计算公式:
- IDF的计算公式
- 可以得到TF-IDF的计算公式
余弦相似度计算和结果排序
将文本数据转换为特征向量表示,使用 TF-IDF 特征提取方法将文本数据转换为 TF-IDF 矩阵后,对于每个待推荐的项目,计算其特征向量与其他项目特征向量之间的余弦相似度。
余弦相似度
余弦相似度通过夹角的距离来判断两个向量之间的距离。
余弦相似度的计算公式为:
其中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函数参数列表:
evaluate_recommendation接受两个参数,一个参数为:目标电影的名称,另外一个参数为推荐电影列表。利用次函数,可以获得推荐电影的平均评分和平均投票数,如果推荐电影的平均评分和平均投票数与目标电影相似,那么说明有一个较好的推荐结果。下表为文章作者evaluate_recommendation的参数列表。
作者以《阿凡达》为例,使用了电影的类型和导演信息作为用户喜好的参数,并设置了最低评分和最低投票数的筛选条件。推荐的电影则是根据相似度得分排序。推荐的电影则是根据相似度得分排序后的前 5 部电影。
文章作者所得的实验结果如下所示
结语
好了,今天的分享就到这了,实现这个推荐系统以后,将会上传一个博客,把我实现的过程写到博客里,下个博客见!
标签:基于,推荐,电影,用户,TF,算法,相似,IDF From: https://www.cnblogs.com/wephiles/p/17969637