温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
深度
学习
Spark
电影
推荐
系统
应用
黄宏昆
第 39 卷 第 2 期 福 建 电 脑 Vol.39 No.2 2023 年 2 月 Journal of Fujian Computer Feb.2023 本文得到福建省教育厅中青年教师教育科研项目(No.JAT190742)、龙岩学院青年攀登项目(No.LQ2017005)、龙岩学院校级教改课题(No.2019JY25)资助。黄宏昆(通信作者),男,1990年生,主要研究领域为物联网应用、机器学习。E-mail:。彭明,男,1988年生,主要研究领域为机器学习、数据挖掘。E-mail:。深度学习和 Spark 在电影推荐系统上的应用 黄宏昆 彭明(龙岩学院数学与信息工程学院 福建 龙岩 364012)摘 要 为给用户提供简易高效的电影浏览体验,本文基于 Spark 和几种深度学习模型设计实现一个电影推荐系统。采用Spark 对数据进行处理并存储到 Redis 中供推荐模型使用;使用 Embedding 和局部敏感哈希等技术快速召回候选物品;利用深度学习推荐模型进行排序,借助 TensorFlow Serving 将推荐模型部署上线;通过 web 框架实现前后端搭建,最终将推荐物品列表呈现给用户。实践结果表明,该系统具有很好的稳定性和实时性,在一定程度上提升了推荐效果。关键词 电影推荐系统;Spark 数据仓库;深度学习模型 中图法分类号 TP391 DOI:10.16707/ki.fjpc.2023.02.004 The Application of Deep Learning and Spark in Movie Recommendation System HUANG Hongkun,PENG Ming (Department of Mathematics&Information,Longyan University,Longyan,China,364012)Abstract In order to provide users with a simple and efficient movie browsing experience,this study designs and implements a movie recommendation system based on Spark and several deep learning models.Spark is used to process the data and store it in Redis for use by the recommended model;Quickly recall candidate items using technologies such as embedding and local sensitive hashing;Use the deep learning recommendation model to sort,and deploy the recommendation model online with TensorFlow Serving;The front end and back end are built through the web framework,and finally the list of recommended items is presented to users.The practice results show that the system has good stability and real-time performance,which improves the recommendation effect to a certain extent.Keywords Movie Recommendation System;Spark Data Warehouse;Deep Learning Model 1 引言 深度学习应用于推荐系统,能够极大地增强推荐模型的拟合能力和表达能力。由于深度学习模型的结构复杂度大大提高,使通过训练使模型收敛所需的数据量大大增加,这也反向推动了推荐系统大数据平台的发展,让推荐系统相关的大数据存储、处理、更新模块也一同迈入了“深度学习时代”1。推荐模型是推荐系统中核心部分,经历了传统的基于内容推荐、协同过滤推荐和混合推荐到基于深度学习推荐的发展过程2。2013 年,百度率先在广告系统中应用了深度学习3,随着在 2015 之后,阿里提出并应用了从 MLR(Mixed Logistic Regression)到DIEN(Deep Interest Evolution Network)等一系列的深度学习模型4。国外的互联网巨头也不逞多让,从最早的 Google 的 Word2vec5,到 2015 年YouTube 的深度学习推荐系统6,再到之后的Facebook、Amazon、微软等等,几乎所有头部公司的成功应用,让深度学习如后浪般席卷推荐系统业界,将传统的推荐模型逐渐取代。本文基于现有深度学习推荐模型,结合大数据处理生态设计并实现一个电影推荐系统。通过TensorFlow实 现Embedding MLP(MultiLayer 18 黄宏昆等:深度学习和 Spark 在电影推荐系统上的应用 第 2 期 Perceptron)、Wide&Deep、NeuralCF(Neural Collaborative Filtering)和DeepFM(Deep Factorization-Machine)等四种深度学习推荐模型,并借助 TensorFlow Serving 部署上线7-11;通过Spark、Hadoop HDFS、Flink 等大数据技术存储、处理和更新推荐系统数据12。2 系统设计 2.1 系统架构 推荐系统的技术架构按照数据和信息、推荐系统算法和模型两部分展开的,其中数据和信息部分融合了数据离线批处理、实时流处理的数据流框架;算法和模型部分集训练(Training)、评估(Evaluation)、部署(Deployment)、线上推断(Online Inference)于一体。数据信息模块、推荐算法模型模块,再结合具体推荐系统的业务模块就构成了一个完整的推荐系统。基于此,设计出如图1 所示的电影推荐系统的技术架构。图 1 电影推荐系统架构 2.2 数据部分 推荐系统的“数据部分”主要负责“用户”、“物品”、“场景”信息的收集与处理。根据处理数据量和处理实时性的不同,用到三种不同的数据处理方式,按照实时性的强弱排序:客户端与服务器端实时数据处理、流处理平台准实时数据处理、大数据平台离线数据处理。在实时性由强到弱递减的同时,三种平台的海量数据处理能力则由弱到强。2.3 模型部分 推荐系统的“模型部分”是推荐系统的主体。模型的结构由“召回层”、“排序层”以及“补充策略与算法层”组成。其中,“召回层”由高效的召回规则、算法或简单的模型组成,让推荐系统能快速从海量的候选集中召回用户可能感兴趣的物品。“排序层”则是利用排序模型对初筛的候选集进行精排序。而“补充策略与算法层”,也被称为“再排序层”,是在返回给用户推荐列表之前,为兼顾结果的多样性、流行度、新鲜度等指标,结合一些补充的策略和算法对推荐列表进行一定的调整,最终形成用户可见的推荐列表。模型的训练方法分为“离线训练”和“在线更新”两部分。其中,离线训练的特点是可以利用全量样本和特征,使模型逼近全局最优点,而在线更新则可以准实时地“消化”新的数据样本,更快地反应新的数据变化趋势,满足模型实时性的需求。模型部分还包括“离线评估”和“线上 A/B 测试”等多种评估模块,用来得出线下和线上评估指标,指导下一步的模型迭代优化。2.4 业务部分 推荐系统的“业务部分”分为后台服务和前端展示交互,电影推荐系统后台部分使用 Jetty 作为Web Server,前端部分使用 Ajax 和 HTML 完成页面展示交互。电影推荐系统业务功能简洁,仅实现电影推荐的核心功能,它具备“相似推荐”、“猜你喜欢”等经典的推荐功能,在页面设置上,主要由“首页”、“电影详情页”和“为你推荐页”组成。3 推荐系统的构建 如图 1 所示,推荐系统的核心是推荐模型,根据实际业务选择最适合的推荐模型是关键,利用特征工程手段方法给模型源源不断地输送高价值的数据能极大的提高推荐模型的推荐效果。本节介绍如何基于深度学习推荐模型构建一款电影推荐系统,业务部分的开发非讨论范围。本文主要探讨:数据处理、几种推荐模型、推荐模型的评估和推荐模型的部署。3.1 数据处理 在推荐系统领域有许多公开的数据集2,选择使用 MovieLens 数据集。MovieLens 由明尼苏达大2023 年 福 建 电 脑 19 学发布,主要包括三部分,分别是 movies.csv(电影基本信息数据)、ratings.csv(用户评分数据)和 links.csv(外部链接数据),相关文件的信息如表 1所示。表 1 数据文件的相关信息描述 文件名 文件功能 数据格式 备注 movies.csv 电影基本信息 movieId,title,genres 电影的 ID,电影名,影片风格 ratings.csv 用户评分数据 userId,movieId,rating,timestamp 某个用户在某个时间戳对某个电影的评分 links.csv 外部链接数据 movieId,imdbId,tmdbId 当前影片对应IMDB,TMDB中的 ID 推荐系统中可用的特征分为物品特征、用户特征和场景特征,所有的特征又可以分为两大类别:类别型特征与数值型特征。进行数据处理的目的,是把所有的特征全部转换成一个数值型的特征向量以便推荐模型使用。对于数值型特征,直接把这个数值放到特征向量上相应的维度上;对于类别型特征则使用 One-hot 与 Multi-hot 编码,分别使用Spark MLlib的OneHotEncoderEstimator与MultiHotEncoderEstimator 完成转换。在实际处理时遇到问题及解决方法为:One-hot 与 Multi-hot 编码特征太稀疏、数值型特征的特征尺度问题、数据型特征的特征分布问题。使用 Embedding 技术解决特征稀疏,使用归一化和分桶技术解决数值型特征问题。在 Spark MLlib 中,分 别 提 供 了 两 个 转 换 器MinMaxScaler和QuantileDiscretizer,来进行归一化和分桶的特征处理,提供了 Item2vec 模型进行 Embedding 处理。3.2 推荐模型 推荐模型分成三个阶段:召回阶段、排序阶段与补充策略算法阶段。召回阶段使用简单高效的模型快速的从海量物品中筛选候选物品,排序阶段则利用复杂强大的模型对候选物品进行精排序,最后结合补充策略对结果进行调整避免信息茧房。本文在排序阶段试验四种深度学习推荐模型并对它们进行了评估。3.2.1 Embedding MLP 微 软 的 深 度 学 习 模 型 Deep Crossing7是Embedding MLP 模型的代表。Embedding MLP 五层结构的重点:对于类别特征,先利用 Embedding层进行特征稠密化,再利用 Stacking 层连接其他特征,输入 MLP 的多层结构,最后用 Scoring 层预估结果。3.2.2 Wide&Deep Wide&Deep8模型由 Google 的应用商店团队Google Play 提出,它是由左侧的 Wide 部分和右侧的 Deep 部分组成的。Wide 部分的结构简单,把输入层直接连接到输出层,中间没有做任何处理。Deep 层的结构稍复杂,是一个 Embedding MLP 的模型结构。Wide 部分的主要作用是让模型具有较强的“记忆能力”(Memorization),Deep 部分的主要作用是让模型具有“泛化能力”(Generalization),这样的结构特点,能让模型兼具逻辑回归和