APP下载

基于协同过滤算法的电影个性化推荐系统设计与实现

2015-03-02贾忠涛

软件导刊 2015年1期
关键词:个性化推荐协同过滤

贾忠涛

摘要:随着互联网与移动终端的普及,网络上的电影娱乐信息数量海量增加,用户对电影个性化服务的需求日益旺盛。设计电影个性化推荐系统,该系统基于B/S模式,采用JavaEE体系架构。个性化电影推荐服务能够挖掘用户信息、电影项目信息间隐藏的关联性,从而发现用户的潜在兴趣,将用户可能感兴趣的影视片推荐给用户。

关键词:个性化推荐;电影推荐;协同过滤;JavaEE架构

DOIDOI:10.11907/rjdk.143727

中图分类号:TP319

文献标识码:A 文章编号文章编号:16727800(2015)001008603

0 引言

随着互联网技术的飞速发展,当今社会已进入了信息爆炸时代。便利的互联网和日益普及的移动终端极大地提高了人们的生活质量。网络上供用户观看的电影数量庞大、类型多样[1],从海量的影片资源中找到一部自己喜欢的电影变的越来越困难,海量影片信息的利用率很低。

个性化推荐技术是一种信息过滤的手段,可以挖掘用户的兴趣偏好[2],根据用户的兴趣向用户推荐感兴趣的信息,提供针对用户的个性化服务,解决了信息过载的问题。协同过滤算法是一种应用广泛的个性化推荐算法,能根据用户对项目的评价找出用户与用户之间以及电影与电影之间的相似性,从相似的用户或电影中找到目标的最近邻居,根据最近邻居的信息作出推荐。

搭建一个基于协同过滤算法的电影个性化推荐系统,能帮助用户挑选喜欢的电影,节省用户寻找资源的时间,提高用户的体验,同时还能提高用户和系统的粘着度。同时,用户能快速找到感兴趣的资源,也能减轻一个站点的网络负载[3]。

1 个性化推荐

个性化推荐是根据用户的兴趣特点和购买行为,向用

户推荐感兴趣的信息,帮助用户决定应该选择什么对象,模拟销售人员帮助客户完成购买过程[4]。电影推荐系统则根据用户的兴趣特点和行为,向用户推荐其感兴趣的电影信息[5]。通过建立用户与电影之间的二元关系,根据用户的历史记录发掘用户潜在兴趣,从而针对用户提供推荐服务。如:①根据用户的历史记录,包括用户对电影的浏览记录和用户电影的评价,找出用户的相似用户或者某部电影的相似电影;②针对目标用户,向用户推荐用户可能喜欢的电影。本文电影个性化推荐主要包括热门大片推荐、新片推荐、冷门佳片推荐和关联电影推荐。

2 协同过滤算法

协同过滤算法的基本思想是将兴趣相似用户所感兴趣的信息推荐给目标用户。如音乐推荐、电影推荐等。协同过滤算法分为:基于用户的协同过滤和基于项目的协同过滤[6]。

基于用户(Userbased)协同过滤利用历史数据寻找用户邻居,根据评分相似的最近邻居的评分数据向目标用户生成推荐。其原理为:最近邻居对项目的评分与目标用户非常相似,因此可以通过最近邻居对项目评分的加权平均值来接近目标用户对未评分项目的评分,以最近邻居的已评分信息对目标用户生成推荐。

基于项目(Itembased)协同过滤推荐[7]依赖项目间的关联来决定推荐。根据目标用户已经评价过的项目,计算该项目与其它项目的相似性,选择一系列最相似的项目生成推荐。由于项目间的相似性,对已知项目的评分可以推断出其它项目的评分范围,以已评分项目相似的项目作为推荐。

本文采用基于用户的协同过滤算法实现热门大片推荐,利用基于项目的协同过滤算法实现关联电影的推荐。此外,还可以根据电影的访问与评价情况,作出新片推荐和冷门佳片的推荐。

3 电影个性化推荐系统设计

3.1 架构设计

系统基于B/S模式,架构采用JavaEE体系,整个系统部署在tomcat服务器上。其架构如图1所示。

