【精选】基于python实现的电影推荐系统

您所在的位置:网站首页 电影评分系统的目的 【精选】基于python实现的电影推荐系统

【精选】基于python实现的电影推荐系统

2023-11-01 18:03| 来源: 网络整理| 查看: 265

源码下载 http://www.byamd.xyz/hui-zong-1/ 设计总说明

本文设计了一个个性化电影推荐系统.众所周知,现在电影资源是网络资源的重要组成部分,随着网络上电影资源的数量越来越庞大,设计电影个性化推荐系统迫在眉睫.所以本文旨在为每一个用户推荐与其兴趣爱好契合度较高的电影.

论文首先阐述推荐系统的研究现状以及意义,随后介绍了相关的推荐算法,重点介绍协同过滤算法,并对系统实现所需技术进行了研究,接着介绍了整个推荐系统的实现,最后对整个项目进行了回顾与总结.

本系统包含电影前端展示界面、电影评分板块、推荐算法的实现以及后端数据库的设计.其中实现推荐算法是整个电影推荐系统的核心.系统采用由grouplens项目组从美国著名电影网站movielens整理的ml-latest-small数据集,该数据集包含了671个用户对9000多部电影的10万条评分数据.首先将该数据集包含的全部文件经过筛选重组之后存储到建好的数据库中,并将数据集按一定比例划分为训练集和测试集,对训练集进行算法分析生成Top-N 个性化电影推荐列表,然后在测试集上对算法进行评测,至少包括准确率和召回率两种评测指标.

协同过滤算法是推荐领域最出名也是应用最广泛的推荐算法.所以系统拟采用两种协同过滤算法给出两种不同的推荐结果,一种是基于用户的协同过滤算法,另一种是基于物品的协同过滤算法,用户可以根据两种推荐结果更加合理的选择合适的电影.系统采用了改进之后的ItemCF-IUF和UserCF-IIF算法,对计算用户相似度和物品相似度的计算都做出了改进.最后通过计算两种算法的准确率(Precision)、召回率(Recall)和流行度从而对系统进行评测、并比较了两种算法各自的优势和劣势.实验证明,改进后的算法比原始的协同过滤算法推荐效果要好,准确率更高.

整个系统涉及到的编程语言包含Python、Html5、JQuery、CSS3以及MySQL数据库编程.用到的框架是Django重量级web框架,通过该框架连接系统的前、后端.用户首先需要填写用户名、密码以及邮箱注册系统,然后才能登陆推荐系统.进入首页后会看到8个电影分类,包括恐怖片、动作片、剧情片等.用户需要给自己看过的电影进行评分,评分起止为0.5-5.0分,共10个分段.每评价一部电影就要点击一下提交按钮,将所评分的电影的

imdbId号以及对应的评分存入数据库中.用户点击“推荐结果”按钮,系统就调用推荐算法遍历数据库所存数据,得出推荐列表之后将结果反馈给浏览器,同时调取数据库所存电影海报图片进行展示.用户点击自己登陆的昵称,会跳转页面显示自己已经评价过的电影.

本文还分析了系统的需求,并对需求进行相关设计,最后用Django框架实现了该系统, 并给出了系统所用的主要数据表展示以及各个功能界面的展示.

关键词:电影推荐系统;协同过滤;基于邻域推荐;个性化服务 第 1 章 绪论 研究背景及意义

随着互联网技术的快速发展,现在已经进入了大数据时代,网络上的信息呈现爆炸式增长,每天都会有数以亿计的数据涌现.人们接触各种信息的途径也越来越丰富,比如微博、Facebook、Twitter、微信公众号等等.而这些在给用户带来便利的同时也带来了前所未有的问题——“信息过载”[1].

“信息过载”就是指用户很难从庞大的数据中找到自己感兴趣的信息[2],[3].为了解决信息过载问题,首先出现的是搜索引擎,但是一旦用户无法准确描述自己所需的关键词,搜索引擎就无能为力了,且搜索是一种被动的检索.而且,不同用户之间的需求差异很大.如果只是单纯的靠搜索引擎以及无法满足获取自身需求的信息.随着科技的发展,后来才有了推荐系统[4].

但是,最初的自动推荐系统,只是会将时下热门的、大众都爱的或者能使公司获得最大收益的产品推荐给用户,并没有针对每一个用户进行分析给出推荐.这样推荐的效果非常不理想.因此,人们希望有一种能向用户自动推荐项目的系统和方法,并且这个系统基于用户的偏好且对所推荐的产品进行属性分析.这就是个性化推荐系统.

