基于华为云技术的大数据电影推荐系统分享~

举报
yd_277944621 发表于 2023/09/15 22:16:48 2023/09/15
【摘要】 摘要... 5一、引言... 61.1 研究背景和意义... 61.2 系统亮点... 61.3 主要贡献... 7二、相关技术和理论... 82.1 推荐系统的发展历程和研究现状... 82.2 推荐算法的分类及其优缺点... 82.3 物品协同过滤算法的原理和应用... 92.4 Hadoop框架的架构、特点和应用场景... 102.4.1 Hadoop的架构... 102.4.2 Ha...

摘要... 5

一、引言... 6

1.1 研究背景和意义... 6

1.2 系统亮点... 6

1.3 主要贡献... 7

二、相关技术和理论... 8

2.1 推荐系统的发展历程和研究现状... 8

2.2 推荐算法的分类及其优缺点... 8

2.3 物品协同过滤算法的原理和应用... 9

2.4 Hadoop框架的架构、特点和应用场景... 10

2.4.1 Hadoop的架构... 10

2.4.2 Hadoop特点... 11

2.4.3 Hadoop的应用场景... 12

2.5 数据可视化分析... 12

三、基于Hadoop的电影推荐系统设计... 14

3.1 系统需求分析... 14

3.1.1 性能需求... 14

3.1.2 可靠性需求... 14

3.2 系统架构和模块设计... 14

3.3 系统流程... 15

3.4数据预处理和特征提取... 16

3.5 数据存储... 16

3.5.1 数据流图... 16

3.5.2 数据字典... 17

3.6 数据挖掘以及可视化设计... 18

四、项目部署... 20

4.1 Hadoop部署设计... 20

4.2 虚拟机配置... 21

4.3 部署前的准备... 21

4.4 Hadoop集群安装及部署... 23

4.5 部署确认... 25

五、数据库实施... 26

5.1 创建数据库及数据库对象... 26

5.1.1 创建数据库... 26

5.1.2 创建基本表... 26

5.2 数据库备份和恢复方案... 28

六、系统实现... 29

6.1 python连接mysql 29

6.2 协同过滤算法... 29

6.2.1 简介... 29

6.2.2 基础概念... 29

6.2.3 算法实现步骤... 30

6.2.4 系统实现个性推荐... 31

6.3 电影热门推荐 TOP 25. 31

6.4 影片年度数量 TOP 10. 32

6.5 男女用户差异性分析... 33

6.6 用户职业分析... 33

6.7 电影评分分析... 34

6.8 用户年龄分布... 35

6.9 电影词频... 36

七、结论与展望... 38

7.1 本文工作总结... 38

7.2 未来系统改进方案... 38

参考文献... 39

 

摘要

本文介绍了一种基于Hadoop平台的电影推荐平台,该平台采用基于物品的协同过滤算法,并结合可视化分析技术,为用户提供个性化的电影推荐。通过利用Hadoop分布式计算框架和可视化工具,该平台能够处理大规模的电影数据,并通过协同过滤算法挖掘用户的偏好和相似性,为用户提供高质量的电影推荐。

该平台首先通过收集用户的历史评分数据,并将其存储在Hadoop分布式文件系统(HDFS)中。然后,利用MapReduce编程模型以及python数据分析库,对评分数据进行处理和特征提取,计算电影之间的相似度。基于物品的协同过滤算法通过分析用户对电影的评分以及电影之间的相似度,预测用户对未评分电影的喜好程度。

为了提供更直观的推荐结果和用户体验,该平台结合可视化分析技术,将推荐结果以图表、热门电影榜单等形式展示给用户。以便更好地了解推荐理由和探索新的电影选择。

实验评估结果表明,基于Hadoop平台的基于物品协同过滤算法的电影推荐平台在大规模数据集上展现了良好的可扩展性和推荐准确性。

未来的研究方向可以包括进一步优化推荐算法的准确性和效率,结合用户社交网络和文本分析等更多数据源进行推荐,以及探索多模态数据的融合和推荐策略的个性化定制。

 

关键词:华为云,基于物品协同过滤算法,电影推荐,可视化分析技术,个性化推荐


