当前位置:   article > 正文

大数据毕业设计hadoop+pyspark图书推荐系统 豆瓣图书数据分析可视化大屏 豆瓣图书爬虫 知识图谱 图书大数据 机器学习 计算机毕业设计 深度学习 人工智能 图书价格预测 图书评论情感分析_基于hadoop的图书推荐系统技术方案

基于hadoop的图书推荐系统技术方案

 

  1. 流程:
  2. 1.scrapy采集豆瓣图书数据存入sqlite便携式内嵌数据库,从sqlite导出csv文件,使用pandas+numpy/MapReduce数据清洗再次生成清洁的.csv文件;
  3. 2.使用hive数仓工具进行建库建表操作并导入.csv文件数据;
  4. 3.离线分析采用hive_sql完成,实时计算采用Spark+Scala完成;
  5. 4.离线+实时计算的结果指标使用sqoop导入mysql数据库;
  6. 5.使用Flask+Echarts搭建可视化大屏展示;
  7. 创新点:scrapy分布式爬虫、可视化大屏、离线+实时计算双实现
  8. 可以选装如下系统的后台管理系统、推荐系统、预测系统、知识图谱等。

一、选题的依据、意义,理论或实际方面的价值

1.选题的依据和意义

经过近些年的发展,图书市场在种类规模和总体数量等方面有了长足的进步。但与此同时也出现了图书种类、数量过多的情况,使得读者难以选择合适图书。常规的明细分类使得读者可以针对每一种类型的书进行选择,但是其每个分类下依然有成千上万种书籍,面对海量的图书时,尤其是读者没有明确目标的情况下,传统的热门推荐和检索不足以引导读者快速、精准的获取到自己所需要的、高质量的图书资源,因此图书推荐逐渐成为了图书阅读的一种重要形式。

由于互联网的迅速发展与普及,越来越多的人把互联网视为一种搜集信息与及时提供有用资讯服务的一种常用途径,并逐渐将其广泛运用于社会各个生活领域。在当今这样一个全新发展的时代,人们享受着便捷,但问题也随之而来。用户时常花费过多的时间和精力从信息过载的海底试图寻觅自己想要的事物。而本毕业设计意在以协同过滤算法来构建一个个性化的书籍推荐系统,以满足读者快捷、正确、高效地获取所需资源的需求。拟针对信息过载实现个性化信息服务的重要形式,开发一套网上书籍推荐系统, 可以节省用户的时间和精力, 为用户阅读提供借鉴和引导。信息检索和信息过滤技术是实现推荐系统的重要基础,提供图书推荐服务、满足用户的个性化阅读需求是当今图书商城、图书馆等机构发展的必然趋势和重要目标。

2.理论或实际应用方面的价值

个性化书籍推荐系统通过对用户选取书籍的倾向进行深入挖掘,可以快速、便捷地识别出用户感兴趣的内容,为其提供适合的、可能会感兴趣的书籍。从而大大减少了人们寻找心仪的书籍的时间,解决了人们在高压且繁忙的日常生活中没时间找寻新鲜读物的问题,同时也能很大地提高个性化书籍推荐的准确性与效率。从用户的角度出发,它可以帮助用户从海量的书籍资源中发现很多优质的、用户感兴趣的内容,从而方便了用户的生活。从平台的角度出发,它给用户推荐出感兴趣的作品后,如果达到用户心里的满意值,便可以吸引用户并增加平台营业收入,也可以制定策略投放相应的广告。

在推荐系统中,协同过滤算法是最经常使用的算法之一,因为其优秀的推荐效果成为了各大推荐平台广泛使用的技术。在协同过滤算法中,包括基于用户的协同过滤和基于项目的协同过滤。并且协同过滤算法是比较容易实现的,在基于用户的协同过滤算法中,利用的是对用户的行为进行分析,将一些行为较为类似的用户分为一个群体,在这个群体中互相推荐对方没有看过的内容,因为他们可能有着同样的喜好。在基于项目的协同过滤中,利用的是为项目建立群体,如果用户喜欢了一个项目,则为用户推荐和这个项目相关的其他项目,此方法利用的前提是拥有用户的历史行为。但是无论哪种协同过滤算法,在使用起来都比较简单,即使没有专业的知识也能通过结合系统中的机器学习算法来实现内容的推荐,而且推荐的效果也比较好,因此在不同的平台都得到了很大程度的应用。

