基于
协同
过滤
算法
个性化
电影
推荐
系统
实现
收稿日期:2023-03-04第 31 卷 第 6 期Vol.31 No.6北 京 印 刷 学 院 学 报Journal of Beijing Institute of Graphic Communication2023 年 6 月Jun.2023基于协同过滤算法的个性化电影推荐系统的实现司品印,齐亚莉,王 晶(北京印刷学院 信息工程学院,北京 102600)摘 要:在当今这个数据爆炸和流量横流的时代,用户时常面临的问题是空闲的时间想去看部电影,但没有确定的意向而去电影网站查找;这个步骤会浪费很长的时间,甚至最后找不到自己喜欢的电影。本文所开发设计的推荐系统就是为解决当今电影信息过载、用户需求不明确的问题,使用户相比于使用搜索引擎,更容易获得自己感兴趣的电影信息,使得服务个性化更强。系统的推荐算法使用数据挖掘中最丰富稳定的协同过滤算法。关键词:数据挖掘;电影推荐;协同过滤;个性化推荐中图分类号:TP311文献标识码:A文章编号:1004-8626(2023)06-0045-081 问题的提出1.1 研究意义及必要性互联网世界所产生的信息量是前所未有的,其数据呈爆炸式增长。人们对于信息的了解渠道是丰富的,不谈那些传统的信息传播媒介,就互联网来说每天的信息也是无法把握的,正是这些形形色色的信息传播媒介给我们提供了方便,也带来了新的问题 “信息过载”。1“信息过载”一词指的是系统用户难以通过对大量数据进行筛选,找到他们感兴趣和想看到的信息。计算机的发展为用户提供解决特定问题的办法,搜索引擎的出现正是为了帮助解决该问题,但搜索的前提是用户要有相关的关键词,如果用户的需求不清楚或无法描述他们需要的关键词,搜索功能则无法实现。且搜索是一种被动式的检索,是一种有意识有目标的活动,它无法满足用户的无目标的需求,在这种环境中出现了信息推荐板块。互联网系统中最初的推荐板块仅仅只是广泛性的推荐,就是把多数人喜爱的推荐给用户,把能够带来收益的信息推荐给用户,导致推荐内容千人一面、没有特色。这种推荐方式不是好的推荐系统留住消费者的做法。所以需要做出针对每一个人的性格爱好来进行个性化推荐的系统。随着国内经济总量的不断扩大和人们日益增长的文化追求,我国的电影行业已经越来越规范化和商业化了,每年春节档、暑期档、国庆档都十分火爆,即使在疫情状况下,观众对于电影的渴求也是抵挡不住的。无论线上线下,观影用户都有一个同样的麻烦,就是如何快速找到符合自己兴趣的、能够让自己打出高分的电影。与电影院的线下观看相比,线上的挑选更为艰难。截止到 2020 年,国内最著名的视频制作和播放平台之一的爱奇艺公司,仅一家公司的电影数量就达到了 10265 部。如何在海量的电影信息中快速又精确地找到自己看完会觉得好看的电影是一个艰难的问题,用户可能需要去疯狂浏览或询问他人,但往往别人的高分神剧对于自己就是 1 分产物。视频网站为了热度流量收益,推荐的效果往往无法“千人千面”。所以需要数据分析人员和程序设计师研发出可以根据用户本身的信息、爱好、行为等数据合理地推荐出电影作品的系统,使得用户不用再花费一下午的时间停留在寻找电影的阶段。个性化推荐系统就是研究人员为了满足广大用户的特定需求开发出来的,其核心是运用的推荐算法。21.2 国内外发展现状及趋势早在 1995 年 3 月份美国人工智能协会上,Rob-ert Armstrong 就已经提出了一种个性化导航系统Web Watcher,3而“推荐系统”这个概念首次由Resnick 在 1997 年提出,4从此以后均以此作为引用。另外 Group Lens 研究系统为新闻和电影推荐提供了一个基于协同过滤的方案。如今的人工智能、机器学习、神经网络、数据挖掘(DM)等学科的兴起和发展也在不断地加速推动着推荐系统的发展。日益增长的数据信息,使得每一个领域都需要推荐系统,帮助用户更是帮助厂商解决问题。如商品销售领域、电影音乐分享领域、食品信息领域、网上社交领域等等。商品图书推荐:全球著名的网上商城 Amazon(亚马逊)是商品推荐系统的代表,用户在注册页面注册登录后,进入商城的首页浏览,页面初始的板块上部就是“为您推荐”模块。用户浏览完想要购买的书籍后,商城通过计算用户之前的浏览记录和情况,推测会对哪些书籍感兴趣,这些书籍就会出现在推荐模块中,如图 1 所示。另外在商品详情的每个页面都会有“与您浏览过的商品相关的推荐”板块推荐与用户看过书籍相似度高的商品。推荐效果如图 2 所示。这种对用户个人针对性个性化的推荐系统使得亚马逊销售额的 20%30%都源于推荐模块的加持,根据亚马逊的年报得出相似商品的推荐使得那些原本冷门不被人熟知的图书得以销售。5图 1 亚马逊网站的推荐板块 1图 2 亚马逊网站的推荐板块 2 国内关于商品推荐最具代表性的平台是淘宝、拼多多、京东。从开始的必买清单到相似商品,每一个商品的下滑列表都是与之相关的产品并且是根据用户的消费情况筛选出的对应价位的商品。社交网络的推荐:国外社交推荐的佼佼者还是Facebook,相比于国内的微博来说更准确和简单,会推荐兴趣相同的用户,推荐用户最近所关注的内容。微博的推荐更倾向于流量的推送。QQ 的好友推送还会涉及区域、年龄、学校、同一群组中的混合推荐。视频推荐:国外的重型视频播放公司 Netflix同时也是整个电影和视频行业在推荐领域的领军代表,它的许多举措和比赛都强力推动了推荐系统的疯狂发展。在 13 年前它就创办了以增加本系统的推荐准确性为目的的 Netflix Prize 百万美金竞赛,这场比赛也成为推荐领域最具标志性的事件之一,同时也使得这个学术性的名称走进了商业模式。第一季度最后获胜的推荐系统的矩阵分解技术算法也成了整个推荐算法世界的基础。对于整个系统的搭建实现主要的部分就是推荐算法的选取。目前市场上所使用的推荐系统按推荐方式主要可以分为:基于协同过滤推荐、基于物品的内容推荐、基于物品间关联规则的推荐和推荐算法的混合推荐方式。6推荐系统有两个一直难以解决的问题,也是现在市场和科研主要研究的方向,第一个是数据的稀疏性,系统在使用初期对于用户的行为收集还未获得足够的评价与中性反馈;7另一个就是系统的可扩展性,随着时间的增长,用户和资源的增多将会使系统性能变得越来越差,8以至于最后的系统面临无法使用的可能性。1.3 系统实现目标本文的设计目标就是通过了解和使用基础的协同过滤推荐算法和基于标签的混合推荐设计实现一64北 京 印 刷 学 院 学 报2023 年个个性化电影分类推荐系统。基础的功能就是系统在抓取豆瓣电影数据、分析清理存入数据库后,开发形成能够展示电影信息的系统,普通用户注册登录后,可以在系统首页浏览分类电影或通过搜索电影进入电影详情页面,对其书写观看后的评分和影评;系统再根据用户所评分的记录表寻找与之相似的用户,为其推荐相似度大的用户所感兴趣的电影,并在电影详情页推荐与该电影相似的电影。这两种推荐方式分别以基于用户相似度的协同过滤算法和基于物品相似度的协同过滤算法实现。2 协同过滤算法推荐系统算法的选择很多,也是影响系统的推荐精度和用户体验感的主要因素。目前推荐系统上使用的算法有:基于内容的推荐、基于神经网络的推荐、基于协同过滤推荐、基于知识推荐和组合推荐、基于关联规则推荐等。Collaborative Filtering Recommendation(协同过滤)算法已经成为推荐领域的入门算法,同时也是推荐算法中的经典、新型算法所参考的对象。其本身和我们古人说的“物以类聚、人以群分”相通。算法通过提取用户已购买商品的特征,计算各类之间的相似性,然后再对用户精确地推荐所喜好的商品。协同过滤在算法圈也被称为 CF 算法,根据其类别本文研究其 User CF 和 Item CF。本文的个性化电影分类推荐系统算法就是使用 UserCF 和ItemCF 算法来实现两种推荐模块。User CF 的实现过程:每一个算法的实现都需要有数据的支持,基于用户(User-Based)的协同过滤算法第一步就需要依赖数据库中存取的用户行为特征数据和提取的当前用户的行为特征数据,本文的特征就是用户对某电影的评分,通过该特征来寻找与该用户相似度高的其余用户;最后,分析计算出相似度高的用户对其他电影的评分数据来预测该用户可能感兴趣的电影。获得需要推荐用户的历史评分数据矩阵,基于用户的推荐算法需要确定出相似度计算函数,UUR;就是能够通过两个用户的评分矩阵,来计算两个用户之间的相似距离,然后预测用户对其未看过电影的评分然后推荐给用户。所有的协同过滤推荐算法实现过程中,每个算法的最主要的一步就是选择适当的相似度计算函数,现有流行的相似度计算方法第一种是计算 Pearson 相关系数来表示相似性,第二种是基于空间坐标的余弦相似度计算。本文的用户相似度计算采用 Pearson 相关系数的计算,对于电影间没有引入其他特征,所以仅计算电影间的余弦相似度。Pearson 相关系数的计算系统公式如下所示:s(u,v)=iIuIv(ru,i-ru)(rv,i-rv)iIuIv(ru,i-ru)2iIuIv(rv,i-rv)2 公式中结果就是所计算得到 u 和 v 之间的系数值,其中的 i 表示某一部两者都看过的电影。Iu为系统用户 u 的电影评分项集,ru表示用户 u 电影历史评分的平均评分数据,ru,i表示用户 u 对电影 i的评分。同理其中 Iv是系统用户 v 的电影评分项集,rv表示用户 v 历史评分的平均评分数据,rv,i为用户 v 对电影 i 的评分。最后的一个重要阶段就是根据相似值来预测该用户对某些电影的评分值。第一步依据相似值来找到与用户 u 最相似的几个邻居(邻近用户)NU,其中 N 表示相似度高的几个用户组成的邻近集,U 表示系统的所有用户的项集。根据生成的邻近用户集所看过的电影评分数据来预测用户 u 对某个电影 i的评分,计算预测分数的计算公式如下所示:pu,i=ru+uNs(u,u)(ru,i-ru)uN|s(u,u)|公式中 s(u,u)就是上述计算的用户 u 和邻近用户 u的相似度。公式得出的结果就是用户 u对电影 i 的预测评分。Item CF 依赖的思想就是认为能够吸引同一用户的商品肯定会有相似的地方。本系统仅简单计算两电影间的空间余弦相似度。实现过程:第一步需要计算电影之间的空间坐标下的余弦相似度,系统没有引入电影的太多特征,所以此处只是简单计算数量的相似度,如下所示。wij=|N(i)N(j)|N(i)|N(j)|公式中 N(i)表示系统对 i 电影收藏评论的用户数量,N(j)表示对 j 电影收藏评论的用户数量,然后通过相似度计算公式来计算出两电影间的相似距离。通过下面的公式来计算系统用户 u 对 j 电影的预测评分。puj=iN(u)S(j,K)wjirui74第 6 期司品印,齐亚莉,王 晶:基于协同过滤算法的个性化电影推荐系统的实现 其中 N(u)表示系统用户 u 所评论的电影集。S(j,k)表示系统中与 j 电影相似度高的 k 个电影的项集。wji就是上面计算的 j 电影和 i 电影之间的相似度。然后将用户看过的电影与相似度高的电影集的并集进行累加得到对电影 j 的预测评分。最后将计算的数据中的预测评分数据高的电影集推荐给用户。算法模块是每一个推荐系统开发的核心与重点环节,其余功能的模块都是依赖于此模块来完成推荐的。基本的流程为普通用户注册登录本系统后,选择初始偏爱标签,浏览观看自己喜爱的电影并对自己看过的电影进行评分,评分数据会被系统记录到评分表中,用户每次点击都会启动系统推荐模块的计算,根据该用户的评分表和数据库中的评分信息表计算出推荐列表并反馈给用户。分析得出整个推荐系统的实现流程,如图 3 所示:图 3 系统推荐流程图3 系统总体设计3.1 推荐系统架构本文数据集是从豆瓣网站通过爬虫抓取的带有图片的电影信息。经过数据清晰、筛选、填充,保存到 SQLite。用户点击时系统会在后端根据用户的评分数据,经过推荐算法的计算得出推荐列表,实时地存储在用户的在线数据中,数据从后