一、引言

1.1 研究背景和意义

互联网的出现和普及给用户带来了大量的信息,满足了用户在信息时代对信息的需求,但随着网络的迅速发展而带来的网上信息量的大幅增长,使得用户在面对大量信息时无法从中获得对自己真正有用的那部分信息,对信息的使用效率反而降低了,这就是所谓的信息超载(Information Overload)问题。

解决信息超载问题一个非常有帮助的办法是推荐系统,它是根据用户的信息需求、兴趣等,将用户感兴趣的信息、产品等推荐给用户的个性化信息推荐系统。和搜索引擎相比推荐系统通过研究用户的兴趣偏好,进行个性化计算,由系统发现用户的兴趣点,从而引导用户发现自己的信息需求。一个好的推荐系统不仅能为用户提供个性化的服务,还能和用户之间建立密切关系,让用户对推荐产生依赖。

电影推荐系统是推荐系统中的一个重要领域,具有广泛的应用前景,例如在线视频、点播平台和社交媒体等。同时学术界对推荐系统的研究热度一直很高,逐步形成了一门独立的学科。

物品协同过滤算法是目前流行的推荐算法之一,它能够通过分析用户历史行为和兴趣偏好,为其推荐具有相似兴趣的内容。然而,该算法应用于大规模数据集上需要极高的运算成本,效率大打折扣。

为了解决这一问题,本文提出了一种基于物品协同过滤算法和Hadoop的电影推荐系统。该系统采用分布式计算的方式,能够有效地处理海量数据,提高推荐的准确性和效率。本文的研究意义在于:

提供了一种基于物品协同过滤算法和Hadoop的电影推荐系统的设计和实现方法,为相关领域的研究提供了一定的参考和借鉴;

通过实验验证了我们提出的电影推荐系统的性能和有效性,为实际应用提供了可靠的技术支持;

本文的研究结果有助于推动电影推荐系统的发展,提高用户体验和平台的竞争力。

1.2 系统亮点

  1. 基于华为云:该系统采用分布式计算的方式,能够高效地处理海量数据,提高推荐的准确性和效率。
  2. 云计算:“云”使用了数据多副本容错、计算节点同构可互换等措施来保障服务的高可靠性,使用云计算比使用本地计算机可靠。
  3. 热门电影推荐: 利用网络上越来越庞大的电影资源,分析热门电影,帮助产生更大的经济效益。
  4. 用户个性推荐: 利用网络上越来越庞大的电影资源为每一个用户推荐与其兴趣爱好契合度较高的电影。
  5. 男女用户差异性分析: 分析男女用户在不同电影的评分差异,为用户个性化推荐做基于大数据的推荐分析参考。
  6. 用户职业分析: 分析不同职业的用户数量
  7. 电影评分分析: 针对不同电影做评分分析,以得到一个更符合大众偏好的电影推荐。
  8. 其他可视化分析: 电影词频统计、电影年份分析等

1.3 主要贡献

本文基于华为云的基于物品协同过滤算法的电影推荐系统,其主要贡献如下:

  1. 提出了一种基于物品协同过滤算法和Hadoop的电影推荐系统设计和实现方法。该系统采用分布式计算的方式,能够高效地处理海量数据,提高推荐的准确性和效率。
  2. 实现了一个完整的电影推荐系统,并对该系统的性能和有效性进行了评估。再此基础之上,本系统采用了python可视化分析技术,实现了对电影数据,用户数据的深入挖掘和分析。
  3. 对该系统进行了深入的分析和探讨,包括系统架构、算法实现和优化策略等方面。通过对系统实现的详细介绍和分析,为相关领域的研究提供了一定的参考和借鉴。
  4. 本文的研究结果有助于推动电影推荐系统的发展,提高用户体验和平台的竞争力。同时,该系统的设计和实现方法也可以在其他领域的推荐系统中得到应用和拓展。


二、相关技术和理论

2.1 推荐系统的发展历程和研究现状

推荐系统是一种基于个性化推荐算法,根据用户的历史行为和兴趣偏好,为其推荐个性化的内容或服务的软件系统。自20世纪90年代初期,推荐系统得到广泛的研究和应用,经历了几个阶段的发展。