图1 系统架构

用户UI采用html+css+javascript解决方案。后台采用Struts2,Hibernate和Spring。该架构采用面向对象的分析与设计方法,利用SSH的成熟架构,保障系统高内聚、低耦合的系统逻辑,分层清晰,稳定性好。

3.2 系统功能

电影个性化推荐系统的功能模块分为接口层、业务逻辑层、核心数据层等3个层次。接口层提供对外的服务接口;业务逻辑层实现相应的各种算法和信息管理功能,可分为用户信息管理与电影信息管理两部分;核心数据层存放整个系统的核心业务数据,如计算推荐列表需要的用户信息和电影信息、用户相似度列表、电影相似度列表等。功能模块设计如图2所示。

图2 系统功能模块

(1)用户接口。推荐系统用户接口主要包括查看推荐、注册登录、观看、评分和浏览。新用户注册过程中需要填写基本信息,如年龄、性别、职业等,注册后填写个人兴趣爱好标签信息,用户即可进行正常的评分浏览等操作。随着系统与用户的交互,系统记录用户的信息并逐渐获取用户的兴趣爱好。用户可以对喜爱的电影进行评分,系统将用户的评分和浏览行为存入日志,并调用数据分析引擎对用户的行为进行分析,更新用户存储信息。

(2)电影信息管理。电影信息管理模块包括:分类管理、排行榜、基本信息管理和核心推荐。分类管理和排行榜是为用户挑选自己喜欢的电影而设置,作为电影个性化推荐的补充。常见的排行榜有热门电影排行榜、高分大片排行榜、票房榜等。热门电影根据电影被浏览和观看的记录计算得到;高分大片排行榜从平均评分较高的电影中挑选得到。

(3)个性化推荐算法。此模块是电影推荐系统的核心,利用协同过滤算法计算出用户、电影的近邻数据,存入到数据库中。这些数据是个性化推荐的直接信息来源,例如用户的K个最近邻居、推荐给某个用户的N部电影。当用户的兴趣发生变化时,系统能捕捉到,并重新作出推荐。由于该模块需要大量的计算空间,可设置为线下运行。

3.3 数据库设计

数据库是整个推荐系统的基础。数据库主要包括用户表(users)、电影表(movie)、打分表(rate)、电影类型表(movieType)、类型表(type)、用户相似度表(similar)和电影相似度表(movieSimilar)。其相互关系如图3所示。

图3 数据库设计

用户表(users)存储用户的基本信息:用户名、年龄、性别、职业等。电影表(movie)存储电影的基本信息,包括名字、类型、发布日期等。打分表(rate)记录用户对电影的评分,是协同过滤算法的基础,也是整个推荐系统的基础。电影类型表(movieType)和类型表(type)存储电影的类型,方便用户检索。用户相似度表(similar)和电影相似度表(movieSimilar)通过协同过滤算法计算得到信息,是个性化推荐的直接信息来源。

4 系统运行效果

电影推荐站点负责与普通用户直接交互,收集用户的行为,主要由Jsp和Ajax等技术实现,采用Struts2框架。推荐站点由注册页面、登录页面、电影列表、已评价影片页

面、影片推荐页面和个人信息统计页面等组成。

用户注册后,系统会捕捉用户显式和隐式行为特征,并将这些特征保存在用户的数据库中。系统根据采集到的信息,向用户进行个性的电影推荐。

系统在Windows平台下运行,使用LoaderRunner 9.5进行压力测试,通过模拟50个用户对系统进行20分钟的压力测试,测试表明用户可以在该系统上完成的所有业务,系统稳定。

5 结语

本文针对当前信息过载和用户对个性化电影推荐需求,提出一种基于协同过滤算法的电影个性化推荐系统。该系统采用JavaEE架构,通过记录用户的行为,挖掘用户的潜在兴趣,对用户作出个性化电影推荐。实验结果表明,该系统具有很好的稳定性。本文对于类似个性化推荐技术开发亦具有参考借鉴意义。

猜你喜欢

个性化推荐协同过滤
基于远程教育的个性化知识服务研究
改进的协同过滤推荐算法