二、国内外研究现状

在相关推荐技术的研究领域中,美国是最早开始的,其中,Netflix竞赛是个性化推荐技术发展到高潮阶段一个显著性标志。在国外拥有者很多发展成熟的推荐系统,涉及的领域也多种多样,包括在书籍方面的推荐、电影方面的推荐、图书方面的推荐和电子商务的推荐等等。如MovieLens、Ringo、FAB网站、Grundy图书推荐等都是比较知名的推荐网站,采用的推荐技术也包含了基于内容的协同过滤推荐和基于用户的协同过滤推荐等等。在国外,基于协同过滤的书籍推荐系统最典型的例子是AMAZON,提供个性化图书推荐功能,能为不同兴趣偏好的用户自动推荐尽量符合其兴趣需要的书籍。 AMAZON使用推荐软件对读者曾经购买过的书以及该读者对其他书的评价进行分析后,将向读者推荐他可能喜欢的新书。以该网站的知名度和营收效果来看,这种技术的应用无疑是十分成功的。

在国内,电商网站阿里巴巴在个性化推荐技术研究领域中捷足先登。国内有名的推荐网站腾讯、百度、今日头条、新浪、豆瓣、淘宝、当当、网易云书籍等,都能够利用推荐技术为用户推荐对应的内容。在对推荐技术的理论研究层面,也有很多学者提出了自己的观点和问题解决方法。如周军锋等人为了解决数据稀疏问题,改进了条件概率方法,通过物品之间的相似度优化协同过滤算法。邓爱林等人提出了基于项目聚类的协同过滤推荐算法,提高了推荐精确度,解决了可扩展性问题。单一的推荐算法都存在各自的不足,因此研究人员将多种技术融合在一起形成混合推荐,取长补短,弥补各自算法的缺点。张献忠考虑了前人较少研究的用户活跃度和商品流行度两个因素,提出一种新的推荐度计算方法。为了解决数据稀疏性问题和冷启动问题,也有其他学者突破了新的领域。刘飞飞在原有的协同过滤技术上同时对行和列进行多目标的聚类,提高了聚类的效果。张宇等人将模糊聚类和Slope-one算法应用于协同过滤推荐,解决了数据稀疏问题。

三、课题研究的内容及拟采取的方法

1.课题研究的内容

下将从用户简介和书籍推荐系统的基本架构和推荐算法实现两个方面来展开叙述个性化书籍推荐系统。

书籍推荐系统的使用者主要有普通用户和管理员两种。普通用户是系统的主要服务对象,主流人群是经常查看书籍的互联网用户,以喜欢浏览书籍的年轻人群为主,同时也包括一部分其他年龄段的书籍爱好者。管理员为系统后台的管理者,对象是系统的经营管理者。

通过书籍推荐系统实现对用户的个性化内容推荐,满足用户对相关作品的评论需求,保证系统可以为不同的用户推荐各自喜欢的书籍,发挥推荐系统的优势。

在推荐流程中,用户登陆系统后,系统应该根据推荐的数据,为不同的用户推荐不同的书籍。系统的整个运行流程大致为:用户成功登录之后可以进行个人信息管理、书籍推荐、留言评论以及阅读书籍;管理员在登录之后可以进行书籍管理、用户管理、分类管理以及推荐管理。其中用户的账户需要通过注册得到。

推荐算法使用协同过滤算法,需要用户对书籍操作的源数据进行分析,从而得出评分矩阵进行推荐。本系统由于并未实际上线运行,无法得到真实的用户反馈数据,因此拟从网上下载现成的用户数据,进行分析,来验证系统的可用性。获得的数据存储在mysql数据库中,使用时利用sql语句进行调用和分析。

2.课题研究拟采取的方法

为了构建符合需求的系统,需要进行方法上的调研与权衡。

(1)根据市面上现有的相关产品和思路,查阅文献,总结其优缺点。