基于内容的推荐系统阶段(1990s - 2000s):该阶段的推荐系统主要根据用户的历史行为和兴趣偏好,为其推荐与其过去喜欢的内容相似的内容。该系统使用基于文本匹配、向量空间模型等算法实现,但该方法的缺点是无法考虑用户的实时兴趣和动态变化。

协同过滤推荐系统阶段(2000s - 2010s):协同过滤是一种基于用户行为数据分析的推荐算法,它可以通过分析用户的行为历史,发现用户的偏好和兴趣,并为其推荐相似的内容。协同过滤算法包括基于用户和基于物品两种类型。该阶段的推荐系统主要采用基于物品协同过滤算法,具有很好的推荐效果。

混合推荐系统阶段(2010s - 至今):混合推荐系统将不同类型的推荐算法结合起来,以提高推荐的准确性和覆盖率。该阶段的推荐系统通常包括协同过滤算法、基于内容的推荐算法、基于图形模型的推荐算法和深度学习等技术。

目前,推荐系统领域的研究趋势主要包括以下几个方向:

推荐算法的研究和优化:为提高推荐准确率和效率,推荐算法的研究和优化是推荐系统领域的一个重要研究方向。此外,深度学习、迁移学习等新兴技术也在推荐算法中得到广泛的应用。

推荐系统的可解释性和公平性:推荐系统的可解释性和公平性是目前推荐系统研究的热点问题。在保障推荐系统的准确性的同时,使其更具有可解释性和公平性,是推荐系统的未来发展方向。

2.2 推荐算法的分类及其优缺点

推荐系统根据不同的分类标准,可以分为多种类型,其中主要包括以下几种:

基于内容的推荐系统:该系统基于商品或者内容的属性和特征,为用户推荐和其过去喜欢的内容相似的商品或者内容。其优点是可以考虑用户的历史行为和兴趣偏好,缺点是无法考虑用户的实时兴趣和动态变化。

协同过滤推荐系统:该系统是通过分析用户的历史行为数据,发现用户的兴趣偏好,为用户推荐和其过去喜欢的商品或者内容相似的商品或者内容。协同过滤推荐系统主要包括基于用户和基于物品两种类型。其优点是可以发现用户的潜在兴趣,缺点是对于新用户或者冷启动问题难以处理。

基于知识的推荐系统:该系统是基于用户的个人兴趣偏好和领域知识,为用户推荐和其兴趣相关的商品或者内容。其优点是可以发现用户的潜在兴趣和领域知识,缺点是需要大量的领域知识和数据支持。

混合推荐系统:该系统是将不同的推荐算法结合起来,以提高推荐的准确性和覆盖率。混合推荐系统通常包括协同过滤算法、基于内容的推荐算法、基于图形模型的推荐算法和深度学习等技术。其优点是可以综合各种算法的优点,缺点是实现复杂度高。

不同类型的推荐系统各有优缺点,选择何种类型的推荐系统应根据具体应用场景和要求来确定。例如,对于用户的历史数据比较丰富、行为偏好稳定的场景,可以选择基于协同过滤的推荐系统;而对于新用户或者冷启动问题,可以选择基于内容或者混合推荐系统。本系统使用的是基于协同过滤的推荐系统

2.3 物品协同过滤算法的原理和应用

物品协同过滤算法是一种基于用户历史行为数据的推荐算法,其基本思想是利用用户的历史行为数据,分析不同物品之间的相似性,从而为用户推荐与其历史行为相似的物品。

具体来说,物品协同过滤算法分为两个步骤:物品相似度计算和推荐结果生成。物品相似度计算是指利用用户历史行为数据,计算不同物品之间的相似度,通常采用余弦相似度等相似度度量方法。推荐结果生成则是根据用户历史行为数据和物品相似度矩阵,为用户推荐相似度较高的物品。

物品协同过滤算法的应用非常广泛,例如在电商平台上,可以利用物品协同过滤算法为用户推荐与其历史浏览记录相似的商品;在新闻推荐系统中,可以利用物品协同过滤算法为用户推荐与其历史阅读记录相似的新闻文章;在视频推荐系统中,可以利用物品协同过滤算法为用户推荐与其历史观看记录相似的视频。