个性化推荐系统技术可以应用到很多网站上,比如图书网站、视频网站、音乐网站、交友网站等.用户使用推荐系统的时间越长,不仅可以提高用户对该网站的忠诚度[5],还能为网站带来更多收益.最近几年推荐系统发展迅速,这要归功于Web2.0技术的成熟.现在用户已经成为了网页的积极参与者而不再是被动的网页浏览者[6].所以,为众多平台用户提供个性化推荐迫在眉睫.

截止于2017年底,国内知名视频网站优酷网上的电影和电视剧数量已达16040部.在如此庞大的视频数量下,怎样快速帮助用户发掘自己感兴趣的电影在网站运营中显得尤为重要.而且看电影常常被用户当做一种放松娱乐的方式,所以用户在打开电影网站时可能没有明确想看的电影.这样只有靠推荐系统通过分析用户的历史行为以及现下看的电影去分析潜在的用户可能感兴趣的电影.

国内外研究现状

“推荐系统”这个概念首次由Resnick在1997年提出[7],此后就一直被广泛引用.2007 年,ACM推荐系统会议开始举办,这是第一个以“推荐系统”命名的顶级会议,旨在分享研究成果和方法,推动该领域的发展.现在,AI(人工智能)、DM(数据挖掘)等学科的研究更加推动了推荐系统的发展.

如今,人们生活的方方面面已经离不开推荐系统了.几乎所有的领域都在应用个性化推荐,比如电子商务、图书网站、社交网站等等.

电子商务推荐

Amazon是电子商务推荐系统的代表,当用户登录后进入亚马逊图书网站首页,就会看到“为您推荐”板块,系统根据你的历史行为生成了图书推荐列表,如图1-1所示.还有一

个“与您浏览过的商品相关的推荐”板块.正式这样有针对性的推荐,潜在的给Amazon带来了巨大的经济收益.

图1-1 亚马逊网站的推荐板块1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lzvl81jE-1617337753444)(media/c4b7635f4d00ca1b003f542abbe022d5.jpeg)]

图1-2 亚马逊网站的推荐板块2

国内的淘宝网也是典型代表.淘宝app首页的“必买清单”其实就是根据用户的浏览和购物行为而自动生成的产品推荐.当用户购买商品之后,页面下方有“你可能喜欢”板块, 这样对用户进行针对性的推荐,极大的促进了每日的交易量.

社交网络推荐

扎克伯格开发的Facebook是社交网络推荐领域的代表[16],它也是利用社交网络数据进行相关推送.比如里面的好友推荐界面,其实是根据用户现有的好友以及用户的行为记录给用户推荐新的好友.因为如果社交网站里的用户的好友量很稀少,就不能体验到社会化的优势.因此,好友推荐模块已经成为社交网络的标配.

视频推荐

Netflix是电影和视频推荐领域的代表,它举办了在整个业界都产生广泛影响的Netflix

比赛,极大促进了推荐技术的研究.国内的爱奇艺视频网站也有相应的电影推荐模块.

音乐推荐

国内非常受大众喜爱的音乐播放器有“网易云音乐”.打开界面就能看到“私人FM” 板块,里面全部是根据用户历史听过的歌曲进行的推荐;“个性化推荐”板块如图1-3所示,其中展示了三个歌单,都是根据用户听过的歌曲所生成的推荐列表.里面还包括了“每日歌曲推荐”,也是根据用户的音乐口味生成.点进去查看如图1-4所示.

图1-3 网易云“个性化推荐”板块

图1-3 网易云“每日歌曲推荐”板块

国外对音乐个性化推荐系统的研究:认为用户所处的情境,比如用户当时所处的地点、时间以及天气等因素,都会对用户的偏好类型有影响[8].如Wang等人[9]用手机作传感器来收

集用户听音乐时的环境信息,然后构建出概率模型进行分析后给用户做推荐.

基本现在所有的推荐系统都是由前端web页面、推荐算法、后台日志系统组成.其中最核心的就是推荐算法.目前常用的算法有:协同过滤算法(Breese JS et al,1998)、基于内容的推荐算法(Mooney et al,2000)、 基于关联规则的推荐算法(Agrawal el)以及混合推荐算法(Claypool M et al,1999).

基于内容的过滤算法是根据信息资源和用户兴趣的相似度来推荐商品.能推荐新项目或者冷门的项目,使推荐系统不受冷启动和数据稀疏问题的影响.其实搜索引擎就是基于内容的检索,该算法在国外的主要应用有Pazzani等人设计[19]的Syskill&Webert系统[17].

