注:仅展示部分文档内容和系统截图,需要完整的视频、代码、文章和安装调试环境请私信up主。
摘 要
随着电影数量的急剧增加,如何高效判断电影质量,帮助用户尽快其所需求的信息显得尤为重要。本文旨在通过数据分析,探索用户喜爱电影类型规律、电影票房等特征信息。建立预测、推荐模型,对电影运营提出一定可行性的建议,以达到用户对电影网站的黏度,进而促进电影平台的可持续性发展。
本次设计的基于python的电影推荐系统,该系统采用了django框架进行设计,结合了常用的MySQL关系型数据库对系统内产生的数据进行存储,系统内设计了用户与管理员两个角色,用户主要设计了可视化、电影可视化、票房预测、电影推荐、数据管理、退出登陆,管理员设计了用户管理、电影数据管理、用户收藏管理、总票房数据管理、电影票房数据管理等功能,本系统的设计旨在电影运营提出一定可行性的建议,促进电影平台的可持续性发展。
关键词 python;基于python的电影推荐系统;django
- 绪论
1.1选题的背景和意义
随着互联网技术的快速发展与普及,人们开始由原来的去影院观看电影转移为网上观看电影为主,人们主要通过看电影、听音乐、阅读等来减轻生活工作压力,与之而来的就是网络上的大量影片,导致影片数据急剧增加。近些年以来,电影在日常生活中的占有比例越来越高。基于目前这个情况,人们很需要一个快速响应、便携、容易上手的基于Python的电影推荐系统,为用户提供更加丰富的电影和便捷的查询方式,能及时、精准地查找出自己喜欢的电影,实现对电影的收藏,评论转发等。面对那么多的电影信息,我们迫切需要把推荐算法这项技术应用在电影推荐网站里,这样做就是为了使用户能够欣赏更优质的影片,获得更好的体验。同时也可以对推荐算法的发展做出贡献。推荐系统就是解决在大量的信息中获取到用户所想得到的数据的神器,可以给用户带来更好的体验。
基于python的电影推荐系统帮助用户快捷地找到所需信息是信息系统的核心目标之一。然而,由于大量物品需要评价,形成一个稠密的评分矩阵通常是不可行的。此外,在基于邻域的协同过滤中,缺失共同历史行为信息会影响相似度计算,从而降低推荐效果。解决这些问题的一种方法是使用基于模型的协同过滤算法。
基于模型的协同过滤算法可以挖掘用户与物品之间的隐藏潜在信息,从而缓解数据稀疏性问题。它通过建立一个统计模型,对评分矩阵进行分解,并学习隐含因素之间的关系,从而实现预测用户对未评价物品的评分。这种方法不依赖于传统的邻域计算,同时避免了由于缺乏共同历史行为信息所带来的问题。
随着电影的数量几何倍的增长,如何高效判断电影质量,帮助用户尽快其所需求的信息显得尤为重要。本文旨在通过数据分析,探索用户喜爱电影类型规律、电影票房等特征信息。建立预测、推荐模型,对电影运营提出一定可行性的建议,以达到用户对电影网站的黏度,进而促进电影平台的可持续性发展。
1.2研究现状
推荐系统的起来自于上世纪的 90 年代,一开始推荐系统的作用仅仅是作为信息过滤的工具,主要的用处就是用来预测关于用户对事物所产生的兴趣偏好。然后到近年来,随推荐系统的进步,它对网络平台来说越来越重要,业界对这项技术的关注度也在不断地提升。自 从2007年到现在,推荐系统的年会“RecSys”便一直都是推荐系统邻域的最顶尖的峰会,举办方为国际计算机协会。“RecSys” 举办了十多年以来,每一届都会有来自国际著名的院校以及电商公司里的巨头企业牵头参与,并且在大会上会向众人展示许多具有突破性意义的研究成果,使得推荐系统这项技术在学术领域和工业领域里不断地蓬勃发展。在前期因为与信息检索有关的领域的点拨,人们对推荐系统的研究方向主要还是是基于对内容进行推荐,主要是通过对内容进行分析并提取出物品中可能包含的内容,再结合客户对于相关物品的历史行为来对用户的数据进行建模处理,然后将使用用户的兴趣模型和对物品内容的因素进行计算相关性,使用这相关性的数据的大小来向用户推荐物品。因为那个时期的对于数据挖掘技术是有限制的,对于各种各样的模态的信息,比如声音、画面等,其实并不是能够很好地提取出这些事物的特征,因此基于内容的推荐算法并不是一个简单的事情。随后随着业界开始关于其他方面的推荐策略,由于关联规则的限制、基于协同过滤等很多的推荐系统便随之发展了起来,其中最经典的莫过于基于协同过滤的推荐算法。 ///到这
在协作筛选的发展过程中,以使用者为中心的协作筛选方法是最早产生的。这一演算法则,藉由透过使用者过去的生活习惯,来个人化筛选讯息,业内认为这是首个建议系统。随后,随着 MovieLens技术的问世,该技术得到了很大的发展。该系统为用户提供了一个互动界面,来收集户对电影的评分反馈,并通过评分数据帮助系统分析用户之间的相关性,利用与该用户兴趣相近的用户感兴趣的电影来进行推荐。与传统的以消费者为导向的搜索策略相比,人们在网络上对商品的搜索结果进行了分析,并在此基础上对商品进行了分类。像 Youtube, Amazon, Netflix这样的网站已经引进了以项目为基础的协作筛选方法来建立他们自己的推荐体系。针对该问题,在2006年 DeVrics AP, Reinders MJ ,提出了一种以“人”为基础的“物”-“人”-“物”的复合推荐,通过融合多种推荐方法,实现了更好的推荐效果。在普通的电商平台上,商品的数量庞大,而用户能够提供反馈的商品只占了其中的一小部分,这就导致了推荐系统难以获得到用户或者商品之间的关联性;而这正是协作滤波面临的问题。2006年,在 Netflix举行的一次推荐算法大赛中, Koren Bell 等人采用了诡异值分解(SVD)方法,结合协同过滤,使得推荐效果明显提高。
其核心思路是把用户-评分矩阵分解成两个维数比较小的表示用户与商品的隐含特征的矩阵。当该模型被训练为最佳时,对每一个用户与商品进行特征向量的内积,从而得到一个完整的用户-商品评价矩阵。尽管 SVD方法对推荐系统中的数据稀疏性问题有了一定的缓解作用,但是在面对海量的数据时,在计算复杂度上,该算法还是暴露出了明显的缺陷。随后,交替最小二乘法(ALS)的提出,使得矩阵的分解得到了进一步的优化,并且能够进行并行处理,从而提升算法的效率。随着推荐系统的不断发展与演化,其所需的数据量与算法的计算量都在不断增加。面向大数据环境下,面向大规模数据的分布式计算能力能够很好的满足上述性能要求。2015年, ApacheSpark发布了一个基于 SparkMLlib的机器学习算法实施库。本项目拟采用交替最小二乘法(ALS)来降低基于模式的协作滤波算法中矩阵分解所需的计算量,并通过对其进行并行处理,提高算法在 Spark上的运行效率。Netflix利用 Spark的 API,实现了基于 Spark的推荐系统,实现了 ETL,特征工程,模型训练等多种功能。此外, SparkMLlib还为 Netflix的推荐流程提供了模块化的方法,便于对推荐引擎进行扩充。
伴随着我国互联网时代的发展,用户对推荐系统的要求也越来越多样化,仅仅依靠一个推荐算法的推荐系统,无论是在推荐质量还是计算效率方面,都已经不能跟上时代的发展步伐,因此,我国学者一直都没有停止过对推荐系统的研究。
宋文君(11)等人提出的一种新型的混合推荐算法,其在 Netflix上的性能比现有的算法有了4.22%的提升,并且在海量数据下减少了计算量。王全民、谷实等人(9)等人提出了一种基于人群特征和评分信息的混合推荐方法,该方法在推荐效果上优于传统的单个算法。随着大数据技术的不断发展与支撑,我国针对推荐系统的研究呈现出新的发展趋势。2015年俆新瑞(10)等人在 Spark平台上提出了一种基于时间序列的协作筛选方法,实现了模型的动态更新。针对推荐系统的实时性问题,李川和鄂海红(10)等学者提出和设计了一个基于 Storm的实时流计算的推荐系统,并利用 Storm的流式计算模块实现了实时性的推荐运算。在中国的几个大型网络平台上, Spark的计算框架已经被大量地用于推荐系统,例如腾讯就是利用了 Spark的存储特点;在 Spark的基础上,开发出一个全程实时、平行的广告推荐引擎,让用户可以在这个平台上灵活地放置广告并进行精准的宣传。阿里巴巴曾利用 Mahout对推荐函数中的算法进行迭代学习,但因其运算速度慢且难以迭代,阿里最终选择了 Spark代替 Mahout,以解决推荐函数的求解问题。起初, Youku将 Hadoop用于处理海量数据的视频推荐时,因为效率低下,资源消耗过大,最后放弃了 Hadoop, MapReduce来处理海量数据的商业场景。采用 Spark技术可以有效地提高系统的交互性,提高系统的运算效率,降低系统的网络 IO、硬盘 IO等资源消耗。Spark凭借其分布式计算的显著优势,受到了国内互联网各个行业的青睐,为推荐、搜索、广告投放等业务领域提供了更好的服务。
1.3研究内容
(1)本文就基于python的电影推荐系统的实现方案,根据总体的软件研发过程进行了初步调查和研究,以决定该软件是否能够正常实现,技术是否可行,以及系统各功能组件的设计与开发,最终选定所采用的技术及实现方案。
(2)框架是一种由编程人员所提供的一组函数,它可以帮助开发者迅速建立起一个软件体系结构和重用能力,这个平台采用了一个开放源码的框架,可以让开发者更快地建立起一个基础的开发框架,从而降低了开发的困难,提高了网站的安全性和可靠性,并且可以协助开发者进行系统的开发和数据的分析。
(3)管理员对基于python的电影推荐系统资料的运作与管理,不但要有架构规格的限制,还要有特定的基本准则。
1.4论文结构
针对本文的基于python的电影推荐系统安排论文的章节如下:
第一章是绪论。论文的研究背景、意义、研究现状以及论文的结构。
第二章为相关技术问题的探讨。本章重点介绍了基于python的电影推荐系统的发展历史和所采用的技术。
第三章是本课题的目标需求。本章重点介绍了基于python的电影推荐系统的功能和非功能需求,并绘制了用例示意图。
第四章是对系统总体架构的分析。对各个功能模块进行了分区,给出了主要的工作流程,并完成了相应的数据库设计。
第五章是本文的主要工作。本章阐述了基于python的电影推荐系统的基本工作模块及各主要职能。
第六章是本文的主要内容。在此基础上,选取了一些实际应用实例进行了系统的实验研究。
第五章 系统实现
5.1登录
系统内的管理员或者普通用户进入系统都需要通过账号密码输入进行登录,用户根据自己的角色进行选择同时输入正确的账号和密码即可进入系统,实现界面见图5-1。
5.2管理员功能模块
5.2.1用户管理
管理员登录进入系统之后,可以对系统内的账号、年龄、姓名、性别、手机等用户信息统一进行管理,实现页面见图5-2。
5.2.2电影数据管理管理
在电影数据管理界面中首先需要使用script标签引入样式供标签进行调用。查看会员信息依赖于form标签显示会员的信息,在form标签中需要定义好CSS样式才能够让表格正常显示在界面当中,实现页面见图5-3。
第六章 系统测试
当系统开发完成的时候测试是一个非常重要的环节,当基于python的电影推荐系统开发完一个功能之后,需要对功能模块做单元测试,尽早地发现该功能模块的错误。把整个系统开发完成之后,还需要对系统全面进行测试,包括业务流程是否正确和系统信息是否能够增删改查等。
6.1测试方法
软件开发者通常采用的测试方式有黑盒测试和白盒测试。黑箱试验要求将该体系视为一个箱子,无需理解内部的具体实施。软件开发者必须依据其目的来进行测试案例的开发。而对于白箱试验,则要求其在程序和逻辑方面有较深的理解,因此,对于白箱试验而言,其设计目标是完全透明的。
6.1.1测试目的
在完成了初始化的基于python的电影推荐系统后,就是对该系统进行检测,发现 BUG的缺陷,并根据 BUG的反馈,为后续的系统完善和改进奠定基础。
6.1.2测试方法
功能测试又被称为黑盒测试,功能测试根本为从用户观点出发,用功能测试方法进行测试的时候,程序被认为是一个看不见内部的黑盒。测试者不需考虑程序内部的情况,仅需要确定测试用例和结果的是否正确。在黑盒测试方法中包括了等价类划分法、边界值分析法、因果图法、错误推测等。
黑盒测试有一种特殊的测试方法被称为等价类划分法,等价类划分法不用去关注于程序的内部结构,需要专注于需求规格说明书,对输入和输出的要求需要进行分解并加以区别。
错误推测法,基于测试者的直觉进行推算出基于python的电影推荐系统所可能存在的错误,从而设计出能够解决错误的专门方法,错误推测法基本核心思想是列举程序中很大可能存在的错误,根据这些错误选择相应的测试用例。
注:仅展示部分文档内容和系统截图,需要完整的视频、代码、文章和安装调试环境请私信up主。