物品协同过滤算法的优点在于可以利用用户历史行为数据,发现不同物品之间的相似性,从而为用户推荐更加个性化的物品;其缺点在于对于新用户或者冷启动问题,难以处理,同时也存在数据稀疏性和算法计算复杂度等问题。

2.4 Hadoop框架的架构、特点和应用场景

2.4.1 Hadoop的架构

Hadoop的生态系统组成一般如下图所示:


图2.1 Hadoop的生态系统

整个Hadoop的体系结构由很多部分构成。本次的课程设计主要用到的是Hadoop的核心构成部分——分布式文件系统HDFS和分布式计算框架MapReduce。主要是通过HDFS来实现对分布式存储的底层支持,对上传的数据进行分布式存储,并通过MapReduce来实现对数据的分布式并行任务处理的程序支持。

HDFS是Hadoop体系中数据存储管理的基础,采用主从结构模型。在本次的课程设计中,采用三台虚拟机实现一个master节点和两个slave节点的完全分布式部署方式模拟计算机集群环境。其中,master节点作为主服务器,又称为名称节点,管理文件系统命名空间和客户端对文件的访问操作,两个slave节点又称数据节点,主要负责储存和管理数据。


2.2 Hadoop集群分布

华为云MapReduce是一种计算框架,用来进行大量数据的计算聚合。

其中Map对数据集上的独立数据元素进行指定的操作,生成键值对,产生中间结果。

Reduce则对中间结果中相同“键”的所有“值”进行聚合,以得到最终结果。


图2.3 MapReduce计算框架

此外,本次还用到了Hadoop集群资源管理器系统——Yarn,把MapReduce计算框架运行在Yarn系统之上,通过Yarn来管理资源。

2.4.2 Hadoop特点

  • 高可靠性

利用冗余数据存储方式,即使一个副本发生故障,其他副本也可以保证正常提供服务。

  • 高效性

Hadoop采用分布式存储和分布式处理两大核心技术,能高效处理PB级数据。

  • 高扩展性

Hadoop可以高效稳定地运行在廉价的计算机集群上,扩展到数以千计的计算机节点上。

  • 兼容性

Hadoop基于java开发,具有良好的兼容性。

2.4.3 Hadoop的应用场景

Hadoop兼容大量廉价的计算机硬件资源形成计算机集群,所以主要用来大量数据的处理分析,又由于应用MapReduce框架,很难处理实时计算,所以采用批处理的方式主要用来处理大量数据的线下分析。目前,Hadoop广泛应用于分布式存储、日志处理、海量计算、数据分析、智能推荐系统等场景中。

2.5 数据可视化分析

数据挖掘在电影推荐系统中起着重要作用,它可以通过分析用户历史观影记录、评分、搜索关键词等数据,从中提取出用户的兴趣爱好、偏好、行为模式等信息,进而为用户推荐个性化、精准的电影。

具体而言,数据挖掘在电影推荐系统中主要有以下几个方面的作用:

用户画像:通过对用户历史数据的挖掘,可以建立用户画像,分析用户的性别、年龄、地域、职业等基本信息,了解用户的兴趣偏好和行为习惯,为推荐系统提供更准确的推荐依据。

物品关联分析:通过分析用户的历史观影记录和评分数据,可以挖掘出电影之间的关联性,从而推荐与用户当前观影内容相似的电影,提高推荐的准确性和用户满意度。

推荐算法优化:通过对用户数据和电影数据的分析,可以发现推荐算法中存在的问题和不足,进而改进算法,提高推荐准确度和覆盖率。

推荐结果可解释性分析:通过对推荐结果的分析,可以解释为什么会给用户推荐这些电影,从而提高用户对推荐结果的信任度和接受度。

综上所述,数据挖掘在电影推荐系统中可以帮助系统更好地理解用户需求,提高推荐的准确性和个性化程度,从而提高用户的满意度和忠诚度。


三、基于Hadoop的电影推荐系统设计

