基于混合推荐的电影推荐系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
随着经济的快速发展,人们的娱乐生活越来越丰富。电影,作为娱乐的重要组成部分,越来越受到大众的欢迎,特别是受到年轻人的喜爱。但是,如何在海量的电影中找到满足自己喜爱的电影却成为一个难题。电影个性化推荐应运而生,它就是来解决如何在海量信息中寻找关键点,向用户推荐出符合用户要求的电影。
本文,基于内容和协同过滤混合的推荐算法,建立一个个性化的电影推荐系统。电影作为推荐给用户的一种产品,其对特定的时间依赖性并不强。基于内容的推荐系统可以有效地克服冷启动和数据稀疏性问题,在系统初运行阶段和有新用户进入阶段可以提供较高的准确性。当数据评估到达一定程度后,使用协同过滤推荐系统进行推荐。协同过滤技术,不仅可以提供同类型的优质产品给用户,还可以根据近邻集的不同进行跨类型的推荐。并且随着时间的增加,用户评价数的增多,更多的用户加入到系统中后,会找到更匹配的近邻用户,使得推荐质量得到提升。
系统设计
一、总体构架设计
电影推荐系统采用B/S模式的三层框架设计,分为表示层、业务层和数据层。这样的设计模式达到了分散关注、松散耦合、逻辑复用和标准定义的目的。系统总体框架结构图如图1所示。
二、对象关系及动态模型
a)对象关系
电影管理中的主要对象有:管理员和电影。管理员对电影的操作有:查询、修改、删除、添加等。管理员与电影是一对多的关系。
电影推荐中的对象是电影,系统在这些电影信息的基础上进行推荐,系统和电影的关系是多对多的关系。用户对象可以细分为普通用户和管理员。对象详细关系图如图2所示。
图1 总体构架设计
图2 对象间关系图
b)动态模型
电影推荐模块是系统主要的动态模型。电影推荐系统的状态转化图如3所示。
图3 推荐的状态转化图
三、数据库设计
用户信息表有三个属性,用户名、邮箱、密码。用户名是主键,为文本类型,邮箱和密码也是文本类型。用户信息数据字典如下表所示。
表1用户信息数据表
电影信息表有10个属性,电影序号是主键,为数值型。浏览次数也是数值型。电影名、演员、导演、类型、年代、地区、介绍、图片都是文本类型。电影信息表的数据字典如下表所示。
表2 电影信息数据表
用户兴趣信息表具有6个属性,其中序号为主键,是数值型。其他用户名、电影名、类型、年代、类型都是文本类型。用户兴趣表的数据字典如下表所示。
表3 用户兴趣信息数据表
电影显示信息表主要有4个属性,电影名为主键,文本类型。其他导演、演员、图片也是文本类型。电影显示信息表的数据字典如下表所示。
表4 电影显示信息数据表
电影推荐系统的E-R图如4所示。
图4 系统E-R图
四、混合推荐算法设计
协同过滤通过计算用户之间的相似性获得推荐,但是忽略了项目和用户自身的特性,而且还具有冷启动问题。基于内容的推荐虽然能够解决协同过滤中的不足,但是它也有缺陷。基于内容的推荐不可避免地受到信息获取技术的制约,例如自动提取多媒体数据的内容特征具有技术上的难题。
在这种条件下,将这两个结合混合推荐算法成为必要。这两种算法的融合不仅相互弥补各自的不足,而且这种混合推荐系统还具有较高的精度和效率。
本混合电影推荐系统中主要有两种推荐算法。一种是协同过滤算法,另一种是基于内容的推荐算法。这两种算法融合于本推荐系统中,根据不同的条件进行推荐。下面详细介绍两种算法的使用条件。
协同过滤算法:与该用户相似的邻居大于等于3
基于内容的推荐算法:与该用户相似的邻居小于3
协同过滤算法原理:
当用户登录时,系统自动计算此时的用户相似性矩阵。如果该用户的相似性邻居大于等
于3,则可以使用协同过滤算法推荐电影。
基于内容的推荐算法原理:
用户登录时,系统自动计算此时的用户相似性矩阵,如果该用户的相似邻居小于3,那么则使用基于内容的算法推荐电影。
图5 混合系统推荐算法流程图
如上图所示,用户登录后,系统即开始个性化推荐了,但是针对每个用户使用的方法不同,对任何一个用户进行推荐都要按照当前该用户的历史信息进行判断处理。首先计算用户相似性矩阵,如果与该用户的相似邻居大于等于3,那么表示打分矩阵不稀疏,则按照协同过滤算法推荐;否则,则使用基于内容的推荐算法进行推荐。
协同过滤算法流程图如下所示。
图6 协同过滤算法流程图
如上图所示,介绍协同过滤的算法步骤:
第一步:用户A 登录后,系统查询用户—电影评分矩阵,如果某个用户X 与用户A 一样,A 打分了他也打分了,那么将用户X 加入到用户列表list 中;
第二步:计算list 表中各个用户与A 之间的相似性,相似性的计算利用夹角余弦的方法,公式如下:
()(),,2
2
,cos ,x s y s
s S s r
r
x y sim i j x y x
y
∈∈==
=
∑∑
第三步:根据第二步计算相似性后,得到与用户A 最相似的3个近邻集合S 。 第四步:利用集合S ,计算用户A 没有评分的电影,采用S 集合中三个邻居的打分均
值。公式如下:
,,ˆ1r c s c s
c C
r
N
∈=
∑
第五步:将计算得到的电影评分排序,找出评分最高的5个电影,推荐给用户A ,算法结束。
基于内容的推荐算法流程图如下图所示:
上图介绍了用户登录时,使用基于内容的推荐算法为用户推荐感兴趣的电影,该算法步
骤如下:
第一步:根据用户浏览历史信息表,找到当前用户A 浏览过的电影,统计这些电影中,用户A 所关注的电影的类型class 、年代year 和地区area 。
第二步:得到用户A 浏览过的电影的类型、年代和地区后,得到电影数据库中找到类型为class 、年代为year 和地区为area 的电影。找到的电影个数和大于等于5,则退出。否则,进行下一步。
第三步:在电影库中找到类型为class 和地区为area 的电影。找到的电影个数和大于等于5,则退出。否则,进行下一步。
第四步:在电影库中找到类型为class 、年代为year 的电影。找到的电影个数和大于等于5,则退出。否则,进行下一步。
第五步:在电影库中找到年代为year 和地区为area 的电影。退出。
性能测试
推荐系统常用的几种评价指标定义如下: 1) 准确率P
()()u u d L P L L
=
其中,()u P L 表示在列表L 中用户u 的准确率,()d u L 表示推荐列表L 中用户u 喜欢的产品数,L 是推荐列表集合长度。 2) 召回率R
()()
u
u u d L R L D =
其中,()u R L 表示在列表L 中用户u 的召回率,u D 表示用户在测试集中观看的电影总数。
3) F1—score
()2=
PR
F L P R
+
其中,P 为准确率,R 为召回率。
4) 命中率hit