协同过滤是利用用户之间的相似性来推荐用户该兴趣的物品.但有两个很难解决的问题,一个是稀疏性:系统初期由于系统资源还未获得足够的评价与反馈[9],[10],另一个是可扩展性:用户和资源的增多会使系统性能越来越差.

本文研究目标和研究内容

本论文的研究目标是通过协同过滤算法实现一个个性化电影推荐系统:用户首先通过填写用户名、密码、邮箱地址注册后进入系统,然后对系统主页所展示的8个类别的电影中看过的电影进行评分,0.5分为最低分,满分为5分,所对应的评价分别是:不喜欢、一般、喜欢、推荐.提交评分后浏览器将评分数据通过表单提交到数据库,推荐系统后台的分析算法通过UserCF(基于用户的协同过滤算法)和ItemCF(基于物品的协同过滤算法) 给出两种推荐.即一个是基于用户之间的相似度,一个是基于电影之间的相似度.

本文主要研究内容包括:

研究原始的协同过滤算法,并调研应用该算法的视频网站.

对原始的协同过滤算法做出改进,使推荐结果更加切符合用户兴趣.

选定Top-N推荐的常用评价标准召回率和准确率与原始的协同过滤算法进行比较.

以传统的协同过滤算法为基础,设计和实现一个个性化电影推荐系统,并从需求分析、系统设计、系统实现三个方面对该系统进行阐述.

论文结构安排

本文的结构安排如下: 第一章 绪论

主要阐述个性化推荐系统技术的研究背景及意义,说明推荐系统的实用性,讲解推荐算法的国内外研究现状以及推荐系统的国内外应用现状,并简述本文的研究目标以及研究内容.

第二章 推荐算法的研究

分析并介绍现有的几种推荐算法:协同过滤算法、基于内容的推荐算法、基于标签的推荐算法,重点分析协同过滤算法.简要介绍相似度的计算公式:余弦相似度、欧式距离、皮尔逊(Pearson)相关系数以及曼哈顿距离,本系统所用的相似度计算公式为余弦相似度.还介绍了几种推荐系统常用的评测指标.

第三章 实验设计及系统实现相关技术的研究

介绍了三个实验的设计流程及结果分析,对算法进行了评测.介绍了实现系统所需技术,重点介绍了Python、Django和MySQL.

第四章 推荐系统的设计与实现

对国内外主流视频网站进行调研.阐述了系统的需求分析,详细描述了系统的各个功能模块设计、数据库设计以及界面展示等方面的内容.

第五章 总结与展望

本章对整篇论文的研究过程进行回顾,并总结出不足之处,对推荐系统的后续研究做出相关探讨.

第 2 章 推荐算法的研究 推荐算法简介 协同过滤算法

协同过滤算法[12]主要包括基于用户的协同过滤算法(UserCF)和基于物品的协同过滤算法(ItemCF)两种推荐算法.

基于用户的协同过滤算法是推荐系统中最古老的算法,它是推荐系统诞生的标志[17]. 其主要包括两个步骤:

找到和目标用户兴趣相似的用户集合

找到这个集合中大多数用户都喜欢的,且目标用户没有买过或者看过的物品进行推荐[18]

基于物品的协同过滤算法目前使用也很普遍.很多著名的视频网站如:Hulu、YouTube 推荐算法的基础都是该算法.该推荐算法的原理是向用户推荐和他们之前购买过的物品相似度很高的物品.比如,该算法会因为你购买过《python编程从入门到实践》而给你推荐《用

python写网络爬虫》.主要分为两个步骤:

计算各个物品间的相似度

对物品的相似度从高到低进行排序,然后挑选一定数量的相似度较高物品进行推荐.或者根据用户曾经的历史记录进行推荐.

基于内容的推荐算法

从每个物品中抽取一些特征,然后利用一个用户过去喜欢和不喜欢的物品的特征数据来学习此用户的喜好特征.通过比较用户的特征和物品的特征,给用户推荐相似度较高的物品.基于内容的推荐算法保护了用户之间的独立性,并且能很好的解决物品的冷启动问题.

基于内容的推荐算法可以充分将项目内容和用户本身的诸多特征联系起来,比如一部电影的演员、导演、类型,用户的性别、年龄、职业等.

其根据用户历史行为构造出用户偏好文档,计算所推荐的项目与用户偏好文档的相似度,选择最相似的项目推荐给用户.首先为每个物品构建一个物品的属性资料,然后为每个用户建立其一个喜欢的物品集,最后计算其和物品属性资料的相似度.相似度高意味着用户可能喜欢这个物品,相似度很低则意味着用户会讨厌这个物品[13].