3.1 系统需求分析

3.1.1 性能需求

电影推荐算法有时间上的性能需求,算法时间执行不能过长。

3.1.2 可靠性需求

     可靠性:密码的输入采用掩藏字符操作,防止密码泄露;数据库服务器需要登录账号才能使用,防止恶意篡改。

3.2 系统架构和模块设计


图3.1 系统架构和模块设计

采用三种系统相结合的方式进行总的系统层次设计。分为

  • Hadoop为主的分布式系统
  • 华为云MapReduce为主的算法分析系统
  • MySQL为主的数据库存储系统

三种系统之间相互独立,仅采用特定的程序接口进行调用,可以最大程度的增强推荐系统的稳健性。

3.3 系统流程


图3.2 系统流程图

  • 从豆瓣电影爬取数据,并进行预处理;
  • 将预处理后的数据存储在 HDFS 中,使用 MySQL 工具进行数据管理和查询;
  • 编写程序使用华为云MapReduce,根据收集的用户行为数据,提取有意义的特征,并使用基于物品的协同过滤算法;
  • 使用华为云MapReduce对用户的行为进行实时处理,并生成个性化推荐结果以及其他可视化结果.

3.4数据预处理和特征提取

在实现基于物品协同过滤算法的电影推荐系统之前,需要对数据进行预处理和特征提取,以提高算法的推荐效果。数据预处理主要包括数据清洗和数据集成两个部分。

数据清洗是指对原始数据进行处理,去除脏数据和重复数据,同时对缺失值进行填充,以减少数据对算法的影响。数据集成则是指将多个数据源中的数据整合在一起,消除数据冗余,提高数据的质量和可信度。

特征提取是指从原始数据中提取有用的特征,用于算法模型的训练和预测。在电影推荐系统中,可以提取用户历史评分数据、电影基本信息、用户个人信息等多种特征,用于构建推荐模型。特征提取的目的是通过对原始数据的分析和处理,构建出具有较好预测性能的特征集合,以提高算法的预测准确率和推荐效果。

3.5 数据存储

3.5.1 数据流图

数据流图(DFD)是一种图形化技术,描绘信息流和数据从输入移动到输出的过程中所经受的变换。


图3.3 系统数据流图

3.5.2 数据字典

  • users(用户信息)表

字段名称

字段类型

约束

说明

id

varchar(50)

 

用户账号

age

varchar(50)

 

用户年龄

gender

varchar(200)

 

用户性别

occupation

varchar(50)

 

用户职业

sc

varchar(10)

 

 

  • movies(电影信息)

字段名称

字段类型

约束

说明

id

varchar(50)

 

电影号码

name

varchar(50)

 

电影名称

date

varchar(30)

 

电影日期

f4

varchar(50)

 

 

url

varchar(50)

 

电影网址

  • users_movies(电影评分)表

字段名称

字段类型

约束

说明

user_id

varchar(50)

 

用户编号

movie_id

varchar(50)

 

电影编号

rating

varchar(100)

 

评分

Num

varchar(100)

 

 

3.6 数据挖掘以及可视化设计

Python是一种广泛使用的高级编程语言,同时也是数据科学领域最为流行的编程语言之一。在Python中,有许多可视化分析工具和库可以帮助我们对数据进行可视化分析,其中最为常用的有MatplotlibSeabornPlotly等。

    Matplotlib是Python中最常用的可视化工具之一,它可以生成各种类型的图表,包括散点图、折线图、柱状图、饼图等等。使用Matplotlib,我们可以通过简单的代码来生成各种美观、清晰的图表。

    Seaborn是基于Matplotlib的可视化库,它可以生成更加美观、专业的图表。Seaborn具有许多Matplotlib所没有的功能和特性,例如多变量分析、统计模型可视化等等。

Plotly是一款交互式可视化工具,可以生成高度交互式的图表。使用Plotly,我们可以通过拖动、缩放、悬停等操作来探索数据,并获取更为直观的数据洞察力。

除了以上三个库之外,Python中还有许多其他的可视化工具和库,如BokehAltairggplot等等。这些工具和库提供了不同的功能和特性,可以根据具体需求进行选择和使用。

