版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于机器学习算法的电影推荐系统设计摘要随着科技进步,大数据时代到了,互联网和移动互联网越来越普及,电影产业也迅速发展起来了,电影数据也越来越庞大,面对如此庞大的电影数据信息,靠人去处理和查找自己想要的电影数据是非常困难的,在众多的电影数据中,用户要是想要查找自己喜欢的电影就显得有些困难,为了满足用户的这一需求,个性化的电影推荐系统研究就显得很有研究价值。然而电影的信息表现的复杂多样,单纯的靠一些简单的推荐算法实现推荐系统效果都不是很好。机器学习算法能够对电影数据进行深度学习和分析,结合各个算法优点进行电影推荐系统开发。本次开发的电影推荐系统使用了协同过滤算法的基于用户协同过滤推荐算法和基于物品协同过滤推荐算法解决系统冷启动问题和数据稀疏性,同时,还能够对系统的评分进行评分预测,通过用户历史行为记录使用推荐算法推荐出用户喜欢的电影,相比于其他的推荐系统有一定的优势。运用协同过滤推荐算法开发出了更切合实际和更高效的电影推荐系统。本文主要介绍了系统协同过滤推荐算法的实现过程,对系统需求进行了一个客观的分析,还详细的介绍了系统功能架构设计,功能模块和数据库的详细设计以及数据集的由来。关键词:电影推荐系统;协同过滤算法;基于领域推荐;评分预测;个性化服务目录1.绪论 .绪论1.1研究背景及意义1.1.1机器学习机器学习是一门比较复杂的学科,涉及广泛,涉及到了概率学、统计学、线性代数、高等数学、脑科学和计算机算法复杂度等学科领域。是专门研究计算机如何通过学习模拟或者实现人类学习经验来优化计算机算法的研究和技能等学科。机器学习算法也是人工智能和大数据挖掘中比较核心的技术,机器学习不断通过学习经验和数据来改进算法,让计算机在大量的数据中学习到规律,自动建立模型模拟经验并预测,且学习的越多越久,预测的就越准确。机器学习算法的由来最早可以追溯到十七世纪,贝叶斯、拉普拉斯、关于最小二乘法的推导和马尔科夫链,这些技术的广泛使用给机器学习算法打下了坚实的理论基础。二十世纪五十年代,艾伦·图灵提出机器学习概念直到二十一世纪初,机器学习才有了很大的进展,机器学习的发展可以分为两个阶段:浅层学习和深度学习。二十世纪八十年代,由于推荐算法的出现,基于统计模型的机器学习得以迅速发展。浅层机器学习是一种机械式的学习方式,是被动地学习过程,这种基于统计的机器学习算法比起基于人工规则的系统有很大的优越性。到了九十年代,各种各样的浅层机器学习模型相继被提出,例如支撑向量机、Boosting机器学习算法,最大熵算法等。这些算法的提出,给机器学习算法打下了很好的理论基础[1]。2006年,加拿大多伦多大学教授、机器学习领域的泰斗Hinton和学生在Science上发表了一篇文章,开启了深度学习领域的研究热潮。深度学习可以让拥有多个处理层的计算模型来学习具有多层次抽象的数据表示,深度学习能够发现大数据中的复杂的数据结构,深度学习利用神经网络算法(BP算法)来处理这个过程,BP算法能够指导计算机如何从前一层获取误差改变本层的内部参数。目前,机器学习仍然是人工智能和大数据挖掘的热门核心技术,不论是理论知识还是实践经验都还有很大的进步空间,是非常值得研究的一个课题。目前大数据与人工智能研究的机器学习任务主要包括分类、回归、聚类、排序、密度估计和特征降维等。1.1.2电影推荐系统随着信息时代的到来,互联网技术的迅速发展,计算机网络也成为人们生活中不可缺少的一部分,随着互联网的飞速发展,计算机网络技术的不断成熟,网络上各种复杂的信息呈现爆炸式的和指数型的增长,每天都会有数以亿计的数据涌现。进入到大数据的时代,数据信息庞大,数据多样化和复杂化,因此,人们每天都能接触到各种各样的信息,面对如此庞大和复杂的数据量,而人能处理的数据和信息是有限的,这就造成了一个问题--信息过载。信息过载是指社会信息超过了个人或者系统所能够接受、处理或有效利用的范围,并导致故障的情况[2]。信息过载是当今互联网大数据时代面临的一个大的难题。人们面对信息过载问题,总结出了两个可行的办法。第一个办法就是使用分类目录,这种方法是根据事物的特征或者人的认知与习惯为基础,将商品按照人们的认知与习惯分成不同的种类,人们可以按照商品种类去查找自己想要的东西,这个方法使用广泛,现在仍有很多人使用。但是,随着互联网发展,大数据时代的到来,面多当今社会如此繁多且复杂的数据,分类越来越复杂,分类的层次也越来越多,这就大大增加了查找信息的难度。这就催生了第二个方法就是搜索引擎的出现,当拥有几十亿兆比的庞大的数据量时,我们是很难能够去一一浏览去找出我们要查找的信息,这时候就需要搜索引擎了,有了搜索引擎我们就能够根据自己描述的关键词去查找我们需要的信息,但是使用搜索引擎的检索是被动地,当我们无法得知关键词就很难找到要找的信息,且不同用户之间的需求差异大,当用户量大,以及需求复杂且差异性比较大时,搜索引擎就很难满足用户的需求。随着科学技术进步,为了解决这个问题,又出现了推荐系统。推荐系统的出现很好的解决了上述两个方法的不足,推荐系统不需要分类的信息和用户输入关键词查找,它通过用户的个人信息,性别、年龄、爱好、地理位置、浏览记录、商品信息、商品的相关收藏、以及对商品的评分、评价等信息构建一个推荐模型,向用户推荐相关的商品或者信息,亦或者根据热门,大众喜爱的东西,浏览以及点击量最高的商品或者信息向用户进行推荐。推荐系统在当今时代是一个比较热门的话题,特别是进入到web2.0的互联网信息时代推荐系统更是在实时资讯,新闻,电影,音乐,图书,博客,电商等web站点中都有大量的应用。通过使用推荐系统,可以很好的解决信息的过载问题,同时,当用户使用推荐系统且使用的时间越长,越能完善用户兴趣模型,越能向用户推荐满足用户个性化需求的产品,减轻了用户的负担和简化了使用,从而越能提高用户使用的满意度。不仅能提高用户的满意度,还能为这些站点带来更多的收益。近年来,影视戏剧文化产业蓬勃发展,很多关于影视的网站以及影视软件应运而生,比较知名的有腾讯视频,优酷视频,爱奇艺视频,土豆视频等等影视网站和软件,这些软件都使用了电影推荐子系统。这些影视剧网站使用电影推荐系统,能够将庞大的电影资源推荐给用户,有些东西或者物品可能没有打分或者被访问浏览而不能够向用户推荐,这就涉及到推荐系统的冷启动问题,使用推荐系统向用户推荐他们感兴趣的东西也是一个非常有用的运营方式。1.2国内外研究现状1.2.1推荐系统发展历程推荐系统的兴起与互联网的发展息息相关。“推荐系统”这个概念最早是由Resnick在1997年提出,这个叫法也被广泛采用和一直被沿用到今天。历史上将推荐系统的研究推向高潮的事件是Netflix百万美金大赛。2006年,Netflix宣布将一百万美金奖励给能将推荐算法的准确度提高10%以上的参赛者作为奖励。这一举措鼓励很多人对推荐算法的研究,使得大量的推荐算法出现。2018年,在举办的SIGKDD大会上,极具影响力的SVD++模型被评选为TestofTimeAward,这个算法也被很多人使用。推荐算法发展至今,越来越多的研究机构和企业投入到对推荐算法的研究,特别是大数据时代,推荐算法更是特别重要的科学技术。很多大型的互联网公司,例如百度,Google,雅虎,YouTube等大型互联网企业都对推荐算法投入了很大的研究。这些公司不仅利用搜索引擎搜索记录得到模型,同时,还训练用户爱好模型,向用户提供满足其需求的内容,不仅大大提高了推荐的准确率,还能满足用户的个性化需求,提升用户满意度。1.2.2国内外研究状况随着互联网的发展,人工智能和大数据挖掘成为当今时代的热门技术,推荐系统也越来越被广泛地使用,可以说已经渗透到了我们生活的方方面面,在社交网站、电子商务推荐平台、图书网站、音乐网站等互联网平台领域都使用到了推荐系统。=1\*GB2⑴社交网站Facebook是世界排名领先的社交网站,其创始人是马克·扎克伯格,Facebook拥有约近十二亿用户,2020年7月,福布斯2020全球品牌价值100强发布,Facebook排名第五。Facebook是社交网站的代表,也是运用社交网络数据进行相关内容推送,比如里面的好友推荐界面,其实是根据用户现有的好友以及用户的行为记录给用户推荐新的好友。关于内容方面,Facebook会优先推荐促进朋友和家人之间对话内容,或者相关话题内容,优先推荐一些热门内容,会根据人们“点赞,评论,参与度”等算法权重进行推荐。=2\*GB2⑵电子商务平台“淘宝”是国内最具有代表性的电子商务平台,打开电脑端淘宝网页,登录或者注册自己的淘宝账号,就可以看到淘宝网页的“猜你喜欢”模块,猜你喜欢模块就是根据你的浏览记录或者收藏购买记录等行为,生成一个推荐你感兴趣的商品模块,推荐一些你感兴趣的商品,如图1所示。还有一个“你可能喜欢的店铺”推荐,也是一个推荐模块,这些推荐模块能够推荐给用户他们感兴趣东西,激发他们购买欲望,这也给淘宝带来了很大的潜在收益。图1淘宝猜你喜欢模块图2淘宝推荐好店模块国外也有一个大的电子购物平台,就是Amazon,Amazon是国外电子商务购物的推荐系统代表,当我们登录Amazon我们也会看到一个根据用户需求形成的“为您推荐”模块,这样的推荐给Amazon带来了巨大的交易量。 =3\*GB2⑶短视频网站说到推荐系统不得不说近年来很火的短视频软件,如抖音短视频,微视,火山小视频,快手等短视频软件的出现,让信息获取变得更加方便快速了。用户可以随时随地拍视频并且上传到短视频平台中,同时,用户也可以浏览这些视频,例如抖音,抖音会有一个热门的个性化的推荐,推荐热门视频或者关联的信息给用户,当用户使用久了,浏览和点赞评论的视频多了,抖音还会进行一个推荐,即推荐相类似的视频给用户。这些都是基于推荐系统实现的。不仅仅是国内的短视频软件使用了推荐系统,国外短视频软件亦是如此,例如比较知名的国外短视频软件YouTube。YouTube是世界上最大的视频共享网站,用户可以在YouTube里上传、浏览和共享视频,同样的,YouTube也有使用到推荐系统,不仅仅是YouTube使用了推荐算法,Yahoo,Vimeo,DailyMotion等国外短视频软件都有研究推荐算法和使用推荐系统向用户进行推荐内容。=4\*GB2⑷音乐网站国内非常受欢迎的音乐软件有网易云音乐,QQ音乐,酷狗音乐,打开网易云音乐,登录app我们可以在app的前端界面非常明显的看的个性化推荐,如图,“个性化推荐”会根据用户的听歌曲风生成推荐列表向用户进行歌曲推荐,“推荐歌单”中的每日歌曲推荐也是根据用户的听歌兴趣生成用户喜欢听的音乐列表,不仅实现个性化推荐,同时还会有实时热歌的推荐,歌曲曲风推荐等。图3网易云个性推荐模块图4网易云每日推荐模块基本现在所有的推荐系统都是由前端web页面、推荐算法、后台日志系统组成,其中最核心的就是推荐算法。目前常用的算法有:协同过滤算法、基于内容的推荐算法、基于关联规则的推荐算法以及混合推荐算法。基于内容的过滤算法是根据信息资源和用户兴趣的相似度来推荐商品。能推荐新项目或者冷门的项目,使推荐系统不受冷启动和数据稀疏问题的影响。其实搜索引擎就是基于内容的检索,该算法在国外的主要应用有Pazzani等人设计的Syskill&Webert系统。1.3论文的主要内容本文的研究内容是采用机器学习算法并将机器学习算法运用到电影推荐系统,本次研究的课题核心是研究机器学习算法,掌握算法原理及如何使用,将协同过滤算法运用到电影推荐系统,实现向用户推荐他们感兴趣电影。1.4论文的组织和结构第一章:绪论。主要阐述了基于机器学习算法的推荐系统的研究背景及意义,对机器学习和电影推荐系统做了介绍,以及推荐算法研究意义,对推荐算法的实用性,发展和国内外研究状况做了介绍。第二章:推荐算法概述。第二章主要对现有的一些推荐算法做了分析和介绍,主要包括协同过滤算法,基于内容推荐算法,基于标签推荐算法和混合推荐算法。同时,还介绍了系统使用的基于用户协同过滤算法和基于物品推荐算法,对这两个算法做了详细的分析和介绍,还介绍了算法的评测指标。第三章:实验设计及系统实现相关技术研究。本章主要是对实验环境,实验数据集,实验设计做了详细的阐述。介绍基于机器学习算法的电影推荐系统的Python语言环境,Django框架技术和MySQL数据库技术做了介绍与分析。第四章:推荐系统设计与实现。对基于机器学习算法的电影推荐系统做了大概介绍,对项目进行了详细的需求分析,用户功能需求分析。对系统总体架构设计做了详细描述,详细介绍了系统的登录注册模块,电影评分模块,电影分类模块,基于用户推荐算法推荐模块和基于物品推荐算法模块等。对数据库中的数据及表结构和内容做了简单阐述与分析。第五章:总结与展望。第五章主要是对系统的开发与设计做一个总结,回顾整片论文的研究过程以及对系统和实验的不足之处提出意见。推荐算法概述2.1推荐算法简介2.1.1协同过滤推荐算法协同过滤算法是推荐系统中比较著名且常用的推荐算法,它基于用户的历史行为数据的挖掘与分析,得出用户的喜爱偏好模型,并根据数据向用户推荐相关的产品。实现协同过滤算法主要有两个步骤:=1\*GB2⑴收集用户的历史数据;=2\*GB2⑵根据历史数据找到相似的用户或者物品。其实现主要有以下方法:=1\*GB2⑴根据拥有相同爱好用户集进行推荐;=2\*GB2⑵根据用户喜欢的物品推荐相似或者相关物品;=3\*GB2⑶以上两种条件相结合使用实现推荐。因此可以得出协同过滤算法主要有两种,基于用户的协同过滤算法,以及基于物品的协同过滤算法。在现实生活中或者开发中具体使用哪一种协同过滤算法与实际的使用场景密切相关。当用户的数据量远远大于物品的数据量时用基于物品的推荐算法,基于用户推荐算法虽然实现简单但是当用户量过于庞大时算法的复杂度也随之增大,新用户的冷启动问题以及数据的稀疏性容易导致效率与伸缩性的不足。所以基于用户的推荐算法适用于用户交互性强或者用户数量相对稳定的推荐系统,常与其它推荐算法结合使用。基于物品的推荐算法是推荐算法的主流,推荐算法的基础都是以该算法为基础,其使用广泛,很多著名的视频网站如,爱奇艺,腾讯视频,优酷,YouTube等大型视频网站都有使用该推荐算法。该算法通过计算物品的相识度代替计算用户的相似度进行推荐,适用于物品数少于用户数量的推荐系统。其实现原理是向用户推荐和他们之前购买过的物品相似度很高的物品,比如,该算法会因为你购买过《python编程从入门到实践》而给你推荐关于Python相关或者编程相关的书籍。2.1.2基于内容推荐算法基于内容的推荐算法是在推荐引擎出现之初应用最为广泛的推荐机制,它的核心思想是根据推荐物品或内容的元数据,发现物品或者内容的相关性,然后基于用户以往的喜好记录,推荐给用户相似的物品。基于内容的推荐算法可以充分将项目内容和用户本身的诸多特征联系起来,比如一部电影的演员、导演、类型、用户的性别、年龄、职业、电影的信息、评论、收藏信息等。基于内容的推荐算法的原理思路简单,其原理的思路主要分为三步:=1\*GB2⑴为每一个物品抽取一部分特征或者内容构建物品属性集合;=2\*GB2⑵对每一个用户构建一个喜好的数据集,来学习出用户的爱好模型;=3\*GB2⑶通过上诉步骤生成一个用户与物品相结合的推荐列表。基于内容的推荐算法可以很好的解决冷启动的问题,只要根据用户的历史元数据就能够形成推荐列表向用户推荐相关的产品。2.1.3基于标签推荐算法基于标签的推荐算法适合用于标签系统,该类系统是基于用户的标签,其中用户的标签蕴含了很多用户的信息,用户群,用户的爱好,兴趣等,可以根据用户经常使用的标签向用户推荐相关标签的东西。比如豆瓣的电影标签、书籍标签,网易云音乐的音乐标签,bilibili视频标签等都使用标签作为媒介,构建推荐系统。2.1.4混合推荐算法混合推荐算法就是运用多种推荐算法配合起来进行推荐,这样子可以避免单个算法出现的问题更好的实现推荐,提升推荐的质量和用户体验。在推荐系统发展史上,最有名的利用混合推荐算法提升推荐效果的例子莫过于Netflix在2006年启动的100万美元的NetflixPrize竞赛,这个竞赛的冠军在3年后的2009年被三个团队合并后的新团队Bellkor'sPragmaticChaos利用原来各自团队算法的优势将各自的算法整合起来(利用GBDT模型组合超过500个算法模型)而获得,这种整合的方法就是一种混合推荐算法。对于混合推荐算法的过程图解如下:图4混合推荐算法的推荐过程图混合推荐算法在工业级推荐算法中是非常实用的一个推荐算,实用不同推荐算法配合实用进行推荐,这就能够避免很多算法在推荐系统中的不足,比如冷启动问题,数据稀疏性问题,马太效应,灰羊效应,稳定性和可塑性等问题,使用混合推荐够结合各种算法的特点,扬长避短,更好的提升系统性能和用户满意度。2.2系统实现算法介绍2.2.1基于用户的协同过滤推荐算法介绍基于用户的协同过滤推荐算法(UserCF)是最早提出来的推荐算法,可以将算法拆分成两个步骤,第一个就是要找到与目标用户兴趣相似的用户集合,另外一个步骤就是找到这个集合中用户喜欢的电影并向用户推荐的相似的电影。uvN(u)uN(v)曾经评价过的电影集合。u和v的兴趣相似度:(1)这个公式计算的兴趣相似度比较低,所以使用改进的计算用户兴趣相似度公式:(2)该改进过的基于用户的协同过滤算法记为UserCF-IIF式(2)。i表示用户u和用户v都有反馈的电影集合,N(i)表示对电影i有过反馈的用户数量,通过分子惩罚了两个用户的兴趣列表中包含热门电影而对他们相似度产生的影响,即分子部分表示用户u和用户v有正反馈的电影数。针对用户u找到其最相似的K个用户,产生N个推荐,对用户u在用户相似度中找到与其相似度最高的K个用户,利用如下公式计算用户u对物品i的兴趣相似度:(3)其中S(u,K)包含和用户u兴趣最相近的K个用户,N(i)是对电影有过历史行为的用户的集合,wuv表示用户u和用户的v相似度,rvi表示用户v对电影i的兴趣度,vi的评分。最后计算出用户u对每一个电影的感兴趣程度,然后根据感兴趣程度从高到低确定N电影推荐给用户u,TOP-N推荐。2.2.2基于物品的协同过滤推荐算法介绍基于物品的协同过滤推荐算法(ItemCF)是计算物品之间的相似度,推荐给用户那些和他们之前喜欢的物品相似的物品。基于物品的协同过滤推荐算法是通过分析用户的历史行为数据计算物品之间的相似度。本系统是通过用户观看的电影记录找出相似的电影推荐给用户。利用如下公式计算物品i和物品j的物品相似度:(4)物品相似度计算公式(4)改进:由于上诉公式在物品j很热门时,其权重就会很大,接近于1。因此,上诉公式计算出的目标物品与任何物品之间的相似度都会很大,不适用于挖掘长尾信息推荐系统。为了避免这一问题,改用下面改进物品相似度公式:(5)这个公式惩罚了物品j的权重,减轻了热门物品与其它物品相似的可能性。公式(5)只是解决了热门物品与其它物品相似性,但是在实际的运用中使用此公式可能增加活跃用户喜欢的物品相似度,使用进一步改进的物品相似度计算公式:(6)公式(6)(记为ItemCF-IIF)就惩罚了活跃用户,此公式能够修正活跃用户的喜欢物品的相似度。其中,公式中表示喜欢物品i和物品的j用户,N(u)喜欢的物品数。针对用户u找到和用户u历史记录中喜欢的物品的物品相似集合,以下是计算用户u感兴趣的物品相似度公式:(7)puj表示用户u对物品j的感兴趣程度,S(j,K)表示的是物品j最相似的K个物品的集合,N(u)表示用户u喜欢的物品集合,wij表示物品i和物品j的相似度,vi的评分,rui表示的是用户u对物品i的兴趣程度。物品相似度越接近则排名越高,越有可能被推荐。2.2.3相似度计算相似度计算是协同过滤算法的核心,只有计算出用户与物品之间的相似度才能生成推荐列表,计算相似度主要有以下几个方法:=1\*GB2⑴余弦相似度在n维空间中,任意两个向量之间的夹角的余弦值大小即代表这两个向量的相似程度。余弦值的取值范围为[-1,1]。假设n维空间中存在向量i和向量j,式(8)为计算其余弦相似度的公式。(8)=2\*GB2⑵欧式距离欧式距离是计算距离的一种算法,也叫欧几里得度量,指在求n维向量空间中两个点的距离。假如空间中存在两个向量点M和N,欧式距离计算公式为:(9)=3\*GB2⑶皮尔孙(Pearson)相关系数假设存在两个向量J与K,这两个向量间的皮尔森相关系数计算公式如式(10)所示:(10)=4\*GB2⑷曼哈顿距离在平面上,坐标(x1,y1)与坐标(y1,y2)的曼哈顿距离为:(11)2.3算法评价指标2.3.1TOP-N推荐评价指标=1\*GB2⑴召回率 对用户u推荐N个电影记为R(u),使用户u在测试集上喜欢电影为T(u),召回率描述是有多少比例用户-电影评分记录是包含在推荐列表中的,召回率求解公式如下所示:(12)=2\*GB2⑵准确率准确率是计算推荐列表中的用户-电影评分记录发生的概率准确性:(13)=3\*GB2⑶覆盖率覆盖率反应了推荐算法发掘数据能力:(14)分子表示被推荐给用户的电影数量,分母表示数据集中所有电影数量。2.3.2评分预测评价指标=1\*GB2⑴为RMSE,即均方根误差,其定义:(15)x表示预测值,y表示实际值。=2\*GB2⑵MAE,即平均绝对误差,其定义为: (16)实验设计及系统实现相关技术的研究3.1实验设计与结果分析3.1.1实验环境本次课题的实验环境如表1所示:表1实验环境表处理器Intel(R)Core(TM)i7-7500U2.70GHz2.90GHz内存8.00GB操作系统Windows10专业版软件PyCharm2020.1x64,postgresql,Notepad++编程语言Python,html,css,vue使用框架技术Django3.1.2实验数据集 本次实验的数据集来源于Movielens网站()。MovieLens是明尼苏达大学群伦斯研究公司经营的一个研究网站,是一个非商业性质的、以研究为目的的实验性站点,这个数据集经常用来做推荐系统,机器学习算法的测试数据集。MovieLens网站提供了大量的MovieLens数据集,很多推荐系统实验数据都是从这获取,至今该站点对外公布了100k,1M,10M三份数据集,本项目使用的是MovieLens1M数据集,包含6000个用户在近4000部电影上的1亿条评论。采用这份数据的原因主要考虑了以下几点因素:其一、100K数据集有1700部电影,1000名用户的100,000个评分,发布于1998年,年份比较久远,数据时效性不是很好和价值不是很大,数据量少在实验过程中容易发生偶然性,影响实验数据的准确性所以为了减少偶然性发生,提高实验精准度需要更多更有代表性数据。其二、如果使用10M数据,数据量过于庞大,处理起数据时会比较麻烦,加大工作量,而且实验使用的硬件设备无法完成如此大的数据量处理容易造成系统卡顿或者卡死,内存不能够存储那么大数据量。因此,不能使用大量的数据集做实验。最后,经过多方面的考量1M的数据集的数据量是最适合用于实验的,而且1M的数据集包含了关键算法需要用到的数据,下面简要介绍这几个文件:Movies.dat(电影数据):提取的电影数据是一个三元组(电影id、电影名、电影类型),其中电影类型包括动作、冒险、动画、儿童、纪录片、戏剧、喜剧、恐怖、音乐剧、浪漫、惊悚、科幻等电影主题类型。Ratings.dat(评分数据):评分数据主要是包含了用户的id和时间戳。Users.dat(用户数据):用户数据是一个五元组(用户id、性别、年龄、职业id、邮编)。通过MovieLens下载好实验需要的数据,然后对数据经过整理预处理之后,便可以运用到实验中。3.1.3实验设计将1M数据集随机分为10份,其中的6份为训练集,另外的4份为测试集。在训练集上建立用户行为数据模型,在测试集上进行实验测评,并统计测评结果。由于本系统使用的是评分预测和TOP-N推荐,对协同过滤算法准确率、召回率和覆盖率进行评估和比较分析,协同过滤算法还对评分预测和TOP-N推荐做进一步检验和改进。分别取不同的推荐电影数目(N)计算准确N取多少时推荐算法的性能相对最好,1条,10条,20条,30条,40条。UserCF和UserCF-IIF算法进行对比实验,得到的对比所示:图5UserCF和UserCF-IIF算法准确率比较图图6UserCF和UserCF-IIF算法召回率比较图图7UserCF和UserCF-IIF算法覆盖率比较图由三张对比图可知,准确率随着电影的数量增加准确率降低,召回率随着电影的数量增加而增加,覆盖率增长,根据实验结果可知选择N=10时的推荐效果是最好的。从对比图可知改进的UserCF-IIF的准确率,召回率和覆盖率都比原来的好。对ItemCF算法和ItemCF-IUF算法的准确率,召回率和覆盖率做对比,对比数据如下表2所示:表2ItemCF算法和ItemCF-IUF算法的准确率,召回率和覆盖率对比表算法准确率召回率覆盖率ItemCF0.26640.08290.4752ItemCF-IUF0.26970.10020.4956根据对比表可知改进的ItemCF-IUF算法优于ItemCF算法。经过不断的实验验证,然后对比数据,根据数据可知算法的准确率和召回率还是很好的,为了检验对评分预测和TOP-N的推荐效果,分别对UserCF-IIF,ItemCF-IUF算法的准确率(准确率取平均值)做比较,算法指标采用MSE,MSE越小,准确率越高说明算法推荐效果越好。看看算法的实际效果。表4三种算法优势对比表算法UserCF-IIFItemCF-IUF准确率0.292710.41066MES1.07631.0185根据图中的两种算法的准确率和MES的对比可以看出ItemCF-IUF算法的推荐的准确率要高于其它两个算法和MES数据是最小的,推荐效果也是最好的。3.2系统实现技术研究基于机器学习算法的电影推荐系统的开发与设计主要包括web前端技术,数据库技术与原理,机器学习推荐算法的实现,系统开发技术如表5:表5系统开发技术表技术类型技术名称推荐算法开发语言Python前端开发语言HTML,CSS,JqueryWeb框架Django数据库mysql数据库3.2.1Python语言研究PythonGuidovanRossum科学研究所设计出来的,是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。CJava等其他编程语言,Python能让开发者很轻松的用几行代码就能实现一个功能完善的程序。详细说来,Python语言的优势有以下几点:易于学习:Python相对其他语言比如C++来说关键字较少,并且语法简单,这种特性可以让开发者轻而易举的上手。易于阅读:Python严格控制代码缩进,使读者能够更加清晰的阅读代码。面向对象:Python和Java类似,存在一个介于源代码文件和二进制代码文件之间的字节码文件,更有利于项目在不同的平台间移植。丰富的库:Python拥有大量且丰富的标准库,可以减少很多不必要的代码,也可以更高效的对数据、图像进行处理。跨平台且开源:Python可以跨平台运行,并且开放源码超过20年,能让开发者更加深入的了解Python的机制。3.2.2Django框架技术研究Django是一个由Python写成的开放源代码Web应用框架,可以用于交互式网站的开发。Djang采用了同springMVC相同的软件设计模式MVC模式,M(Model)代表模型,V(View)代表视图,C(Controller)代表控制器。它们各自的职责如表6所示:表6职责表层次名称职责模型,数据存储层处理与数据相关的事物,比如存取数据、验证数据合法性视图,视图表现层用于封装结果,生成页面展示的html内容控制器,业务控制层接收请求,处理业务逻辑与Model和View交互返回结果相比于使用Flash框架Django是一个更好的选择,Flash框架只能实现一些简单的功能,但是遇到复杂的功能还是用Django更好,原因是Django拥有强大的第三方插件,可以用简单的方法实现系统功能:用python的类继承,几行代码就可以拥有一个动态的数据库操作API,实现复杂的功能。作为一个开源的框架技术Django有以下优点:=1\*GB2⑴强大的数据处理:能执行SQL语句。=2\*GB2⑵自带的强大的后台功能:几行代码就让网站拥有一个强大的后台,轻松管理内容。=3\*GB2⑶优雅的网址:用正则匹配网址,传递到对应函数。=4\*GB2⑷模板系统:强大,易扩展的模板系统,设计简易,代码和样式分开设计,更易管理。=5\*GB2⑸缓存系统:与memcached或其它缓存系统联用,表现更出色,加载速度更快。=6\*GB2⑹国际化:完全支持多语言应用,允许你定义翻译的字符,轻松翻译成不同国家的语言。Django的MVC模式的工作情况如图8所示:图8DjangoMVC模式的工作情况Django请求回应的工作机制如图9所示:图9Django请求回应的工作机制图3.2.3MySQL数据库研究数据库是一个存储在计算机中用于存储数据和数据的管理的方法和技术的一个计算机程序。常用的数据库有MySQL,Oracle,PostgreSQL等数据库,此次系统开发使用的是MySQL数据库。MySQL是一个功能强大,开源对象的关系型数据库系统,MySQL是由MySQLAB公司研发的一个可应用于各个操作系统的关系数据库系统,MySQL是当下最流行也是应用比较广泛地数据库。MySQL语言由DDL(数据定义语言)、DML(数据操纵语言)、DCL(数据控制语言)组成。相比于其他的关系型数据库,MySQL具有许多吸引人之处:=1\*GB2⑴支持存储。MySQL除了能够存储基本的数据类型之外还之处存储,支持array和JSON的存储的支持,对于文本内容存储更高效。=2\*GB2⑵支持多线程。MySQL能够充分的利用CPU资源,而且能够单独的应用在网络程序中,能够提供TCP/IP,JDBC和ODBC等多种数据库链接特性,能够支持程序多线程运行和比较好链接数据库。=3\*GB2⑶支持树状结构。支持树类型的索引结构,MySQL处理树状结构数据会很复杂,而MySQL则可以用最简单代码处理树状结构。=4\*GB2⑷有极其强的SQL编程能力。支持递归,有非常丰富的统计函数和统计语法支持。MySQL:支持CREATEPROCEDURE和CREATEFUNCTION语句。存储过程可以用SQL和C++编写。用户定义函数可以用SQL、C和C++编写。PostgreSQL:没有单独的存储过程,都是通过函数实现的。用户定义函数可以用PL/pgSQL(专用的过程语言)、PL/Tcl、PL/Perl、PL/Python、SQL和C编写。推荐系统的设计与实现4.1项目概述本次开发的系统是基于机器学习算法的电影推荐系统,本系统使用python开发语言Django框架技术进行系统的开发,主要分为前后端的开发和设计,前端主要涉及了系统界面和用户登录界面的开发和设计,后端主要涉节中介绍的基于用户推荐算法和基于物品的推荐算法实现基于机器学习算法的电影推荐系统的电影推荐。4.2需求分析随着互联网的发展科技进步,电影行业也发生着很大的改变,以往需要去电影院观看电影,但是随着网络时代到来和计算机普及,很大人可以不用去电影院观看在家网上就可以观看电影。基于这一行情,很多影视剧系统被设计与开发出来,电影产业也迅速发展,每天世界上都有很多的电影上映。人们每天都希望能够观看到自己感兴趣的电影,但是面对如此庞大的电影数据,人们要去寻找是非常麻烦的。电影推荐系统的出现很好的解决了这个问题,能够给用户带来极大的便利。本文要实现的是一个面向用户的个性化的电影推荐系统,能够根据用户的个性化需求,向用户推荐用户感兴趣的电影。本文实现的基于机器学习算法的电影推荐系统有以下几点要求:=1\*GB2⑴数据集:能够挖掘或者找到合适的数据集,用户和电影的数量都要足够多,要能够支持系统运行和实验进行。=2\*GB2⑵推荐算法:推荐效果要好和准确率要达标。=3\*GB2⑶系统功能:要实现算法推荐电影还要实现人机交互,系统界面美观,整洁,系统操作简单,易于使用功能稳定。系统要能够易于维护和后期业务的扩展。4.3用户功能需求 如图是系统中的用户的用例图,有五个用例,分别是登录,注册,评分,查看推荐结果,退出。图10用户E-R图4.4系统设计4.4.1系统总体架构本文从互联网上下载movieLens数据集,经过数据重组和筛选,基于两种推荐算法得出推荐结果保存至MySQL数据库中,并通过Django框架进行前端展示本系统采用B/S(浏览器/服务器)体系结构,用户通过浏览器就能和网站上的内容交互。实现本分效果,系统主要需要以下几种编程语言:=1\*GB2⑴Python:进行后台开发,写推荐算法,和MySQL数据库交互,将用户的数据存储到数据库中又将生成的推荐列表展示到前端页面。=2\*GB2⑵Html5:进行前端页面的开发。=3\*GB2⑶Css3:美化前端页面,特别是对电影分类板块做处理。=4\*GB2⑷Jquery:实现提交表单和首页中的评分提交。=5\*GB2⑸vue:前端开发技术,有众多开发库和框架。系统的总体架构设计图如图11所示:图11系统总体架构设计图4.4.2系统E-R图系统的模块主要分为用户管理模块,电影信息模块,电影类别模块,推荐电影模块和用户评分模块,这些模块对应着数据库中的电影信息表,用户信息表,评分表,浏览记录表等,系统E-R(实体联系图)如图12所示:图12系统E-R图4.4.3系统功能模块介绍Django框架设计并实现,块、推荐算法模块和推荐电影展示模块。=1\*GB2⑴登录注册模块首先,用户在进入系统后必须登录系统才能够对电影进行评分和收藏等操作,用户没有注册过系统账号则需要先进行注册才能登录系统,注册页面包含用户名称,用户的邮箱号,用户密码。注册图如下图所示:图13用户注册图用户注册后进入登录界面输入用户名称及密码进行系统登录,用户登录图如图14所示:图14用户登录图=2\*GB2⑵系统首界面登录到系统后可以看到系统首界面,如图15所示,首界面向用户展示了系统数据库中最近更新的新电影,用户可以根据这个查看最近更新电影,还展示了电影具体信息和基于用户推荐算法推荐的电影列表。图15电影首界面图=3\*GB2⑶标签界面标签界面主要是电影的分类模块,里面包含了24中电影的分类,该分类主要是根据数据库中的电影类型进行的分类,电影分类标签模块如图16所示。图16电影分类模块点击一个分类,进入改分类的电影信息模块,如图17所示:图17动画电影分类模块图=4\*GB2⑷用户评分反馈模块系统利用了jquery-raty评分插件,收集用户对每一部电影的评分。用户通过点击“提交评分”按钮将评分数据提交到MySQL中的movie_collet表中,插入到源数据集末尾。图18用户评分模块图=5\*GB2⑸基于用户推荐算法模块根据用户对电影的打分来进行推荐,使用皮尔孙相关系数计算用户与物品之间的相似度,从所有打分的用户中找出和当前用户距离最近的n用户,然后从n个用户中找出当前用户未看过的电影进行推荐。基于用户推荐算法的推荐模块如图19所示:图19基于用户推荐算法模块=6\*GB2⑹基于物品推荐算法模块基于物品相似度推荐算法会先遍历用户的评分值,然后从电影中找出相似的用户构建矩阵,根据相似度矩阵,得出用户与电影权重矩阵,将得分最高的的电影推荐给用户。图20基于物品推荐算法模块4.5数据库逻辑结构设计4.5.1实验数据库表结构第三章第二小节中介绍了数据集的由来,本小节主要介绍MovieLens网站下载的1M的数据对三个文件数据经过预处理后得到的内容。下面将介绍处理这些文件得到的数据结构。user.csv文件是用户数据文件(五元组),主要提取了四个属性:userId(用户id)、gender(用户性别)、age(用户年龄)、jobId(职位id)。表为user.csv数据集预处理得到数据结构表。表7user表结构与部分内容展示表userIdgenderagejobId10101621501531187405920movies.csv文件是电影数据文件(三元组),主要使用属性的属性有:movieId(电影id)、title(电影标题)、genres(电影类型)。表为movie.csv数据集预处理得到数据表结构与部分内容展示。表8movie表结构与内容展示表movieIdtitleGenres1ToyStory(1995)Adventure|Animation|Children|Comedy|Fantasy2Jumanji(1995)Adventure|Children|Fantasy3GrumpierOldMen(1995)Comedy|Romance4TombRaider(2018)Action|Adventure|Fantasy5Rampage(2018)Action|Adventure|Sci-Firatings.csv文件是电影评分文件(四元组),主要有四个属性:userId(用户id)、movieId(电影id)、rating(电影评分),其中用户评分区间为0分-5分,timestamps(时间戳)。表为rating.csv数据集预处理得到数据表结构与内容。表9ratings表结构与部分内容表userIdmovieIdratingtimestamps11575978300760118974978302109145203978302109186405978824291另外数据库中还有movie_3数据表,里面包含title(电影名字)、movieId、rate(网站的电影评分)、image(电影海报链接),通过查询电影movieId可以得到该电影的名字和海报图展示到前端。4.5.2数据库E-R图id号。图21用户E-R图每部电影信息的实体属性如图所示,图22电影E-R图推荐结果列表信息的实体属性如图23所示,推荐结果列表中包含电影的海报图地址,这样推荐页面就会展示出电影海报,增加系统美观的同时也提高了用户的可阅读性。图23推荐结果E-R图用户对电影的评分实体属性如图24所示:图24用户评分E-R图4.5.3系统数据库数据表设计本次推荐系统采用MySQL数据库实现系统数据的存储与管理,数据库中共有13个表,其都是用于系统存储用户信息,电影信息,电影推荐信息,电影评分信息,下面主要介绍的数据库表的结构。=1\*GB2⑴系统用户信息表用户信息表表名为auth_user,主要是存储用户的id(系统分配),用户登录名等相关登录信息,表结构如表10所示:表10系统用户信息表字段名称字段类型含义备注idint用户id主键passwordvarchar用户登录密码last_logindatetime用户最后登录时间is_superusertinyint是否是会员usernamevarchar用户姓名first_namevarchar用户姓last_namevarchar用户名字emailvarchar用户邮箱号is_stafftinyint是否管理员is_activetinyint是否活跃用户date_joineddatetime登录时间=2\*GB2⑵电影信息表电影信息表中的电影的信息主要是从Movielens数据集中对user.csv,movie.csv,links.csv,rating.csv等文件中对数据预处理和整理得到。该表保存着推荐系统中所有的电影的相关信息,电影信息表结构如表11所示:表11电影信息表字段名称字段类型含义备注idint电影id主键namevarchar电影名称directorvarchar导演countryvarchar国家yearsdate出版时间leadervarchar主演d_rate_numsint评分数量d_ratevarchar豆瓣评分introlongtext电影简介numint数量origin_image_linkvarchar电影图片来源链接image_linkvarchar电影图片链接=3\*GB2⑶电影推荐表当推荐算法通过用户历史行为数据然后遍历movie_movie,movie_tags和movie_collet表时会生成目标用户的推荐的电影id,然后遍历movie_movie电影信息表,找出相关电影然后向用户推荐。表12电影推荐表结构字段名称字段类型含义备注idintid主键userIdint用户idmovieIdint电影id=4\*GB2⑷电影评分信息表主要包括用户提交电影评分和用户的评论内容,提交时间,电影的id和用户id等。表13为电影评分信息表字段名称字段类型含义备注ididId主键contentvarchar评论内容creat_timedate评论时间movieIdint电影iduserIdint用户id总结与展望5.1总结随着互联网的发展,对于推荐系统的研究也越来越被科技工作者关注,机器学习是一门多领域交叉学科,涉及概率论、图论、数据挖掘与大数据分析是一门比较复杂的学科,目前,对于机器学习的研究和学习仍处于发展阶段,将机器学习算法应用于电影推荐系统仍是一个比较复杂和值得研究的课题。本文研究了关于机器学习算法的一些推荐算法,并以推荐系统为实例,对整个电影推荐系统的架构设计与功能开发做了详细的阐述与分析。从系统介绍出发,到需求分析,剖析了用户对于电影推荐系统的功能需求,然后,详细的介绍了电影推荐系统的各个功能模块,还对数据库的设计与数据库表结构做了详细的介绍。设计的电影推荐系统包含前端登录界面和系统展示界面,后端功能模块主要包括用户管理模块、电影展示模块、算法实现模块、用户评分模块和电影推荐结果模块,对于系统的每一个模块的介绍包括功能实现,系统功能图,E-R图,流程图等。本文对系统数据做了详细介绍,还对数据库表字段和内容做了详细阐述。系统采用了两种协同过滤算法:基于用户协同过滤算法和基于物品协同过滤算法,及流行度三个指标对算法进行评测。ItemCF-IUF算法5.2不足之处与未来展望5.2.1不足之处本次开发的只是一个比较简单的基于机器学习算法的电影推荐系统,主要有以下几方面的不足:=1\*GB2⑴系统功能实现比较简单,只是实现了大部分推荐系统要实现的功能,功能还是比较单一。系统要想用于实际应用还是有一些不足,需要做很大的改进,离用于商业用途还是有一定的差距。前后端的结合不是很完美,处理后端功能不怎么完善之外,前端界面设计的也不算很美观,界面设计还有很大进步空间。=2\*GB2⑵采用算法效率不算很高。系统开发采用了两种算法,基于用户协同过滤算法和基于物品协同过滤算法都是年代比较久的算法,对于用户的喜好预测会存在偏差,而且会存在冷启动问题。实验使用数据量小会对算法准确率有所影响。=3\*GB2⑶由于实验设备的局限性,本文所实现的电影推荐系统,采用单节点或者伪分布式这两种模式当用户访问量稍大时,会造成服务器负载量超荷,系统崩溃。在以后的研究中,可以使用Nginx进行用户访问量的负载均衡或者使用apache。=4\*GB2⑷没有考虑效率、可扩展性等问题。对于网页当改变很小一部分时仍然需要重新加载页面,加重了服务器负载,但限于本人对这方面的知识有限,最终没有解决这一问题,下一步工作可以朝着这个方向做一些改进。5.2.2对未来展望对于系统不足之处本人希望做以下改进:关于算法的改进,进一步工作将对算法不足之处做改进,融入更多推荐算法,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026云南保山隆阳区选调教师57名的考前冲刺密卷【夺分金卷】附答案详解
- 2026同心县机关事业单位助理岗位见习报名笔试题库及参考答案详解【能力提升】
- 2026云南玉溪市红塔区卫生健康系统招聘紧缺医学人才19人笔试题库(考试直接用)附答案详解
- 2026中国农业科学院烟草研究所高层次人才招聘5人考前冲刺密卷及答案详解(历年真题)
- 2026年博州信访局招聘编制外聘用人员(1人)备考题库(有一套)附答案详解
- 工程季节性养护方案
- 砌筑砂浆教学设计中职专业课-建筑材料-建筑类-土木建筑大类
- 七上可爱的四川第二课家乡的土地教案
- 新教材高中历史 第三单元 辽宋夏金多民族政权的并立与元朝的统一 第9课 两宋的政治和军事教学设计1 新人教版必修《中外历史纲要(上)》
- 2025年人教pep版三年级上册英语Unit3综合检测试卷及答案(-2)
- 2026年小学心理健康教研教师招聘考试笔试试题【含答案】
- 2026年上海中考(化学)考试试卷真题(含答案)
- 护理个案:消化系统疾病的护理
- 2026年苏教版七年级下册数学期末学业检测卷(含答案可下载)
- 关于《弱胶结地层巷道与应力计锚杆(索)支护技术规范》的解读
- 2026江西省住房和城乡建设厅直属事业单位高层次人才招聘1人备考题库及答案详解(全优)
- 初中英语阅读教学中分级阅读策略的实践研究课题报告教学研究课题报告
- 2025海南国资运营旗下国改基金公司招聘4人笔试历年难易错考点试卷带答案解析
- 2026年单细胞多组学技术在肿瘤微环境研究中的突破应用
- 2025年校园食堂管理员招聘面试题及答案
- 三一重工销售员奖惩制度
评论
0/150
提交评论