其中,抽象函数 (U,I,C) 被称为推荐系统模型,负责“猜测”用户的心,为用户可能感兴趣的物品打分,从而得出最终的推荐物品列表。
深度学习复杂的模型结构,让深度学习模型具备了理论上拟合任何函数的能力
负责“用户”、“物品”、“场景”信息的收集与处理。按照实时性的强弱排序,可以分为客户端与服务器端实时数据处理、流处理平台准实时数据处理、大数据平台离线数据处理。在实时性由强到弱递减的同时,三种平台的海量数据处理能力则由弱到强。因此,一个成熟推荐系统的数据流系统会将三者取长补短,配合使用。
用户:包括历史行为、人口属性、关系网络等
物品:推荐的场景,如新闻、视频、商品等
场景:上下文信息,包括时间、地点、用户状态等
大数据计算平台通过对推荐系统日志,物品和用户的元数据等信息的处理,获得了推荐模型的训练数据、特征数据、统计数据等。大数据平台加工后的数据出口主要有 3 个:
推荐系统的“模型部分”是推荐系统的主体。模型的结构一般由召回层、排序层以及补充策略与算法层组成。
从推荐系统模型接收到所有候选物品集,到最后产生推荐列表,这一过程一般叫做“模型服务过程”。为了生成模型服务过程所需的模型参数,我们需要通过模型训练(Model Training)确定模型结构、结构中不同参数权重的具体数值,以及模型相关算法和策略中的参数取值。
模型的训练方法根据环境的不同,可以分为“离线训练”和“在线更新”两部分。其中,离线训练的特点是可以利用全量样本和特征,使模型逼近全局最优点,而在线更新则可以准实时地“消化”新的数据样本,更快地反应新的数据变化趋势,满足模型实时性的需求。
除此之外,为了评估推荐系统模型的效果,以及模型的迭代优化,推荐系统的模型部分还包括“离线评估”和“线上 A/B 测试”等多种评估模块,用来得出线下和线上评估指标,指导下一步的模型迭代优化。
深度学习基础知识点击 👉🏻 深度学习基础
项目导入:
git clone https://github.com/wzhe06/SparrowRecSys.git
运行主函数 com.wzhe.sparrowrecsys.online.RecSysServer,打开6010端口即可查看前端效果。
Sparrow RecSys,全称 Sparrow Recommender System,中文名“麻雀推荐系统”,名字取自“麻雀虽小,五脏俱全”之意。
Sparrow RecSys 是一个电影推荐系统,具备“相似推荐”“猜你喜欢”等经典的推荐功能,在页面设置上,主要由“首页”“电影详情页”和“为你推荐页”组成。
Sparrow RecSys 的首页由不同类型的电影列表组成,当用户首次访问首页时,系统默认以历史用户的平均打分从高到低排序,随着当前用户不断为电影打分,系统会对首页的推荐结果进行个性化的调整,比如电影类型的排名会进行个性化调整,每个类型内部的影片也会进行个性化推荐。
其次,是电影详情页。
可以看到电影详情页除了罗列出电影的一些基本信息,最关键的部分是相似影片的推荐。相似内容推荐是几乎所有推荐系统非常重要的功能,传统的推荐系统基本依赖于基于内容(Content based)的推荐方法。
最后,是为你推荐页。
这一部分也是整个推荐系统中最重要的部分,是用户的个性化推荐页面。这个页面会根据用户的点击、评价历史进行个性化推荐。这几乎是所有推荐系统最经典和最主要的应用场景。我希望在这门课程中,你能够动手完成个性化推荐中的每个关键步骤,包括但不限于特征的处理、候选集的召回、排序层主要模型等等。
MovieLens 的数据集包括三部分,分别是 movies.csv(电影基本信息数据)、ratings.csv(用户评分数据)和 links.csv(外部链接数据)
涉及到的技术栈如下:
Spark: 当今大数据领域最活跃、最热门、最高效的大数据通用计算平台之一。常用于迭代计算、交互式计算和流计算领域。
Flink:开源的流批一体分布式计算框架,具备高吞吐、低延迟、精确一次语义等特性,广泛应用于实时数据分析、ETL、欺诈检测等场景。
Redis:开源的、高性能的键值对内存数据库,支持多种数据结构(如字符串、哈希、列表等),具备持久化功能,常用于缓存、消息队列、分布式锁等场景以提升系统性能和处理效率。
HDFS:Apache Hadoop 项目的分布式文件系统,具有高容错、高可扩展性特点,适合存储大规模数据集,可将大文件切分存储在多个节点,广泛用于大数据存储与处理场景。
Spark MLlib:Apache Spark中的可扩展机器学习库,它提供了常见机器学习算法和实用工具,支持多种数据类型和分布式计算,基于 Spark 的内存计算能力,能高效处理大规模数据集,涵盖分类、回归、聚类等众多机器学习任务,且兼容多种编程语言,方便开发者进行模型开发与训练。
TensorFlow:谷歌开源的端到端开源机器学习平台,具备灵活的架构,支持在多种设备与环境运行,提供丰富的工具、库和社区资源,可助力开发者高效构建、训练和部署从简单到复杂的各类机器学习和深度学习模型,广泛应用于图像识别、自然语言处理等诸多领域。
MLeap:一个用于跨平台部署机器学习模型的工具包,它允许用户将训练好的模型(如 Spark ML、Scikit - learn 等模型)进行序列化和打包,实现模型在不同环境(包括低资源环境)间的无缝移植与高效执行,简化了模型从训练到生产部署的流程。
TensorFlow serving:谷歌开源的高性能机器学习模型服务系统,支持多版本模型管理,能灵活部署在不同环境,可高效处理大量预测请求以满足生产需求。
Jetty:一款开源的轻量级Java HTTP服务器、客户端及Servlet容器,采用模块化设计,支持多种协议,启动快且资源占用少。