本系统主要使用了MatplotlibSeabornPlotly三个可视化工具。


4.1 Hadoop集群设计

在本次课程设计中,采用分布式模式进行Hadoop平台的部署,分布式模式是指Hadoop的守护进程分别运行在由多个主机搭建的集群上,不同节点担任不同的角色。使用三台虚拟机模拟一个master主节点和两个slave从节点,master节点负责整个集群的管理和控制,slave节点是集群中工作负载节点,负责数据的存储管理和读取。

4.2 虚拟机配置


采用虚拟机模拟集群的方式搭建Hadoop平台,由于需要三台虚拟机搭建完全分布式模式的Hadoop集群环境,所以先创建一台Centos虚拟机作为master节点,再克隆两台作为slave节点。

4.3 部署前的准备

4.3.1准备机器软件环境

所有的配置都需要在三台计算机节点中配置完成。

新装的Centos系统不可以直接部署Hadoop,需要进行设置有:修改主机名、添加域名映射、关闭防火墙、打通ssh等。

修改主机名:方便区别三台机器。三台计算机节点分别为:hadoophadoop2hadoop3.


添加域名映射:一个域名一定会被解析为一个或多个ip,一般会包含两步:本地域名解析——浏览器会首先在本机的hosts文件中查找域名映射的IP地址,如果查找到就返回ip ,没找到则进行域名服务器解析。为了达到快速访问指定ip的目的,在各个计算机节点中通过修改hosts文件增加域名映射。


关闭防火墙:防火墙是对服务器进行保护的一种服务,但这也会妨碍Hadoop集群间的相互通信,所以要关闭防火墙。


打通ssh安装ssh是为了无密钥登录主机, hadoop 集群中主机数目很大时配置ssh能够很方便的启动hadoop集群。


4.3.2 JDK的安装

Hadoop部署前必须要安装JDK,但是Hadoop不能使用openjdk,所以必须卸载Centos中原有的openjdk,并重新安装和Hadoop版本匹配的JDK



4.4 Hadoop集群安装及部署

解压安装Hadoop,主要通过修改配置文件对Hadoop集群进行配置。

hadoop-env.sh文件:Hadoop运行用到的环境变量配置文件,主要配置java路径,由于Hadoop是基于java开发的,所以需要添加对应版本的jdk


core-site.xml文件:Hadoop core的配置项,配置HDFSMapReduceYarn常用的I/O配置等,主要定义了文件访问的格式为 hdfs://hadoop:9000


yarn-site.xml文件:配置resourcemanager资源调度,配置资源管理器所在节点的主机名、辅助服务列表、资源管理、web应用代理服务器等。


mapred-site.xml文件:主要定义我们的MapReduce相关的一些配置,包括作业历史服务器等。


hdfs-site.xml文件:主要定义配置我们的HDFS的相关配置,包括namenode、辅助namenodedatanode等的配置,配置namenodedatanode存放文件的具体路径。


slaves文件:是用于设置所有的slave的名称或ip,控制从节点在哪些机器上。

4.5 部署确认



五、数据库实施

5.1 创建数据库及数据库对象

5.1.1 创建数据库

创建新的数据库cloudmovie


5.1.2 创建基本表

根据数据字典创建基本表,确定关系表名称、属性、主码、外码等信息。

创建用户评分表并导入数据的结果:


 

创建电影信息表并导入数据:


 

创建用户信息表并导入数据:


 

最终创建的表总览:


 

5.2 数据库备份和恢复方案

       数据备份是保护数据安全的重要手段之一,为了更好的保护数据安全,mysql数据库支持三种备份恢复类型、多种备份恢复方案,备份和恢复过程中提供数据的可靠性保障机制。

备份与恢复类型可分为逻辑备份与恢复、物理备份与恢复、闪回恢复。

  • 逻辑备份与恢复方案

