基于协同过滤的电影推荐系统

您所在的位置:网站首页 电影推荐系统的设计与实现实验报告 基于协同过滤的电影推荐系统

基于协同过滤的电影推荐系统

2023-10-04 11:21| 来源: 网络整理| 查看: 265

作者:薄雨濛、甄冀东 、陈重林 

 

一、背景介绍

随着互联网的普及和信息技术的飞速发展,网络信息资源正在呈现出爆炸式的增长趋势,尤其是以电子商务网站为代表,各种电影网站、音乐网站、新闻网站以及购物网站等,已经渗透到了我们日常生活中的每一个角落。尽管海量的信息给人们提供了前所未有的方便,但是如何精准地定位到自己所需要的信息成了互联网时代人们所必须面对的首要难题。这种由于过量信息反而限制用户获取有用信息的问题,就是“信息过载”现象。

在“信息过载”的时代,生产者如何向用户精准地推销自己的产品,消费者如何精准地找到自己所需要的产品,这已经成为信息时代大家所共同面对的问题。为此,专家们提出了网站分类和搜索引擎的解决方法。分类导航网站一般都会按照网站类型的不同将网站分成比较热门的几个大类,比如:影视、体育、新闻等,但是它们通常只能提供个别热门的网站,其覆盖面极为有限。而搜索引擎可以使用户根据自己的需要,通过主动搜索的方式找到所需要的信息。但是,以百度搜索为例,在其中输入“协同过滤算法”,可查出来约321万条相关结果,仍然是海量信息,用户根本就找不到哪些信息是他们所需要的。同时,搜索引擎依赖用户本身,当用户自身都无法明确描述所需要的信息时,搜索引擎便显得无能为力了。在这种情况下,便有了个性化推荐系统的出现。

个性化推荐系统正是连接用户和信息之间的一座桥梁,它能很好地帮助用户在浩瀚的网络资源里找到自己需要的信息,同时还能主动引导客户去发掘一些他们有兴趣但并不知道其存在的有用资源,能根据用户的历史行为信息(比如浏览商品、对商品的评分等)智能地为用户推荐他们所真正感兴趣的物品。这种从用户主动搜索到网站主动推荐的转变,不仅节约了信息搜索的时间,而且极大地改善了用户的互联网体验,使用户对网站产生极大的依赖性;另外,当用户只是在浏览电子商务网站但并无购物的打算时,如果网站能恰当地为用户推荐出他们感兴趣的商品,那么用户很可能就会购买此商品,这种主动引导消费者的方式可以极大地提高网站的销售额。目前在大型商务网站上推荐系统的身影随处可见,下图是国内电子商务网站巨头当当网上的个性化推荐技术应用实例,当用户搜索《Python基础教程》一书的时候,当当网会自动为顾客推荐一些其他相关书籍。

图1.1当当网推荐截图

个性化推荐技术诞生至今已有20多年的发展历史,推荐系统凭借着其智能性和个性化,已经被广泛应用在互联网的各个领域,专门针对个性化推荐系统的相关推荐算法层出不穷,推荐算法是整个推荐系统的核心部分,其性能的好坏关系到整个推荐系统的推荐效率和推荐质量。协同过滤算法是其中发展最为成熟、应用最为成功的推荐算法,然而由于其本身存在的一些缺点,它目前仍然存在着数据稀疏性、准确度低、冷启动和扩展性等方面的问题。所以研究协同过滤算法,可以进一步地推动个性化推荐技术的发展,为互联网用户提供更大的便利,具有重要的学术意义和工程应用意义。

电影推荐是个性化推荐系统的一个重要分支。移动互联网的蓬勃发展使电影观众的观影需求发生了变化,大量互联网用户利用碎片时间在电影视频网站观看电影和视频。据统计,近年来在线视频网站用户规模稳定扩展,用户增长率保持在10%上下。随着国家对电影正版内容保护力度的加大,以及用户付费意愿的提升,满足用户个性化需求,并进一步挖掘用户潜在的观影需求,在增强用户粘性和整体满意度的同时,尽可能多地向用户推荐付费电影,提高网站的商业利润,是目前视频门户网站的电影推荐系统面临的巨大挑战。因此提升电影推荐的多样化和覆盖率是一项有价值的技术研究。

 

二、算法介绍

2.1数据获取

我们所使用的数据全部来自豆瓣网,包括23034部电影,14941名导演,40736名演员,13530位用户,199813条电影评分记录。其中,电影按类型可划分为21种,如剧情、爱情、动作等;分别来自21个不同国家和地区,如中国大陆、中国香港、英国等;所有电影评分取值为2,4,6,8,10。

 

