基于混合推荐的电影推荐系统设计
绪论
随着经济的快速发展,人们的娱乐生活越来越丰富。电影,作为娱乐的重要组成部分,
越来越受到大众的欢迎,特别是受到年轻人的喜爱。但是,如何在海量的电影中找到满足自己喜爱的电影却成为一个难题。电影个性化推荐应运而生,它就是来解决如何在海量信息中寻找关键点,向用户推荐出符合用户要求的电影。
本文,基于内容和协同过滤混合的推荐算法,建立一个个性化的电影推荐系统。电影作
为推荐给用户的一种产品,其对特定的时间依赖性并不强。基于内容的推荐系统可以有效地克服冷启动和数据稀疏性问题,在系统初运行阶段和有新用户进入阶段可以提供较高的准确性。当数据评估到达一定程度后,使用协同过滤推荐系统进行推荐。协同过滤技术,不仅可以提供同类型的优质产品给用户,还可以根据近邻集的不同进行跨类型的推荐。并且随着时间的增加,用户评价数的增多,更多的用户加入到系统中后,会找到更匹配的近邻用户,使得推荐质量得到提升。
系统设计
一、总体构架设计
电影推荐系统采用B/S模式的三层框架设计,分为表示层、业务层和数据层。这样的设计模式达到了分散关注、松散耦合、逻辑复用和标准定义的目的。系统总体框架结构图如图1所示。
二、对象关系及动态模型
a)对象关系
电影管理中的主要对象有:管理员和电影。管理员对电影的操作有:查询、修改、删除、添加等。管理员与电影是一对多的关系。
电影推荐中的对象是电影,系统在这些电影信息的基础上进行推荐,系统和电影的关系是多对多的关系。用户对象可以细分为普通用户和管理员。对象详细关系图如图2所示。 1
-
表示层 页面浏览器 注册,登陆,浏览,观看,添加,删除,修改等 网络应用客户端 业务层 电影管理业务 电影查阅,电影修改,电影删除,电影添加等 电影推荐系统算法 数据层 实时业务数据 电影信息,用户信息,用户浏览信息等 数据仓库(历史数据) 图1 总体构架设计
管理员 电影管理 电影信息 用户 浏览 普通用户 观看 推荐算法 图2 对象间关系图
b)动态模型
电影推荐模块是系统主要的动态模型。电影推荐系统的状态转化图如3所示。
2
-
图3 推荐的状态转化图
三、数据库设计
用户信息表有三个属性,用户名、邮箱、密码。用户名是主键,为文本类型,邮箱和密码也是文本类型。用户信息数据字典如下表所示。
表1用户信息数据表
数据项 用户名 邮箱 密码 类型 文本 文本 文本 推荐结束 记录用户兴趣 保存用户浏览信息 推荐 已推荐 (用户得到推荐信息) 推荐处理结果 已完成 (用户根据得到的信息进行浏览或观看) 未推荐 登陆 电影信息表有10个属性,电影序号是主键,为数值型。浏览次数也是数值型。电影名、演员、导演、类型、年代、地区、介绍、图片都是文本类型。电影信息表的数据字典如下表
3
-
所示。
表2 电影信息数据表
数据项 电影序号 电影名 演员 导演 类型 年代 地区 介绍 浏览次数 图片 类型 数值 文本 文本 文本 文本 文本 文本 文本 数值 文本 用户兴趣信息表具有6个属性,其中序号为主键,是数值型。其他用户名、电影名、类型、年代、类型都是文本类型。用户兴趣表的数据字典如下表所示。
表3 用户兴趣信息数据表
数据项 序号 用户名 电影名 类型 年代 类型 类型 类型 数值 文本 文本 文本 文本 电影显示信息表主要有4个属性,电影名为主键,文本类型。其他导演、演员、图片也是文本类型。电影显示信息表的数据字典如下表所示。
表4 电影显示信息数据表
数据项 电影名 类型 文本 4
-
导演 演员 图片 电影推荐系统的E-R图如4所示。
用户名 文本 文本 文本 邮箱 用户 密码 用户名 浏览 电影名 电影名 电影 导演 演员 演员 类型 地区 图4 系统E-R图
四、混合推荐算法设计
协同过滤通过计算用户之间的相似性获得推荐,但是忽略了项目和用户自身的特性,而且还具有冷启动问题。基于内容的推荐虽然能够解决协同过滤中的不足,但是它也有缺陷。基于内容的推荐不可避免地受到信息获取技术的制约,例如自动提取多媒体数据的内容特征具有技术上的难题。
在这种条件下,将这两个结合混合推荐算法成为必要。这两种算法的融合不仅相互弥补各自的不足,而且这种混合推荐系统还具有较高的精度和效率。
本混合电影推荐系统中主要有两种推荐算法。一种是协同过滤算法,另一种是基于内容的推荐算法。这两种算法融合于本推荐系统中,根据不同的条件进行推荐。下面详细介绍两种算法的使用条件。
协同过滤算法:与该用户相似的邻居大于等于3
5
-
基于内容的推荐算法:与该用户相似的邻居小于3 协同过滤算法原理:
当用户登录时,系统自动计算此时的用户相似性矩阵。如果该用户的相似性邻居大于等于3,则可以使用协同过滤算法推荐电影。
基于内容的推荐算法原理:
用户登录时,系统自动计算此时的用户相似性矩阵,如果该用户的相似邻居小于3,那么则使用基于内容的算法推荐电影。
图5 混合系统推荐算法流程图
如上图所示,用户登录后,系统即开始个性化推荐了,但是针对每个用户使用的方法不同,对任何一个用户进行推荐都要按照当前该用户的历史信息进行判断处理。首先计算用户相似性矩阵,如果与该用户的相似邻居大于等于3,那么表示打分矩阵不稀疏,则按照协同过滤算法推荐;否则,则使用基于内容的推荐算法进行推荐。
协同过滤算法流程图如下所示。 6
协同过滤算法推荐 基于内容的推荐算法推荐 是 该用户的相似邻居>=3 否 计算用户相似矩阵 开始 -
图6 协同过滤算法流程图
如上图所示,介绍协同过滤的算法步骤:
第一步:用户A登录后,系统查询用户—电影评分矩阵,如果某个用户X与用户A一样,A打分了他也打分了,那么将用户X加入到用户列表list中;
第二步:计算list表中各个用户与A之间的相似性,相似性的计算利用夹角余弦的方法,公式如下:
结束 将计算得到的评分排序,找到评分最高的5个项目 利用集合S,计算用户没有评分的项目(采用均值的方法) 找到与用户最相似的3个邻居集合S 计算list中用户A的相似性(夹角余弦方法) list>=3 计算与用户A对相同项目打分的用户得到列表list 开始 simi,jcosx,yxyx2y2sSxyrx,sy,s2y,srsSxyrr2x,ssSxy
7
-
第三步:根据第二步计算相似性后,得到与用户A最相似的3个近邻集合S。 第四步:利用集合S,计算用户A没有评分的电影,采用S集合中三个邻居的打分均值。公式如下:
rc,s1NrˆcCc,s
第五步:将计算得到的电影评分排序,找出评分最高的5个电影,推荐给用户A,算法结束。
基于内容的推荐算法流程图如下图所示: 图7 基于内容的推荐算法流程图 8
结束 查找电影库,推荐地区为area和年代为year的电影 是 找到电影个数>=5 否 是 找到电影个数>=5 否 查找电影库,推荐类型为class和年代为year的电影 是 否 查找电影库,推荐类型为class和地区为area的电影 查找电影库,推荐类型class、年代year和地区area 统计用户A浏览历史信息,找到用户A浏览过最多电影类型class、年代year和地区开始 找到电影个数>=5 -
上图介绍了用户登录时,使用基于内容的推荐算法为用户推荐感兴趣的电影,该算法步骤如下:
第一步:根据用户浏览历史信息表,找到当前用户A浏览过的电影,统计这些电影中,用户A所关注的电影的类型class、年代year和地区area。
第二步:得到用户A浏览过的电影的类型、年代和地区后,得到电影数据库中找到类型为class、年代为year和地区为area的电影。找到的电影个数和大于等于5,则退出。否则,进行下一步。
第三步:在电影库中找到类型为class和地区为area的电影。找到的电影个数和大于等于5,则退出。否则,进行下一步。
第四步:在电影库中找到类型为class、年代为year的电影。找到的电影个数和大于等于5,则退出。否则,进行下一步。
第五步:在电影库中找到年代为year和地区为area的电影。退出。
性能测试
推荐系统常用的几种评价指标定义如下: 1) 准确率P
PuLduL L其中,PuL表示在列表L中用户u的准确率,duL表示推荐列表L中用户u喜欢的产品数,L是推荐列表集合长度。 2) 召回率R
duL RuLDu其中,RuL表示在列表L中用户u的召回率,Du表示用户在测试集中观看的电影总数。
3) F1—score
FL=
2PR PR其中,P为准确率,R为召回率。
9
-
4) 命中率hit
Hit
N S其中,N为用户观看电影总数,S为推荐列表中的电影总数。
5) 多样性Diversity
SnL1sx,y
LL1xys(x,y)表示用户x和y的相似性。 6) 覆盖率Coverage
COVL=MnM
Mn表示推荐列表L中不同的电影个数,M为系统电影库中电影总数。
在本文实现的混合系统中,总共有1500部电影,1200个用户,总共6500个评分,以此为测试条件。设定不同的推荐列表长度L,Hits和diversity指标的值如下表所示。
表5 不同推荐列表长度系统性能评价
推荐列表长度L 50 20 10 5 1 Hits Diversity 从上表可以看出,混合推荐系统中,不同列表长度L下系统性能是相对稳定的。下面的表6给出了混合推荐系统与传统算法在准确度P、召回率R、F和多样性四个方面的结果比较。从该表中可以发现,混合推荐算法比传统算法的准确性方面有所提升。
表6 系统性能评价指标对比
评价指标 准确度P 召回率R F 多样性 10
基于内容推荐 混合推荐算法 提升百分比 % % % % -
从推荐系统的覆盖率指标来看,结果如下图所示。从下图可知,混合推荐系统在覆盖率指标上市明显高于单纯的基于内容推荐系统。
图8 覆盖率比较
结论
本文电影推荐系统采用B/S模式的三层框架设计,分为表示层、业务层和数据层。采用分层结构只要目的是使各层之间相互独立,各层不需要关注别层的内部或者内部实现机制。
个性化推荐系统是当前非常热门的领域,融合了网络和数据库以及算法等技术,在当前随着互联网的普及,网上娱乐要求不断增加,个性化推荐系统具有很大的市场,也具有更多的挑战。如何以最简便的算法和要求为用户找到他们感兴趣的内容尤为重要,这要求不仅要有一个很好的数据模型还有能处理庞大数据的数据库。
本文的混合推荐系统是基于内容推荐和协同过滤推荐的混合推荐系统。这两种算法有各自的优缺点,但是混合后可以体现出两种算法的各自优点,弥补各自的不足,比只使用一种算法效果更好。
11
因篇幅问题不能全部显示,请点此查看更多更全内容