赞
踩
学生姓名 | 刘** | 学号 | 4612200110 | |
所在学院 | 信息工程学院 | 专业 | 数据科学与大数据技术 | |
指导教师 | 孟** | 职称 | 副教授 | |
论文(设计)题目 | 基于用户画像的电影推荐系统的设计与实现 | |||
随着信息技术的飞速发展和视频播放设备的更新迭代[1],电影大数据的信息量逐渐庞大。电影消费进入了一个个性化定制的时代,用户需求多样化且独特。然而,传统的电影推荐系统在面对用户多样化的兴趣和观影习惯时,往往存在一系列挑战。通常,这些系统基于整体用户群体的行为进行推荐,无法深入理解每位用户的独特喜好。与此同时,全球数据总量不断膨胀,用户在互联网上产生的大量行为数据成为构建更为精准的用户画像的宝贵资源。 因此,本次毕设研究的核心问题在于如何在大数据背景下构建一种基于用户画像的电影推荐系统。通过深度挖掘用户在电影网站平台的行为数据,包括基本信息和使用操作记录等,依此精准捕捉用户兴趣特征,实现更个性化、精准的电影推荐[2]。解决这一问题对于提升用户体验、促进电影产业创新至关重要。 具体而言,本系统以Django和VUE.js作为前后端基础框架[3],采用MTV模式,借助MongoDB、MySQL和Redis等多数据库进行数据存储与处理。基于从电影网站平台爬取的电影数据,系统通过Hadoop和Spark等大数据组件进行分析[4],开发用户标签并实现个性化推荐。管理系统采用Django自带的管理系统,并使用simpleui、Bootstrap等框架进行美化,以提供用户友好的操作界面。 通过这一研究,本文希望为传统电影推荐系统的改进提供一种可行的解决方案,以更好地满足用户个性化需求。在实践检验该系统的实用性和有效性,力求为电影产业提供一些可行的、具体的改善方向。 2.国内外有关本选题研究的动态 2.1 国外本选题发展的动态 推荐算法的历史可以追溯到1992年,施乐公司的帕拉奥图研究中心提出一种基于协同过滤算法的推荐系统[5],并将其用于垃圾邮件过滤。协同过滤分为两种,一种是基于用户,一种是基于商品。Amazon的工作采用的是ItemCF,即基于商品,因为用户的行为数据往往过于稀疏。协同过滤简单可解释,但不具备泛化能力。 Netflix在2006年提出了矩阵分解技术[6],其很好解决了泛化能力问题。通过矩阵分解,用户和商品都得到了与其对应的隐向量,泛化能力很强。不过矩阵分解(奇异值分解)计算量很大,并且不适合处理大规模稀疏矩阵。 日本的大阪大学在2010年提出了FM模型[7],可以很好得捕捉二阶特征。而且经过一定数学技巧,复杂度降低到nk(n是特征维度,k是隐向量维度)。2012年以后,FM逐渐成为推荐领域的主流算法。这一现象一直到GBDT应用在推荐领域才结束。 2014年facebook提出基于GBDT+LR的解决方案[8],产生了很大的影响力。可以说,自此往后,推荐算法进入了特征工程模型化的阶段。即特征的筛选、构造由模型完成,整个推荐系统成为一个端到端的全链路系统。此外GBDT可以很好得进行特征的高阶交叉,这是FM所做不到的,其只能做二阶交叉,三阶的计算量已经可怕的惊人。 截止到2014年,推荐系统领域仍然是机器学习占据主流。然而,在2012年,CV领域出现了AlexNet[9]这样现象级的深度学习网络,这股浪潮不可避免的影响到了推荐系统。在2015年,深度学习在推荐系统正式拉开了帷幕。2015年澳大利亚国立大学提出了AutoRec[10],它是推荐领域第一个神经网络推荐模型,由三层网络组成。一个输入层,一个中间隐层,一个输出层。其是一个标准的自编码器,我认为与矩阵分解得到隐向量的思想有异曲同工之妙,并在技术手段实现上与word2vec更为相似。 2.2 国内本选题发展的动态 2014年,阮毓钦等三个研究员基于FM提出的FFM[11]在多项CTR预估大赛(kaggle的avazu和criteo)中夺冠,美团也把该算法应用在他们的推荐系统和CTR预估领域中,相比FM模型,FFM模型引入了特征域感知(field-aware)这一概念,使模型的表达能力更强。 2017年华为发表的论文《DeepFM: A Factorization-Machine based Neural Network for CTR Prediction》[12],标志着在点击率(CTR)预测领域的一次创新性突破。该论文介绍了一种名为DeepFM的模型,其独特之处在于成功地将因子分解机(Factorization Machine,FM)与神经网络结合,以更好地捕捉特征之间的复杂关系。DeepFM的成功应用为推荐系统领域的研究和应用开辟了新的方向。其混合模型的设计思想以及端到端的学习方式为CTR预测任务提供了新的范本,激发了对更复杂模型的探索和应用。这一模型的问世不仅对学术界具有重要意义,也为工业界提供了一种创新的解决方案,为提升推荐系统的性能和效率提供了有力支持。综上所述,DeepFM模型在CTR预测领域的成功应用,标志着推荐系统研究的一次重要进步,对相关领域的发展具有积极而深远的影响。 2017年浙江大学发表的论文《2017-AFM-Attentional Factorization Machines Learning the Weight of Feature Interactions via Attention Networks》[13]在这篇论文中,研究人员提出了一种新颖的模型AFM,其主要特点是引入了注意力网络。AFM的提出为推荐系统领域引入了更灵活、自适应的特征交互权重学习机制,拓展了因子分解机的应用范围。这一创新在学术界和工业界都引起了广泛的关注,为推荐系统的进一步研究提供了新的思路和方法。 2018年阿里巴巴发表的论文《2018-DIN-Deep Interest Network for Click-Through Rate Prediction》[14],介绍了一种名为Deep Interest Network(DIN)的模型,专注于提高点击率预测的准确性。DIN的提出在推荐系统领域引起了广泛关注。其在建模用户兴趣方面的创新思路,特别是引入注意力机制的方式,为提高CTR预测模型的性能提供了新的方向。这一模型不仅在学术界产生了积极的反响,也在工业界得到了广泛应用,为推荐系统的发展贡献了有力的实证和经验。 2019年阿里巴巴发表的论文《2018-DIEN-Deep Interest Evolution Network for Click-Through Rate Prediction》[15],介绍了一种名为Deep Interest Evolution Network(DIEN)的模型,专注于提高点击率预测的准确性。DIEN的提出丰富了推荐系统模型对用户兴趣动态演变的建模方式。通过引入兴趣进化网络,该模型更好地满足了推荐系统对于捕捉用户在不同时间点兴趣特征的需求,为推荐系统的发展提供了新的思路和方法。DIEN的成功应用不仅在学术界引起了关注,同时也为工业界提供了一种创新的解决方案,为提高推荐系统性能和用户体验做出了实质性的贡献。
根据本文的研究内容和目的,本文拟解决的主要问题包括两方面的问题如下:
推荐系统经过多年的发展已经在国内有相对较完善的开发设计思路和步骤,基于本次系统设计和实现,需要解决的问题可以分为五层:数据层、算法层、业务层、表现层、用户层。
3.2 论文编写方面问题 编写论文作为毕业设计中最为重要的环节之一,基于其撰写的重要性有以下几点问题:
研究方法的选择取决于研究问题的性质、研究目的以及可用的资源。基于用户画像的电影推荐系统设计,有以下几种常见的研究方法:
通过系统的文献综述,了解和分析对电影推荐系统领域以往的研究,包括不同算法、模型和系统设计方法。依此确定研究的现有状况、研究的空白以及潜在的改进空间。
进行实证研究以验证研究假设和评估系统的性能。这可能包括设计实验、收集用户数据、实施推荐算法,最后通过实验证据来评估系统的有效性和用户满意度。
选择一个或多个现实世界的案例,深入研究用户画像电影推荐系统在这些案例中的应用。进而深刻理解系统在实际场景中的应用和效果。
为了向个性化推荐提供基础,并指导用户画像的构建;进而利用大数据分析技术,对用户行为数据进行深入挖掘,以发现用户兴趣模式、行为趋势等信息是必不可少的。
通过系统设计和开发,实际构建一个基于用户画像的电影推荐系统;其涉及到选择合适的技术栈、较为契合的算法以及用户界面设计等方面的开发技术,以实现研究的理论构想。
通过定量调查和问卷调查收集用户反馈,了解用户对推荐系统的满意度、使用体验和期望。这有助于评估系统的实际效果,并发现可能的改进点。
进行用户交互测试,通过观察用户在推荐系统上的实际操作行为,获取更深入的用户反馈。这有助于调整系统的交互设计,提升用户体验。
与其他已有的电影推荐系统进行比较分析,评估系统在准确性、个性化程度、实时性等方面的相对性能。比较分析有助于确定系统的优势和改进点。选择研究方法时,需要考虑研究的具体目标、可用的资源和时间限制。通常,综合运用多种方法可以更全面地理解研究问题,并为系统设计提供更有力的支持。
该电影推荐系统的设计以用户画像为切入点,通过借助Django框架、VUE框架、爬虫技术、MySQL,MongoDB,Redis数据库、Hadoop和Saprk等相关技术和软件,结合用户模块,电影模块,推荐模块这三种主要模块,包含用户登录注册、修改信息、修改邮箱,电影收藏、电影搜索、电影评论、基于电影类型推荐、基于用户喜欢推荐、基于用户画像推荐等等功能,如下图1所示。 图1系统部分功能模块
基于选题内容和技术革新,本次选题有以下显著的特色和创新点: 6.1推荐算法:首先,通过引入ALS(Alternating Least Squares)推荐算法,系统能够深度学习用户和电影的潜在特征,从而提高推荐的准确性和个性化水平。同时,协同过滤算法的整合进一步拓展了推荐系统的维度,不仅考虑到个体用户的兴趣,还充分利用用户群体的行为数据进行推荐,使系统更全面地理解用户喜好。特别地,本次选题突出引入了分时性推荐,通过时序分析关注用户在不同时间段的观影兴趣,使系统能够实时地向用户提供更符合其当前心情和需求的电影推荐。最为创新的是允许用户在不同时间段设置个性化的兴趣标签,使用户能够根据自身时间安排和心境选择不同类型的推荐,增加了用户对推荐系统的参与度和满意度。 6.2 多层次的系统设计:系统巧妙整合了数据层、算法层、业务层、表现层和用户层,采用多数据库支持、先进的推荐算法,同时考虑了关键业务模块和前沿技术,为用户提供更全面、个性化的电影推荐服务。这一多层次设计在平衡系统各方面需求的同时,为电影推荐系统的发展提供了新的可能性,体现了在系统设计层面的创新。 基于以上特色和创新点,本次选题将构建了一个具有独创性和发展性的基于用户画像的电影推荐系统。其中,系统的个性化推荐方向将提高用户满意度和推荐的准确性,多层次的系统设计考虑了底层数据处理、推荐算法、业务逻辑和用户交互等多个方面,为系统提供了全面而强大的功能支持。支持多数据库和大数据处理的能力使系统更具扩展性和适应性,能够有效处理大规模数据。
1.绪论 1.1研究背景 1.2研究目的和意义 1.2.1研究目的 1.2.2研究意义 1.3创新特色 1.4国内外发展现状 1.4.1国内发展现状 1.4.2国外发展现状 1.5论文的主要研究内容 1.6论文的研究框架图 2.文献综述 2.1电影推荐系统的历史和发展 2.2目前存在的问题和挑战 2.3相关技术和算法的综述 2.4其他类似系统的案例研究 3.技术综述
3.7.1基于用户的协同过滤算法 3.7.2基于物品的协同过滤算法 3.7.3混合型协同过滤算法
4.系统设计 4.1数据层设计 4.1.1数据采集和处理流程 4.1.2数据库选择和设计 4.2算法层设计 4.2.1基于用户画像的推荐算法 4.3.1分时推荐算法设计 4.3业务层设计 4.3.1用户管理模块 4.3.2电影管理模块 4.3.3推荐管理模块 4.3.4用户操作管理模块 4.4表现层设计 4.4.1用户界面设计 4.4.2前端技术选择和实现 4.5用户层设计 4.5.1用户分类和管理 4.6本章小结 5.系统实现 5.1数据层实现 5.1.1数据采集和清洗 5.1.2数据存储和管理 5.2算法层实现 5.2.1用户画像算法实现 5.2.2分时推荐算法实现 5.3业务层实现 5.3.1用户管理模块的实现 5.3.2电影管理模块的实现 5.3.3推荐管理模块的实现 5.3.4用户操作管理模块的实现 5.4表现层实现 5.4.1用户界面开发 5.4.2前端技术的实现 5.5用户层实现 5.5.1用户身份分类和管理 5.6本章小结 6.系统测试 6.1测试概述 6.2功能测试 6.3性能测试 6.4测试结果分析 6.5本章小结 7.总结与展望 7.1总结与建议 7.2未来展望 8.参考文献 8.开题报告主要参考文献
| ||||
写作进度及具体时间安排 | ||||
起止日期 | 主要研究内容 | |||
2023.10-2023.11 | 开题构思,调研相关文献 | |||
2023.11-2023.12 | 确定研究目标方向,明确选题,编写开题报告 | |||
2023.12-2024.2 | 数据收集,系统设计和技术选型,撰写论文 | |||
2023.2-2024.4 | 系统开发实现和测试,撰写修改论文,确定初稿 | |||
2023.4-2023.5 | 根据指导意见,修改论文,完成定稿,最终答辩 | |||
指导教师对开题报告的意见 指导教师签名: 年 月 日 |
以下是一个简单的 ALS 电影推荐算法的 Python 代码示例:
- from pyspark.ml.evaluation import RegressionEvaluator
- from pyspark.ml.recommendation import ALS
- from pyspark.sql import SparkSession
-
- # 创建Spark会话
- spark = SparkSession.builder.appName("ALS_Movie_Recommendation").getOrCreate()
-
- # 读取电影评分数据集
- ratings = spark.read.csv("ratings.csv", header=True, inferSchema=True)
-
- # 划分训练集和测试集
- (training, test) = ratings.randomSplit([0.8, 0.2])
-
- # 构建ALS模型
- als = ALS(maxIter=5, regParam=0.01, userCol="userId", itemCol="movieId", ratingCol="rating",
- coldStartStrategy="drop")
- model = als.fit(training)
-
- # 对测试集进行预测
- predictions = model.transform(test)
-
- # 评估模型
- evaluator = RegressionEvaluator(metricName="rmse", labelCol="rating", predictionCol="prediction")
- rmse = evaluator.evaluate(predictions)
- print("Root Mean Squared Error = " + str(rmse))
-
- # 为用户推荐电影
- userRecs = model.recommendForAllUsers(10)
-
- # 打印部分用户的推荐结果
- userRecs.show()
-
- # 停止Spark会话
- spark.stop()
在这段代码中,我们使用了 Apache Spark 的 ALS (Alternating Least Squares) 算法来构建电影推荐系统。我们首先读取包含用户对电影评分的数据集,然后将数据集划分为训练集和测试集。接着,我们构建 ALS 模型并对测试集进行预测,最后评估模型的准确度并为用户推荐电影。
请注意,以上代码仅为演示目的,实际应用中需要根据数据集的格式和具体需求进行相应的调整和优化。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。