2.2基于内容的推荐算法

图2.1基于内容推荐算法流程

基于内容的推荐算法是最早使用的推荐算法之一,它根据用户过去喜欢的产品,推荐和他过去喜欢的产品所相似的产品。它主要分为三步:

Ⅰ.内容表征

为每个产品抽取出一些特征来表示它本身,对一部电影,提取导演,演员以及类型这三个字段来表示。比如对于电影《让子弹飞》来说,它就可以被表示为{‘剧情’,‘喜剧’,‘姜文’,‘周润发’,‘葛优’,‘刘嘉玲’,‘陈坤’,‘姜文’}。通过分析movies数据集,提取了共21种类型,14941位导演,40736位演员。对其进行one-hot编码处理,可以得到一个电影作行,类型演员等作列的稀疏矩阵。《让子弹飞》对应的行可以表示为{1,1,0,0,…,1,1,1,1,1,0,…,1,0,…},通过该行可知该矩阵第一列表示类型“剧情”,并以此类推。

Ⅱ.特征学习

利用一个用户过去喜欢及不喜欢的item的特征数据,来学习此用户的喜好特征。可通过用户对电影评分的高低来判断喜好。假设用户已经对一些电影给出了他的喜好判断,用评分表现。比如对于给《让子弹飞》评过分的用户Alice,产生一个评分列表:{‘让子弹飞’:8;‘鬼子来了’:10;‘天下无贼’:8;‘小时代’:2;‘逐梦演艺圈’:2}。那么Alice对于导演姜文的打分为前两部他执导电影的评分分别减去Alice的平均评分,再进行算术平均,得出对于导演姜文这一特征,他的评分为3;同理《让子弹飞》及《天下无贼》均参演的演员葛优为2,《小时代》导演郭敬明为-4,在评分列表的电影中未出现的演员及其他特征均为0,由此生成一个跟电影稀疏矩阵相同行维度的基于用户Alice的评分向量。

Ⅲ.生成推荐列表

对于给定用户电影x和给定用户y的相似度计算,采用两个向量之间的余弦相似度计算:

遍历所有电影,选择相似度最高的前n个电影对用户进行推荐。

 

2.3协同过滤推荐算法

人工智能的诞生与发展同计算机学习模仿人类的行为是密切相关的,人们了解一个人可以根据他以往的行为进行分析,那么用户的历史行为信息也就可以反映出很多用户的个人特征信息。个性化推荐技术就是借鉴这种思路,推荐系统通过分析用户的历史行为数据来发现用户的兴趣,从而帮助用户发掘他们感兴趣的东西。例如音乐网站的流行歌曲排行榜和电影网站的热门电影排行榜等,尽管这些网站只是对用户的历史行为做了简单的统计排名,但它们却受到了用户的一致追捧。这种通过对用户历史行为信息的分析去了解用户的兴趣爱好,并以此作为推荐依据的思想就是协同过滤算法。

简单来说,协同过滤就是利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息,个人通过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息,回应不一定局限于特别感兴趣的,特别不感兴趣信息的记录也相当重要。协同过滤算法一般分为基于内存的协同过滤和基于模型的协同过滤,而基于内存的协同过滤算法根据相似度计算对象的不同,又可以分为基于用户的协同过滤和基于项目的协同过滤。

2.3.1基于内存的协同过滤算法

基于内存的协同过滤算法直接利用整个内存的已知信息(比如评分矩阵)去预测用户对未知项目的评分,是目前推荐系统中应用最为成功的算法。其算法原理是:首先利用内存中已知用户对项目的评分信息构建用户-项目评分矩阵,然后利用用户-项目评分矩阵计算所有用户或者项目之间的相似度,根据相似度计算结果找出与目标用户或者目标项目之间相似度最高的K个用户或者项目作为目标用户或者目标项目的最近邻,然后再根据目标用户的最近邻对其他项目的喜好程度来获得目标用户对其他项目的预测评分,从而选出评分最高的N个项目作为推荐结果。

图2.2基于内存的推荐算法流程

根据相似度计算对象的不同,基于内存的协同过滤算法又可分为基于用户的协同过滤算法和基于项目的协同过滤算法。

Ⅰ. 基于用户

基于用户的协同过滤算法是应用最早的推荐算法。它首先对用户的兴趣爱好进行分析,根据用户-项目评分矩阵计算所有用户之间的相似度,然后找到与目标用户兴趣相近的邻居集合,可以认为该集合内的用户兴趣爱好就能反映出目标用户的兴趣爱好,之后就可以把集合内的用户喜欢的项目推荐给目标用户。

