私信我获取源码和万字论文,制作不易,感谢点赞支持。
目 录
1 团队建设
1.1 团队的任务和目标
总体任务:完成对豆瓣电影推荐网页的爬虫,并在此基础上完成推荐电影的系统。
子任务:
(1)对爬取数据进行预处理使用;
(2)使用对数据进行分析;
(3)使用Django完成对系统的设计;
(4)完成文档编写。
目标:
(1)最大程度的完成预期任务,尽全力完善细节,完美实现既定的功能,满足用户需求;
(2)不仅要巩固基础知识,还要学习较难知识,为完成项目做好充分的准备,也为自身求职就业增加竞争力。
1.2 团队制度
(1)实训课准时到教室上课,无特殊情况不可请假;
(2)按时完成老师、组长布置的任务,不拖延;
(3)遇到问题时,相互交流,团结合作。
1.3 团队任务分配
(1) :
团队工作协作,代码督办;
部分代码编写及团队建设、需求分析和总文档的编写。
(2) 、 、 :
后期项目编写及代码测试。
(3) :
部分团队文档编写及全程测试。
1.4 项目进度安排
小组进度安排表
时间 |
进度安排 |
2022/11/22—2022/11/28 |
完成团队建设文档编写 |
2022/11/29—2022/12/05 |
完成需求分析文档的编写 |
2022/11/06—2022/12/12 |
完成对豆瓣电影数据的爬取、预处理及分析 |
2022/12/13—2022/12/19 |
完成对系统设计的代码编写 |
2022/12/20—2022/12/26 |
完成对项目系统的总体测试并加以改进 |
2022/12/27—2022/12/19 |
完成对前期文档的汇总及总报告的编写 |
2 需求分析
现在电影资源[1]是网络资源的重要组成部分,随着网络上电影资源的数量越来越庞大,设计电影个性化推荐系统迫在眉睫。所以本系统旨在为每一个用户推荐与其兴趣爱好契合度较高的电影。本系统包含电影前端展示界面、电影评分、电影收藏、推荐算法的实现。其中实现推荐算法是整个电影推荐系统的核心。
2.1 国内外研究现状
推荐系统被提出并受到大众的关注已有二十多年了。在国外,Goldbery [2]等人员于 1992 年在 Tapestry 垃圾邮件过滤系统中运用了协同过滤思想。2006 年 Netflix[3]举办了改进推进系统大赛,然而这场比赛也催生出了许多其他优质的推荐算法,例如比较有名的当属隐语义模型和矩阵分解。它们为后续的推荐系统发展奠定了重要的理论依据。
在国内,文献对目前比较流行的框架进行分析,Netflix Prize 竞赛提出了基于矩阵分解的二项矩阵分解模型。文献[4]提出了在相似度计算中融入项目类别喜爱度和类别关注度,再对用户进行聚类,最后做出推荐,不仅时间复杂度变低,而且也使得推荐精度进一步升高。
综合来看,推荐系统主要是从优化推荐算法以及推荐算法与实际工程应用相结合等两个方面进行研究,目前常用的有:
(1)基于协同过滤算法的推荐。它是以用户的历史行为信息以及最近邻居为基础进行推荐,也是较早被广泛关注和发展的算法。在某一特定用户或物品的集合内,求出它们的相似度,并获取各自的邻居集合。然后把用户没有使用过的物品推荐给他,同时也去除用户曾经使用过的物品,以避免重复推荐,从而完成整个推荐过程。一些商业系统中,在用户物品信息量比较大的情形下,用户间直接有共同行为的物品数据非常少,会造成共同行为数据比较稀疏的问题。同时,在新用户或者新物品进入业务系统后,由于没有历史行为也会造成冷启动的问题,对此提出了协同聚类算法。协同过滤发展的历史最悠久,到现在依然普遍适用,充分的体现出它的健壮性,而且还得到了普遍的应用,亚马逊、淘宝、京东、爱奇艺等流行的网站中都包含了基于该思想的推荐算法。
(2)基于内容的推荐。从信息检索领域发展出基于内容的推荐方法。主要是通过预先提取物品自身的属性特征,然后根据它们的属性差异来作为数据源进行推荐的。首先为每个用户建立符合自身的特征向量,然后通过这些特征向量计算出他们各自的相似性,再通过相似性筛选出用户各自的邻居集合。因此,这种推荐方式不需要考虑其他用户行为的信息,也即不存在考虑用户对物品评价的因素。正因如此,它的这一优点克服了在推荐过程中会常常遇到的冷启动问题,而且对于数据稀疏方面上也能得到一定程度的缓和,从而实现推荐系统的个性化。
(3)基于关联规则的推荐。关联规则有个“啤酒和尿布”的小故事案例,但是也特别的经典,常常被拿来用作分析关联规则算法的分析,其思想是从数据集中找到项与项的关系,简而言之的理解就是用户购买某个物品的时候,同时也去购买另一个物品的概率。它是对于最大频繁项的求解,通常有Apriori和FP-Growth使用较多。
(4)基于聚类的推荐算法。基于聚类的算法有K最近邻算法,它可以按照用户或物品划分,对于专门来缓解数据稀疏有非常很好的作用。
2.2 研究背景与意义
从信息匮乏到信息过载,人们的生产生活遇到了巨大的挑战。社会各行业均以数据作为研究对象,与此同时也累积了大量具有潜在价值的数据,现今已步入大数据时代。我们进入各种搜索引擎网站亦或是APP[5],在输入关键信息后检索想要得的信息。尽管我们可以通过搜索引擎来获取我们想要的信息,但是对于很多人来说,却并不明确自己需要什么具体的信息。例如当人们进入超市或商店进行购物时,并不太明确自己一定就做好了买什么的准备,而是去了货架、储物柜才知道。通过分析自身的喜好和需求,最终决定买什么。我们身处于一个信息爆炸的时代,让用户在有限的时间和无限的海量信息中去找所需要的信息,就像是大海捞针,这就是大家经常所称的信息过载现象。推荐系统能够为客户提供推荐服务,现在越来越多的科研工作者投入到此领域当中。如何能让这些海量信息自己主动“找上门”,从以前的主动寻找所需物品,变为被动的去接受。因此,这样也就形成了推荐系统的雏形。
现如今大数据越来越火,在生活中的应用涉及到方方面面,相应的分布式存储系统的技术发展也让存储的运行成本控制的很低。分布式计算是将存储在不同服务节点中的海量数据进行运算,达到降低系统对硬件的要求,使得低廉的机器也能满足这种规模方式的计算量,进而发掘出巨大的潜在价值。数据挖掘[6-7]是跨越多门学科的计算机技术,从海量信息中通过预先定义好的方式去寻找所需要的有价值的信息,再通过一定的转换方式格式化为可以理解的信息。机器学习是通过分析大量的用户历史行为数据从中寻找出其背后所隐藏的规律。大数据处理框架比较早的非 Hadoop莫属,其核心技术 HDFS、MapReduce等更是经典。它能将分布于不同机器上的进程协同进行工作,从而形成一个庞大的分布式应用系统,也被许多的软件厂商青睐。为了在海量数据中寻找用户所需的信息,使用传统的寻找方式需要付出巨大的成本,正是在这样的大背景下推荐系统便出现了。它可以让信息更加精准的流向所需要的用户,用户也无需绞尽脑汁在庞大的数据量中毫无头绪的搜集信息。
从刚开始单一化的发展,到现在的多元化发展与应用,在许多行业领域推荐系统都有它的身影,在像淘宝,京东,拼多多等电商网站中显得尤为凸出,为他们的销售业绩作出了巨大的贡献。同样在电影、新闻媒体等领域中,传统的租碟片、看报纸的方式显得越来越难以为继,效率非常低下。比如,在视频领域中国内比较热门的有优酷、爱奇艺等网站都是大家所熟知的。当用户打开网站或者 APP 首页,可以看到各种板块的推荐影片信息,会让用户感到一种很熟悉的感觉,似乎这些 APP 非常智能懂得用户喜好。虽然推荐系统经历了长时间的发展,但其性能仍有一定的提升空间,如何给用户提供高质量的信息推荐,也是目前推荐领域行业大家所一直研究的重难点。在多元化的大信息量的前提下,设计一个满足所有用户需要的高效推荐系统,从而达到具有差异性的个性化,这正是本文所需要研究的。
2.3 功能分析和性能分析
随着电影市场的迅速发展,每天都有大量电影上映.人们都希望可以高效的 在海量电影库中找到自己可能会喜欢的电影,以节省寻找电影的时间。电影推荐系统能给用户带来便利.本系统要实现的是一个面向用户的个性化电影推荐系统。根据豆瓣 Top250 的电影数据集,通过计算用户相似性、电影相似性,实现为用户推荐符合其兴趣的电影。本系统实现的个性化电影推荐系统有以下几点基本需求:
(1)数据集:每个用户所评电影数量要多,尽量广泛涉及大量电影;
(2)推荐算法:推荐效果要良好;
(3)良好的用户交互体验:包括用户注册登录在内的整个 Web 系统,用户可查看电影,收藏电影;
(4)系统要易于扩展和维护。
2.3.1 功能分析
由于国内外电影行业的不断发展,每天都有新加入的观影用户和新上架的影片。如何让用户在规模如此巨大的影片中找到自己喜欢的电影,就必须让系统从被动接收用户请求转化为主动感知用户的信息需求,从而节约用户的时间、增加系统的粘性。本文所设计的电影推荐系统就是以此为目的,让系统主动为用户寻找喜欢的电影。
用户可以分为有目标性的和无目标性的,对于有目标性的用户,他们知道自己想看某部电影,可直接根据用户提供的电影名字进行查询或者模糊匹配寻找电影;对于无目标性的用户,可根据用户静态数据与用户历史行为数据进行数据分析挖掘用户可能喜欢的电影,让系统自动给用户进行推荐预测。
本文设计的电影推荐系统是面向用户的,具有前台业务系统和后台推荐系统。由于推荐系统是依据用户的个性化数据去做推荐,所以用户必须先注册账号,登录成功后才会根据用户的个性化数据自动展示实时推荐、离线推荐、热门推荐以及详情页推荐模块的推荐结果。当用户发生点击事件时,系统还会对该数据进行记录,以此为下次推荐做准备,让系统形成一个闭环。
根据系统的特点,可将功能分为基本功能、个性化推荐功能和数据存储功能三个部分。其中基本功能为用户的基本行为功能,包括用户注册、用户登录、电影搜索、电影评分、历史评分和退出登录功能。个性化推荐功能主要由推荐引擎提供支持,包含离线推荐、实时推荐、热门推荐和详情页推荐四个模块。数据储存[8]功能主要为用户历史行为数据存储和推荐引擎的计算提供支持,使用数据库完成。
(1)基本功能
1)用户注册:本系统只对会员开放,用户登录成功后,方能访问。并且系统
根据用户唯一标示进行电影推荐,所以对新用户提供注册功能。用户进行账号注册时系统会在网页中显示填写账号、登录密码和确认密码的输入框,之后系统会验证用户提交的信息是有效,并返回是否注册成功,注册成功则返回登录页面。
2)用户登录:用户在登录页的相应输入框填写用户名和密码,后台系统接收到用户填写的信息后会进行校验。校验通过,则自动跳转到推荐首页,否则将会提不登录失败。
3)电影搜索:用户在页面顶部的搜索框内输入想要查询电影的关键词信息,系统则会根据用户提供的信息在电影信息里进行查找,将匹配到的电影呈现给用户。
4)电影评分:用户进入电影详情页后,可根据自己的喜好对该电影进行评分。评分值的范围为0-5分,0分为最低分,5分为最高分,以0.5分为一个评分值间隔。
5)历史评分:用户可对自己有过评分记录的电影进行查看,页面会展示相关电影与评分值。
6)退出登录:当用户点击“退出登录”后,则会退出系统,跳转到登录页面。若还想进入系统,就得再次登录。
(2)推荐功能
本电影推荐系统的推荐场景有四种,既有个性化推荐功能,也有非个性化推荐功能。个性化推荐会根据每个用户的不同偏好,为其提供符合各种喜好的影片。非个性化推荐根据所有用户对电影的历史行为,提供评分次数高、评分值高等的相同推荐结果。为了提高用户的交互体验,还提供了实时推荐功能,该推荐模块可在秒级时间内响应推荐需求。
1)离线推荐:离线推荐位于推荐首页,根据用户、电影和上下文等相关信息进行电影推荐,每天只需提供一次推荐结果,推荐的结果具有个性化特点。其推荐的准确率、召回率和覆盖率应有良好的得分值,其是用户对系统粘性的重要保障。
2)实时推荐:实时推荐位于推荐首页,它会根据用户对不同电影的评分,实时的更新此推荐模块的结果。这部分注重推荐效果的实时性,是对当前评分电影的同类型电影进行推荐,必须让系统快速响应用户。
3)热门推荐:热门推荐位于推荐首页,是非个性化的推荐,其对每个用户的推荐结果都一样。这部分的推荐是根据所有用户对电影的历史评分行为进行统计后获得,统计的方式有所有电影中评分次数最多的电影、所有电影中平均得分值最高的电影等。
4)详情页推荐:详情页推荐位于电影详情页,为了避免推荐同类型电影导致用户审美疲劳,此推荐部分不根据电影相似度进行推荐,而是采用基于模型的协同过滤方式进行推荐。
(3)数据存储功能
电影推荐系统应具备电影相关数据、用户相关数据和计算中间结果存储的能力。对于非实时性需求的数据,应采用可扩展、稳定性高的存储平台功能进行保存,例如对于用户历史行为的备份数据。对于实时性需求高的数据,则采用基于内存的软件,以保证其处理速度,例如实时推荐需要的评分数据、供展示层调用的推荐结果。
2.3.2 性能分析
(1)准确性
准确性是推荐系统的重要性能度量指标,拥有较高的准确性从某种程度上预示着模型能很好地预测用户的兴趣。因此,系统如果有较高的准确性,那么就能更加准确的给用户推荐其真正喜欢的电影,提升用户对推荐功能的体验,增强用户对系统的粘性。
(2)实时性
当用户对一电影进行评分后,会触发推荐引擎的实时推荐计算,系统需马上计算出实时推荐结果集,实时推荐耗时越短越能给用户更加的体验。本课题的实时推荐模块在接收到用户对电影的评分数据后,到计算出实时推荐结果集的时间需要低至秒级。
由于定位的用户群体规模较大,所以本系统对性能以及兼容性要求比较严格,
(1)满足大量用户同时登录系统并能成功地运行;
(2)简单人性化的操作页面,易于用户操作,也便于后期维护;
(3)因为系统对数据库依赖性较强,所以数据库需要具备相当高的稳定性和高效性。
2.4 用例图
用例的核心概念中首先它是一个业务过程,经过逻辑整理抽象出来的一个业务过程,这是用例的实质。业务过程是指在待开发软件所处的业务领域内完成特定业务任务的一系列活动。
我们小组所设计的推荐系统主要服务于用户和管理员。
2.4.1 游客和普通用户用例图
从用户角度来看,分为游客和普通用户:游客只能浏览电影信息,而且需要用户登录才可以对电影进行评分,评论等操作,所以游客无法获得个性化定制的推荐电影列表。
对于普通用户,首先需要新用户在系统当中注册user_id,便于系统能够准确识别用户信息,并根据该用户的观影兴趣为其提供独特的推荐列表。
用例图可视化[9]地表达了系统的需求,具有直观、规范等优点,克服了纯文字性说明的不足。借助于用例图,系统用户、系统分析人员、系统设计人员、领域专家能够以可视化的方式对问题进行探讨,减少了大量交流上的障碍,便于对问题达成共识。现通过用例图展现用户与系统之间的交互,游客和普通用户的用例图如下:
图2.1 游客用例图
图2.2 普通用户用例图
2.4.2 管理员用例图
从管理员的角度来看,管理员在系统中具有最高权限,其主要是对用户信息以及电影信息进行维护与管理操作。管理员可以随时添加新电影,以及对电影信息进行删除,更新修改以及检索等,管理员还可以添加、删除、查找用户信息,还可以对用户行为进行管理。
图2.3 管理员用例图
2.5 类图
所设计的电影推荐系统中的类可以大致分为以下几种:Person,User,Administrator, Movies, Rating, Interest, Recommendation。
Person是Administrator和User的父类;Administrator负责管理用户和电影信息;User可以设置自己的观影兴趣并且给电影评分;Movies主要是进行电影信息的管理和更新电影操作;Recommendation系统则是根据用户的兴趣和它对电影的评分,为用户生成个性化的推荐。总体类图如下:
图2.4 总体类图
2.6 系统E-R图
按照数据组织模型[10-11]来组织显示信息的过程需要花费大量的资源,另外设计的工作也是很烦乱,这样造成了工作效率的低下。而E-R方法就很容易来解决这种问题,实体-关系方法简称为E-R方法,此方法所使用的工具为E-R图,实体、实体属性以及实体间关系就组成了E-R图。
本系统E-R图如图2.5所示。共有4个实体,分别是会员、管理员、电影以及电影分类。一个会员可以查询多个电影和电影分类,一个管理员管理多个电影和电影分类。
图2.5 系统E-R图
其中每个实体的属性图如下所示。
管理员实体属性图如图2.6所示。管理员具有编号、账号、密码属性。
图 2.6 管理员实体属性图
电影实体属性图如图2.7所示。电影具有标题、图片、时间、内容属性。