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

摘 要 随着网络化速度的不断加快,庞大的信息量让人们难以快速准确地获取自身需要的信息。如何从多种多样的电影中获取自己感兴趣的部分,是值得关注的问题。推荐技术是运用普遍的信息过滤技术,它可以从大量的数据中过滤出用户感兴趣的信息,实现个性化推荐的功能。文中首先简述了推荐系统,然后分析了协同过滤算法,最后使用改进的余弦相似度完成系统算法设计。本系统使用Python作为主要开发语言,Pyqt5框架实现系统的UI可视化,MySQL作为系统数据库设计开发了一款电影推荐系统,实现了主动为用户推送信息的功能,为观影者提供了便利,基本实现所需功能。
关键词 协同过滤 ;相似度计算;电影推荐
Design and Implementation of Films Recommendation System Based on Collaborative Filtering Algorithm
Abstract As the speed of networking has developed constantly, people can’t find the information they need fleetly and accurately because of the enormous information. It is a concern that how to get some information you’re interested in form different kinds of movies. The recommendation technology is a widely used which can filter out the interests of the users from a large amount of information. It can realize personalized recommendation function. Firstly, the recommendation system is described briefly in this paper, then, we analyze the collaborative filtering algorithm, finally, the improved cosine similarity was used to complete the algorithm design. This system uses Python as the development language and uses Pyqt5 to realize the visualization of the system. Besides using MySQL as the background database to develop a movie recommendation system, which realizes the function of actively recommendation information for users, provides convenience for viewing, implements the basic function.
Keywords Collaborative Filtering; Similarity calculation; Film recommendation
前 言
互联网的发展在某些程度上为人们提供了便利,但也带来了不少问题,信息超载就是 备受关注的问题之一。人们希望通过娱乐的方式提高对生活品质的追求,观影成为了必选方式之一。当用户观看影片目标不明确时,常常需要浪费很多时间去搜索,才能找到自己喜爱的影片。推荐系统的出现让这种问题变得不再如此棘手。
本文的个性化推荐系统分为显示模块、数据读存模块、数据预处理模块、推荐计算模块和查询模块[1]。模块化的设计让系统的耦合度大大降低,更有利于之后系统的部分功能更新。该系统依据用户、电影、用户对电影的评分以及用户相似度数据,进行协同过滤算法处理,把电影推荐给用户,体现了流行性和个性化的需求。个性化推荐技术在很多领域已有了广泛地运用,我们主要借鉴推荐系统这一特点,实现在电影推荐这一领域的运用。
本文的内容结构如下:
第一部分对本文的研究背景和意义作了介绍,第二部分简述了系统开发所需关键技术,第三部分叙述推荐系统理论及系统设计算法-基于用户的协同过滤,第四部分进行了细致的系统分析,第五部分为系统的具体设计,第六部分是系统的实现,第七部分是总结。
1 研究背景及意义
1.1 研究背景
“互联网+”的数据时代下,推荐系统被不断应用于各行各业已成为一种流行性趋势。同时,由于人们越来关注生活的质感,大家开始更偏向于将观看电影作为消遣娱乐的方式。多数人已经将观影作为娱乐生活中的一部分,观看电影不仅可以放松心情,还是一种增长知识的方法。观看不同类型的电影,可以让人们体验别具一格的人情文化。但网络上海量的电影信息已不能满足人们对它的需求,人们更希望快速地发现符合自己喜好的影片,而不是盲目的查找,想要将节省出来的时间做更有意义的事情。推荐系统则符合了人们的这一要求,主动向用户推送可能会喜欢的电影。类似于高校图书推荐系统,根据读者的阅读行为向其主动推荐书籍。
1.2 研究意义
上世纪90年代初兴起了推进系统的研究[2]。推荐系统涉及科学、管理、统计等多门学科的知识,发展迅速,在信息搜索、网络安全、数据挖掘、电网营销等领域运用广泛[3]。本文开发的系统主要具有三个重要的意义:
(1)从应用需求看[4]:推荐信息不需要用户自己去查找,做到了真正意义上的主动推送。把用户忽略观看的电影推荐出来,引起用户的观看欲。
(2)从技术实现看:该算法实现相对简单,推荐结果较为合理。
(3)从用户角度看:为喜爱观影的用户节省搜索时间,为用户提供便利。
2 关键技术
2.1 开发语言
本文的开发语言是Python。它是一个强类型脚本语言,具有开源性,可进行移植,简洁性高,功能众多[5]。它的一大特点是能够和其他语言一起使用,扩展性高,动态特征明显,交互性灵活。Python语言比较容易理解,代码风格简洁,是初学者的优先选择。
2.2 计算平台
本文使用 Spark作为平台,用于计算。它是一个数据框架,可进行大量数据处理。速度上,能够更加迅速的进行数据分析,并支持多种类型的计算。通用性上,Spark可单独完成分布式任务。此外,Spark支持多种任务,具有高容错性,方便操作。
2.3 Python QT5
Python QT5是常用的框架,跨平台性强,具有扩展性语言模块。可用于GUI可视化操作页面的制作。QT5可生成拓展和宏,允许组件编程。QT5功能完善且附带文档,可自主学习。
2.4 数据库MySQL
MySQL拥有大规模数据中心,可以在不同的表中存储数据,灵活性高,可进行数据库搭建;SQL是一种查询语言,具备源码开放性,管理员可直接下载使用;MySQL体积小,造价低、性能好、灵活性强、安装简单[6];MySQL进行集合函数操作,通过类库形式调用,可与开发语言不同的平台结合使用,跨平台性好[7]。
2.5 Pycharm开发工具
本文的开发工具使用的是Pycharm。它是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。
3 推荐系统基本理论
对网络信息的需求是用户们的初衷,推荐系统在被提出后,在大量用户当中渐渐流行起来。它主要包栝三部分:用户,项目及推荐方法。在用户未向系统提供任何如关键词等具有参考价值的信息时,系统能够主动记录用户进行过的历史操作并记录,经过预先设定的推荐方法进行计算,把认为对用户有用的或者用户自己感兴趣的信息提交系统,方便查看结果信息[8]。例如,用户A预想在一个月内购买某品牌运动鞋,关注了几家鞋类店铺,浏览了运动鞋的销售情况,下次该用户登陆账户时,系统会推荐此类运动鞋供用户参考并选择。
推荐系统发展迅速,每一个阶段都会根据发展需要进行技术上的改进。现阶段,根据对数据的不同操作方式和系统实现形式的差异,主要基于四类推荐:1)人口统计学;2)内容;3)关联规则;4)协同过滤[2]。本文我们运用协同过滤算法,对系统进行设计。
3.1 协同过滤算法简介
推荐系统在时代发展潮流中,有着不可估量的作用,为人们的生活、学习、工作等都提供了帮助。其中,协同过滤算法是使用较多,青睐度较高的。它的关键在于了解正在使用该系统的目标用户的特征,通常指的是相似用户的属性。属性也就是说两用户看待同一个事物,有着相同或相似的喜爱程度。该算法使用K近邻技术实现,要求计算得到的相似用户的数目为个,这些用户按类似程度的高低进行排列[9]。
该算法实现大致分为四部分:一、要获取用户对系统设计主题项目的评分存储数据;二、进行相似度的计算,按相似度的大小排列顺序,选取个作为邻居;三、预计算用户的评分情况,这些被评分的项目一般指的是用户未接触过的事物,因为用户并不一定关注过其相似用户喜爱的东西;四、将第三步的计算结果进行数值大小排序,从结果项目里选取个,推荐给用户。例如,用户A对已观看过的一部电影持8分好评,用户B对这部电影持7分好评,则可以认为二者具有一定程度上的雷同。用户A可以从用户B的观影评分中,找到自己喜欢观看的影片。
3.2 基于用户的协同过滤算法
本文是利用一些具有相同或相似爱好的群体,为当前主体用户进行推荐。以项目作为特征的协同过滤算法,是由数据库中用户对之前项目所评分数预计可能青睐的项目,在用户数明显多于项目数的情况下,可以选择使用[3]。由于本次系统设计主要针对少量用户试运行,所以这里我们先考虑采用以用户属性为特征的算法,只要用户们对某些事物有相同或者类似的喜爱程度,则可以假设他们在其他项目上也有相似的兴趣。以电影推荐为主题进行设计,推荐计算模块需要调用该算法,该算法实现步骤图如下:Python基于协同过滤算法的电影推荐系统设计与实现_第1张图片
(1)生成用户-电影项目评分矩阵
表1 用户电影评分矩阵
I1 I2 …… In
A1 i11 I12 …… I1n
A2 I21 I22 …… I2n
…… …… …… ……
A3 Im1 Im2 imn
A、、分别指代用户、电影和用户对电影的评分。个用户,部电影,有个评分值。依据这些评分数据得出一个评分矩阵。、和分别表示用户A1、A2和An对数据库内电影项目的评分,、和分别表示一部电影获得的所有评分。
(2)相似度计算
本文使用了修正的余弦相似度进行系统的算法计算。这一方法尽量避免了用户自身评价标准的差异性,例如,有人认为评价8分以上就是高的,有的则认为评价6分就是高的。此外,在设计电影评分环节时,添加了“评论内容”这一功能,规避了余弦相似度对评分不能及时作出回应的问题[10]。该方法的计算公式如下:Python基于协同过滤算法的电影推荐系统设计与实现_第2张图片
其中,表示用户,表示和均已评分过的项目,、分别表示、评价得分的平均值。
(3)寻找最近邻居
系统内有很多个用户,要构建主体用户的最近邻居,需知道该用户和系统用户之间的相似度数值大小,计算公式如(1),将这些对电影评分数值放在一个集合中。再从该集合里选出数值相对较高的前个用户,作为最近邻居。
(4)预测评分及生成推荐结果
经过计算找到主体用户的类似群体后,该类似群体观看的电影中存在主体用户未参与打分的影片。如果主体用户想要获得推荐,需要从类似群体的观看影片里选取[11]。全部推荐给主体用户的方案不可取,因此需要从类似群体观看的影片进行预计算数值排名,向用户推荐预测分数靠前的电影项目。预测公式如下:Python基于协同过滤算法的电影推荐系统设计与实现_第3张图片
表示目标用户,表示系统用户,表示未被打分的电影,表示对电影的平均评分,邻居集合用表示,是邻居集合里的一个用户,引用和为了减少评分误差。
4 系统分析
4.1可行性分析
(1)技术可行性
本文所使用的开发语言、开发环境和数据库都采用普遍适用的技术手段,具有可行性。同时,在满足用户需求的基础,代码运行更有效率。Mysql对于使用者来说是开源的,开发者可免费使用,而且它能够存储大量的信息记录,方便系统数据统计与设计。总之,达到了电影推荐系统设计的技术需求。
。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。

论文完整下载地址:》》》》

你可能感兴趣的:(python,协同过滤,算法,电影推荐,毕业设计)