本系统的核心是推荐,通过查阅资料可知,根据推荐原理的不同,常见的推荐算法有:基于热度、社交网络、标签、人口统计学、内容、协同过滤等的推荐算法。其中,基于热度和标签的推荐算法过于笼统,不满足系统“个性化”的要求;基于社交网络、人口统计学的推荐算法在系统中缺乏条件无法使用,基于内容的推荐算法需要系统学习书籍的内容和分类,学习成本过于高昂。对比之下,基于协同过滤的推荐算法显然是最合适最便捷的。

(2)查阅相关文献,进一步了解相关知识。

协同过滤算法通过收集用户的历史行为,发现用户和推荐对象之间的兴趣爱好关系,然后利用这种关系进行推荐,具有实现简单、自动化程度高、内容新颖等优点。该算法是非常成熟的推荐算法,在商城推荐、音乐视频平台兴趣推荐等领域已得到广泛应用,可以找到大量的参考案例。该算法不同分支的主要区分点在相似度的计算方式,目前本系统拟采用夹角余弦的方式计算相似度。

(3)根据协同过滤算法的运行过程,着手进行系统架构,进入开发流程。

四、课题研究中的主要难点及解决办法

本系统开发过程中遇到的难点主要如下:

1.数据模型的建立

本文通过spark提供的als算法实现,基于als矩阵分解的协同过滤算法在当下推荐引擎中得到了很好的运用,成为广泛使用的推荐算法之一。相较于其它协同过滤算法,基于矩阵分解的协同过滤算法在推荐效率和推荐精度上有很大优势。基于矩阵分解的协同过滤算法的原理是将用户-物品评分矩阵中缺失的部分进行填充。

2.数据的存储

基于Spark书籍推荐系统拟采用MySQL数据库,成本低且易用性强,适合各种人员使用,减少了系统制作成本从而减少系统使用费用,使得推荐系统得以普遍使用。从使用者角度出发,该系统所设计的各个功能基本上满足了书籍分析任务,大大节约了大数据背景下对数据的提取的工作时间,提高了对书籍数据推荐工作的运转效率。

3.数据可视化

 数据可视化涉及到网页的设计,后台功能的开发,获取数据的使用,和与推荐系统的整合。系统首先要进行网页的页面布局设计,然后将推荐系统生成的数据与后台的功能整合提供给页面进行展示使用。用户在系统登陆和浏览后,能根据用户的行为给用户产生不同的推荐结果。

以下是具体的解决方式:

1.数据的存储

协同过滤算法需要用户、书籍和评分数据,本系统的数据来源,是从网上找到公开的书本信息,然后简单分析数据的结构和过滤掉无用的信息后,将有用的信息存储到数据库中,采用sql查询的方式来进行使用。

数据库在软件系统的开发过程中有着非常重要的作用,数据库的各项指标与性能都将会对系统造成很大的影响。尤其是大数据分析的相关系统对于数据库储存、数据读取等方面能力的要求十分严格苛刻,因此在选取用哪个数据库进行存储显得十分的重要。本推荐系统业务拟使用的是mysql数据库来存储用户、书籍、评分数据的相关数据.

2.数据模型的建立和算法设计

书籍推荐系统业务采集使用的是mysql数据库中的用户、书籍、评分数据,三列数据,通过上述的三列数据构建评分矩阵,该算法以用户评分为基础构建数学模型,计算读者用户之间的相似度,将相似度高的读者用户作为邻居用户,最后根据邻居用户的兴趣爱好找到邻居书籍,然后根据邻居书籍对读者进行书籍推荐.该算法主要有以下三个步骤:

(1)构建读者-书籍评分矩阵;

(2)计算相似度,根据需要选择合适的相似度计算方法,在本文中主要借助余弦相似度法。将用户对物品的评价以评分形式展现,同时将物品评分以二维几何空间向量的形式表现,找到邻居书籍;

(3)根据与邻居图书的相似性对书籍进行评分预测,然后向目标用户推荐其没有阅读过的书籍。

推荐管理是整个书籍推荐系统中最关键的功能,依据书籍、用户以及用户对书籍的评分作为基础信息,并在Spark的机器学习算法的支撑下,为不同用户群体推荐合乎其真正需要的书籍。推荐管理包括以下两个重要的应用层面:首先依据用户对于书籍的具体偏好实现相关书籍信息的推荐;第二书籍信息的推荐要有一定比例的书籍推荐系统推广较高的书籍。本书籍推荐系统是使用基于流行度与基于项目的协同过滤推荐算法从而实现的。