通过逻辑导出对数据进行备份,逻辑备份只能基于备份时刻进行数据转储,所以恢复时也只能恢复到备份时保存的数据。对于故障点和备份点之间的数据,逻辑备份无能为力,逻辑备份适合备份那些很少变化的数据,当这些数据因误操作被损坏时,可以通过逻辑备份进行快速恢复。如果通过逻辑备份进行全库恢复,通常需要重建数据库,导入备份数据来完成,对于可用性要求很高的数据库,这种恢复时间太长,通常不被采用。

由于逻辑备份具有平台无关性,所以更为常见的是,逻辑备份被作为一个数据迁移及移动的主要手段。

(2)物理备份与恢复方案

通过物理文件拷贝的方式对数据库进行备份,以磁盘块为基本单位将数据从主机复制到备机。通过备份的数据文件及归档日志等文件,数据库可以进行完全恢复。

物理备份速度快,一般被用作对数据进行备份和恢复,用于全量备份的场景。通过合理规划,可以低成本进行备份与恢复。

(3)闪回恢复方案

利用回收站的闪回恢复删除的表。数据库的回收站功能类似于windows系统的回收站,将删除的表信息保存到回收站中。

利用MVCC机制闪回恢复到指定时间点或者CSN点。


六、系统实现

6.1 python连接mysql

  • 基本配置
    • mysql版本:7
    • Python版本:10
  • 安装python
    • 安装python第三方库pymysql
  • 具体步骤

加载库:import pymysql

连接mysql:pymysql.connect(host='localhost', port=3306, user='root', passwd='GsqL222', db='cloudmovie', charset='utf8mb4')

新建数据库访问游标:cursor = db.cursor()


6.2 协同过滤算法

6.2.1 简介

推荐系统的协同过滤算法有两种比较主流的方法,其中一种是基于用户的协同过滤(User-CF),另一种是基于物品的协同过滤(Item-CF)。

Item-CF 和 User-CF 选择

如果 user 数量远远大于 item 数量, 采用 Item-CF 效果会更好, 因为同一个item 对应的打分会比较多, 而且计算量会相对较少 如果 item 数量远远大于 user数量, 则采用 User-CF 效果会更好, 原因同上

在本次数据库课程设计中使用基于物品的协同过滤算法 (Item-CF)进行电影推荐。

6.2.2 基础概念

Item-CF 算法不利用物品的内容属性计算物品之间的相似度,而是通过分析用户的行为记录计算物品之间的相似度。Item-CF 算法认为,物品 A 和物品 B 具有很大的相似度是因为喜欢物品 A 的用户大都也喜欢物品 B。

6.2.3 算法实现步骤


第一步:计算物品之间的相似度。

第二步:根据物品的相似度和用户的历史行为给用户生成推荐列表。

简单来说,Item-CF 算法给用户推荐那些和他们之前喜欢的物品相似的物品。

Item-CF算法的代码实现

  1. 构造用户-电影矩阵,矩阵元素记录用户对该电影的评分。

伪代码:


  1. 使用python的机器学习算法的库scikit-sklearn中的cosine_similarity来计算电影的余弦相似度

6.2.4 系统实现个性推荐


6.3 电影热门推荐 TOP 25

 


 

6.4 影片年度数量 TOP 10


6.5 男女用户差异性分析

男女差异性分析是指对电影观众的性别背景进行统计和分析的过程。通过对男女性别群体的电影观看习惯、偏好等进行分析,可以了解不同性别群体在电影消评分等方面的差异性,为电影制作和推荐提供参考和依据。


6.6 用户职业分析

用户职业分析是指对电影观众的职业背景进行统计和分析的过程。通过对用户职业分布情况的了解,可以帮助电影制作人员和电影推荐系统更好地了解目标用户,从而提供更符合用户需求的电影服务。

职业分布情况:通过统计用户职业分布情况,可以了解目标用户的职业背景特征和分布情况。例如,可以分析用户职业类型的占比、主要职业类型等。

通过用户职业分析,可以更好地了解目标用户的职业背景和特征,为电影制作人员提供更精准的电影创作方向;同时,也可以为电影推荐系统提供更个性化的推荐服务,提高推荐的准确性和用户体验。


 

6.7 电影评分分析

电影评分分析是对电影观众对电影的评价进行统计和分析的过程。电影评分分析可以帮助电影制作人员和电影推荐系统提供更好的服务。