以下图为例,简要说明基于用户的协同过滤算法的思想。用户A喜欢电影a和电影b,用户C喜欢电影a、电影b和电影d,因为他们都喜欢电影a和电影b,所以可以认为他们具有相同的兴趣爱好,因此用户C的兴趣爱好对于用户A便有很大的参考价值,那么把用户C喜欢的电影d推荐给用户A就可以被认为是非常合理的推荐。而用户B喜欢电影c,则我们认为他和用户A以及用户C均不相似。

图2.3基于用户的推荐算法流程

该方法的算法具体设计为:设用户A和B有评分记录的电影数量分别为和,其中重复的电影数量为,用户A对这部电影的评分为,用户B对这部电影的评分为,对于用户A和B之间的相似度度量,采用如下公式:

其中,

在这里,我们首先考虑用户之间对相同电影评分的欧氏距离。需要注意的是,不能简单地认为距离越小越好,因为如果两个用户之间重复的电影数量过少,那距离自然会很小;反过来,重复的电影数量越多反而更有参考价值,但这时距离则不可避免地会更大。因此,通过计算便可解决这个问题,当然在此之前必须排除两个用户之间没有重复电影记录的情形。除此之外,还需要设置权重,表示两个用户之间有评分记录的电影的重合率。最终,规定相似度越大,用户对电影的喜好越相似。

我们计算目标用户与其他所有用户之间的相似度,选取最大的五位用户,将他们所看过的电影按照评分由高到低排列,去除目标用户已看的电影,再从剩下的电影中把评分最高的10部推荐给目标用户。

Ⅱ. 基于项目

基于项目的协同过滤算法与基于用户的协同过滤算法相似,主要区别是基于项目的协同过滤算法是以项目为研究中心,通过计算项目之间的相似度代替计算用户之间的相似度。它首先根据目标用户的历史偏好项目,通过计算项目之间的相似度找到与目标用户偏好项目最为相似的K个项目作为偏好项目的最近邻,然后根据目标用户对最近邻项目的预测评分为目标用户推荐出评分值最高的N个项目。与基于内容的算法不同,它不利用物品的内容属性计算物品之间的相似度,它主要通过分析用户的行为记录计算物品之间的相似度。比如用户A,B,C,D均喜欢电影a,b,而用户E喜欢电影a,那么可以认为电影a和b相似度较高,从而将电影b推荐给用户E。现实中,如果用户数量远大于项目数量, 采用该方法效果会更好, 因为同一个项目对应的打分会比较多, 而且计算量会相对较少。但在本次报告中,电影数量多于用户数量,因而实证时并未采用该方法。

2.3.2基于模型的协同过滤算法

  基于模型的协同过滤算法是目前比较普遍的一种做法。从形式上看,这一算法主要是将用户对电影的评分矩阵做了矩阵分解,得到两个低秩矩阵。这一做法假设用户可以被K个特征描述,电影也可以被K个特征描述,将用户特征与电影特征相乘并求和所得到的结果可以认为是用户对电影评分的估计。反过来,如果前面的假设成立,现在有了用户对电影的评分矩阵,可以通过矩阵分解来找到隐含的用户特征和电影特征。

将这两个矩阵相乘,就可以得到每个用户对每部电影的评分,矩阵分解的要求是,对于用户看过的电影,其真实评分与通过矩阵相乘得到的估计评分尽可能接近。当实现了较好的矩阵分解,就可以通过矩阵相乘得到用户对没看过的电影的估计评分,之后可以根据估计评分的高低来为用户推荐电影。

具体来说,我们用维度为的向量表示用户u的特征,用维度为的向量表示电影i的特征,用户u对电影i的估计评分用向量和向量的点乘来表示。向量和向量通常被称作潜在向量。

我们用估计评分与真实评分的残差平方和作为损失函数,并加上了正则项来防止过拟合。其中是已知的用户对电影的真实评分。

我们用了两种基于梯度的方法来最小化损失函数,分别是交替最小二乘法(ALS)和随机梯度下降法(SGD)。