基于标签的推荐算法

标签是一种无层次化结构的、用来描述信息的关键词,可以描述物品的内涵特征.有很多网站都利用了标签系统.比如:CiteULike论文书签网站,它允许科研人员收藏自己喜欢的论文并给论文打上标签[21].还有国内的豆瓣网站,豆瓣网允许用户对电影以及图书等打标签,系统利用打标签这个途径可以获悉图书和电影的内容以及所属类别.

系统实现算法介绍 基于用户的协同过滤算法

假设给定用户 u 和用户 v,令 N(u)表示用户 u 曾经评价过的电影集合,令 N(v)表示用户 v 曾经评价过的电影集合.通过余弦相似度计算用户 u 和 v 的兴趣相似度:

| N (u) || N (v) |

| N (u)  N (v) |

(2-1)

但是上述公式过于粗糙,本系统采用的计算相似度的公式是 John S.Breese 在论文[14] 中提出的下列计算兴趣相似度的公式:

i  N (u)  N (v) 1

w uv

log(1 | N (i) |)

| N (u) || N (v) |

(2-2)

该改进过的基于用户的协同过滤算法记为 UserCF-IIF[14].式(2-2)通过

1 惩

log(1 | N (i) |)

罚了两个用户的兴趣列表中包含热门电影而对他们相似度产生的影响.这样得到用户之间的相似度之后,推荐算法会给用户推荐与他兴趣最相似的 K 个用户喜欢的电影,下列公式计算了用户 u 对电影 j 的兴趣度.

pui 

 wuv rvi

vI (i )S (u ,k )

(2-3)

式(2-3)中的 I(i)是对电影 i 打过分的用户集合. Su, k 是和用户 u 有着相似兴趣爱好的 k 个用户的集合, wuv 表示用户 u 和用户 v 之间的相似度, rvi 衡量了用户 v 对电影 i 的兴趣度,在本系统里是指用户 v 对电影 i 的评分.最后按对电影的兴趣度从高到低排序,推荐前 N 部电影给用户 u,属于 Top-N 推荐.

基于物品的协同过滤算法

基于物品的协同过滤算法是计算物品之间的相似度,然后根据用户之前喜欢的物品来推荐用户可能喜欢的物品.

| N (i) || N ( j) |

| N (i)  N ( j) |

(2-4)

式(2-4)为计算物品相似度的公式,它惩罚了物品 j 的权重,运用到本系统中可以有效避免某一热门电影和很多其他多数电影都产生较大的相似度.

在基于物品的协同过滤算法中,两个物品之间有相似度是因为它们存在于很多用户的兴趣列表中.但是每个用户的贡献都不相同.活跃用户对物品相似度的贡献应该小于不活跃的用户.所以本系统采用下列改进过的计算物品相似度的公式:

u  N (i)  N ( j) 1

wij

log(1 | N (u) |)

| N (i) || N ( j) |

(2-5)

式(2-5)中的

1

log(1 | N (u) |)

也惩罚了活跃用户对物品相似度的贡献.之后通过下列公

式计算来用户 v 对物品 j 的兴趣度.

pvj 

 wji rvi

iI (v)S ( j ,k )

(2-6)

式(2-6)中的 I(v)表示用户 v 喜欢的或者曾经产生过行为的物品集合, S  j, k 表示和物品 j 最相似的 k 个物品的集合, rvi 是用户 v 对物品 i 的兴趣度, w ji 为物品 j 和物品 i 之间的相似度,在本系统中取用户 v 对电影 i 的评分.改进过的基于物品的协同过滤算法记为

ItemCF-IUF[14].

相似度计算

在协同过滤算法中,相似度的计算至关重要.只有计算了用户或者物品之间的相似度才能得出推荐列表.常用的相似度计算方法有以下几种:

余弦相似度

在 n 维空间中,任意两个向量之间的夹角的余弦值大小即代表这两个向量的相似程度. 余弦值的取值范围为[-1,1].

假设 n 维空间中存在向量 i 和向量 j,式(2-7)为计算其余弦相似度的公式.

 

Sim(i,j) = cos( i , j ) =

i  j (2-7)

欧式距离

|| i || * || j ||

欧式距离也称为欧几里得度量,是指在 n 维向量空间中,任意两个向量之间的自然长度.同样的,假设存在向量 M 和 N,则欧式距离表达公式如式(2-8)所示.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3