总的来说,本系统推荐模块核心是基于用户的协同过滤推荐,而基于流行度的推荐则作为协同过滤的补充,这样可以防止协同过滤的冷启动问题。

在推荐分析中,主要分为3个部分,即数据准备、推荐和查询,具体的流程如下图所示:

图1 推荐流程图

根据书籍推荐系统为各用户主推的书籍信息,按照专业的技术流程和操作方式实现风险过滤的操作目标,且本系统针对整体设计需求通过Spark的机器学习完成各阶段的推荐操作。

(3)可视化设计

可视化设计主要有可视化界面,可视化后台和数据库设计。数据库设计在前文已经提及,以下主要讲解另两项:

可视化界面开发:可视化界面主要是为了展示书籍信息和用户交互的功能,主要有书籍推荐、搜索书籍、作品流量、书籍评分等,本文前端开发工具使用hbuilder来完成用户页面可视化的设计实现,技术采用html+css+js的实现方式,前后台的通信方式采用ajax的异步通讯,数据传输采用json字符串的方式来完成。

可视化后台:可视化后台是为可视化前台提供数据接口,采用Springboot技术,和前台交互的使用的是Springmvc的相关技术,和数据库交互的使用的是Mybatis作为框架来进行应用程序和数据库之间的交流,整体的架构是采用了视图、模型、控制器的三层架构。开发工具使用idea+navicat,框架使用SpringBoot框架。

五、进度安排

1. 查阅资料文献,做好需求分析等前期准备工作(2022.9-2022.10)

2. 搭建开发环境,搜寻书籍相关的数据,包括标题、简介、章节、内容、作者等等相关数据,进行算法调研(2022.11)

3. 数据库设计和功能设计(2022.12)

4. 网页设计和后台功能设计(2023.1-2023.3)

5. 编码完成工作(2023.4)

6. 系统功能测试(2023.5)

以下是一个简单的使用 Spark ML 的图书推荐系统示例代码,基于协同过滤算法和 ALS 模型:

  1. from pyspark.sql import SparkSession
  2. from pyspark.ml.evaluation import RegressionEvaluator
  3. from pyspark.ml.recommendation import ALS
  4. from pyspark.sql import Row
  5. # 创建 SparkSession
  6. spark = SparkSession.builder.appName("BookRecommendation").getOrCreate()
  7. # 构建示例用户-图书评分数据
  8. data = [(0, 0, 4.0), (0, 1, 2.0), (1, 1, 3.0), (1, 2, 4.0), (2, 2, 1.0)]
  9. ratings = spark.createDataFrame(data, ["user", "book", "rating"])
  10. # 构建 ALS 模型
  11. als = ALS(maxIter=5, regParam=0.01, userCol="user", itemCol="book", ratingCol="rating")
  12. model = als.fit(ratings)
  13. # 对用户进行图书推荐
  14. user_id = 0
  15. user_books = ratings.filter(ratings.user == user_id).select("book").distinct()
  16. user_unrated_books = ratings.select("book").distinct().subtract(user_books)
  17. user_unrated_books = user_unrated_books.withColumn("user", lit(user_id))
  18. predictions = model.transform(user_unrated_books)
  19. # 为用户推荐前 N 本图书
  20. n_recommendations = 3
  21. top_recommendations = predictions.orderBy("prediction", ascending=False).take(n_recommendations)
  22. print(f"用户 {user_id} 的图书推荐列表:")
  23. for book in top_recommendations:
  24. print(book["book"])

在这段代码中,我们首先创建了一个简单的用户-图书评分数据作为示例数据。然后,我们使用 Spark ML 的 ALS 模型构建了一个基于协同过滤的图书推荐系统模型,并使用该模型为指定用户推荐图书。最终,我们输出了推荐给用户的图书列表。

需要注意的是,实际的图书推荐系统可能会需要更多的特征工程、模型调优和大规模数据处理,以上代码仅作为简单示例供参考。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/768075
推荐阅读
相关标签
  

闽ICP备14008679号