对于ALS最小化,将用户向量和电影向量随机初始化。首先,我们令一组潜在向量不变,将其视为常数。对于这个例子,我们选择电影向量。然后,我们对用户向量计算损失函数的导数。此时,问题简化为用户对于评分的岭回归,根据一阶求导并使结果为零可以得到用户向量的更新值。接着是交替部分,将更新的用户向量视为常数,对电影向量求损失函数的一阶导数,令结果为零,得到电影向量的更新值。交替进行这两步,直到收敛。求导过程如下:

   对于SGD最小化,我们首先对估计评分进行了改进。除了假设用户u对电影i的评分可以简单地通过潜在向量的点乘来描述,我们考虑每个用户和电影可具有与它们相关联的偏差项。具体来说,特定的用户可能倾向于高度评价所有电影,而特定的电影可能往往总是评分较低。而这些可以用偏差项来反应。另外我们也加入了一个全局偏差项,即所有真实评分的平均值,使估计评分围绕这一全局偏差项变动。此时,估计评分和损失函数如下表示全局偏差项,表示用户偏差项,表示电影偏差项:

以用户偏差项为例,表示学习率,其更新如下:

同理可得:

三、结果展示与评价

3.1结果展示

我们以名为“道臣岚”的用户为例,他的所有电影评分记录如下表所示:

 

 

电影名称

电影类型

评分

穿网球鞋的电脑

科幻

10

灾难大电影

灾难

8

碟中谍6:全面瓦解

冒险

8

奇幻人形宠之甜心兔妹

奇幻

2

摇滚大骗局

音乐

8

镰刀梦魇

恐怖

4

熟男,我爱你

爱情

8

蒙面女人

犯罪

4

魔法少女STAR花音100

奇幻

8

鲁宾逊漂流记

冒险

10

乐翻天

喜剧

8

冲出宁静号

战争

4

撒旦之外

剧情

2

拆弹英雄

剧情

4

表3-1某用户电影评分表

基于内容的推荐结果为:

电影名称

电影类型

爸爸的假期

喜剧

100个

喜剧

2B青年的不醉人生

剧情

95分的烦恼

剧情

A面B面

喜剧

一个都不能少

喜剧

一切都好

喜剧

Hi,高考君

剧情

七十二家房客

剧情

一念天堂

喜剧

表3-2基于内容的推荐结果

基于用户的推荐结果为:

电影名称

电影类型

春梦

爱情

国王与小鸟

爱情

顽皮小子闯火星

科幻

太阳马戏团:喜悦之旅

奇幻

疯狂成名记

剧情

挚爱

剧情

数到零

战争

蜜的滋味

剧情

魔卡少女樱特典:包在小可身上

喜剧

忍无可忍

动作

表3-3基于用户的推荐结果

 

基于模型的推荐结果为:

电影名称

电影类型

王牌售车员

喜剧

釜山行

动作

最明亮的星

爱情

阿斯特里克斯历险记:诸神之宫殿

冒险

波斯王子:时之刃

冒险

遗产奇案

喜剧

愿你被爱

爱情

我是猫

剧情

骄傲

剧情

人工智能

科幻

表3-4基于模型的推荐结果

 

 

3.2方法评价

对于协同过滤推荐算法,它的优点一是能够过滤难以进行机器自动基于内容分析的信息,二是能够基于一些复杂的、难以表达的概念进行过滤;三是具有一定的推荐新颖性。相反,对于冷启动问题(包含用户冷启动、项目冷启动、系统冷启动)及稀疏性问题仍无法解决,而随着用户和商品的增多,系统的性能会越来越低。

分来来看,对于基于用户的协同过滤算法,它推荐个性化、自动化程度高,能够有效地利用其他用户的经验,加快个性化学习的速度;有推荐新信息的能力,用户对推荐信息的内容事先是预料不到的,可以发现用户潜在的但自己尚未发现的电影兴趣偏好;但由于用户对电影的评价非常稀疏,这样基于用户的评价所得到的用户间的相似性可能不准确;另外考虑到用户对于电影的行为变化频率较快,因而推荐结果不稳定。

对于基于内容的算法,电影特征矩阵维数过大,运算时占内存;演员等特征的权重较大,导致推荐时出现惊喜的概率较低;可能两部电影抽取的特征完全相同,无法作出区分;但对于新加入的电影,它可以立即被推荐。。

最后对于基于模型的方法,因为矩阵分解容易编程实现,所以实现复杂度低,预测效果也好,同时还能保持扩展性,但推荐结果的解释性不如前者。

 

参考文献

[1]谈凯. 基于强化学习的电影推荐算法应用于实现[D]. 武汉: 华中科技大学,2018.

[2]李国振. 基于协同过滤的个性化推荐系统算法研究[D]. 上海: 东华大学, 2018.

[3]Takács G, Pilászy I, Németh B, et al.Matrix factorization and neighbor based algorithms for the netflix prizeproblem[C]//Proceedings of the 2008 ACM conference on Recommender systems. ACM,2008: 267-274.

[4]Lu Y , Yang J . Notes on Low-rank MatrixFactorization[J]. Computer Science, 2015.

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3