评分分布:通过统计电影观众的评分分布情况,可以了解电影的受欢迎程度和观众的评价趋势。例如,可以分析评分的平均值、中位数、标准差等指标,以及不同评分区间的分布情况。

通过电影评分分析,可以了解电影观众的喜好和评价趋势,为电影制作人员提供改进和创新的方向;同时,也可以作为电影推荐系统的依据,提高推荐的准确性和个性化程度。


6.8 用户年龄分布

用户年龄分析是推荐系统中的重要内容之一,可以帮助推荐系统更好地理解用户的需求和兴趣,提高推荐的准确性和个性化程度。


6.9 电影词频

电影词频分析是一种常见的文本分析方法,可以用来分析电影的剧情、主题和风格等方面。

具体而言,电影词频分析可以从以下几个方面进行:

剧情分析:通过对电影中出现频率较高的关键词进行分析,可以了解电影的基本剧情和情节,比如主角的性格、遭遇的事件、戏剧冲突等。

主题分析:通过对电影中出现频率较高的关键词进行分析,可以了解电影所讨论的主题和议题,比如社会问题、文化差异、人际关系等。

风格分析:通过对电影中出现频率较高的词汇进行分析,可以了解电影的风格和类型,比如恐怖片、动作片、文艺片等。

电影词频分析可以通过文本处理和自然语言处理等技术实现。常用的分析方法包括词频统计、词云图、主题建模和情感分析等。本系统采用的是词云图分析。

通过电影词频分析,可以深入了解电影的内涵和风格,为观众提供更好的选择和推荐。在电影推荐系统中,也可以使用电影词频分析的结果作为推荐依据,提高推荐的准确性和个性化程度。



七、结论与展望

7.1 本文工作总结

本文基于Hadoop平台,实现了一个基于物品协同过滤算法的电影推荐系统,并对其进行了测试和评估。在实现过程中,我们首先对数据进行了预处理和特征提取,然后基于Hadoop的MapReduce模型,对电影评分数据进行了分布式处理,生成了基于物品的相似度矩阵。接着,我们使用基于物品的协同过滤算法,结合用户历史评分数据和电影特征信息,对用户进行电影推荐。

同时使用python可视化分析技术,对爬取的数据进行一系列的可视化分析。

7.2 未来系统改进方案

推荐系统是一个动态不断更新的领域,其改进方案也需要不断地探索和优化。以下是一些可能的改进方案:

引入深度学习算法:随着深度学习的兴起,将深度学习算法应用到推荐系统中,可以提高推荐系统的准确度和精度,尤其是在处理大规模数据时表现突出。

引入用户行为数据:将用户行为数据与推荐算法相结合,可以更加准确地推荐用户感兴趣的内容。例如,考虑用户的搜索历史、点击行为、购买记录等,从而更好地理解用户的兴趣和喜好。

引入社交网络数据:利用社交网络数据,可以分析用户的社交关系、兴趣和群体行为等信息,进而提高推荐系统的精度和准确度。

引入实时数据:推荐系统需要及时响应用户的变化,因此引入实时数据可以更好地反映用户的兴趣和需求。例如,将用户最近的搜索历史或点击行为作为实时数据,实时调整推荐结果。

多样化推荐:推荐系统应该考虑到用户的多样化需求,而不是仅仅推荐与用户之前的行为类似的内容。因此,可以尝试引入多样化推荐策略,例如基于用户的兴趣和偏好,推荐多种类型的内容,以及跨领域的推荐等。


参考文献

[1]任妮,吴琼,栗荟荃.推荐系统算法分析与研究[J].电子技术与软件工程,2022(17):238-241.

[2]陈勇.基于协同过滤算法的旅游推荐系统的设计[J].价值工程,2022,41(30):160-162.

[3] 黄月. 基于相似度改进的 Item-CF 课程推荐系统[D]. 华中师范大学, 2018.

[4] Gao G. Design of online retail commodity recommendation system based on Item-CF algorithm[C]//2021 5th Asian Conference on Artificial Intelligence Technology (ACAIT). IEEE, 2021: 460-464.

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。