完整的推荐系统架构设计(精)

合集下载

【推荐系统篇】--推荐系统介绍和基本架构流程

【推荐系统篇】--推荐系统介绍和基本架构流程

【推荐系统篇】--推荐系统介绍和基本架构流程⼀、前述推荐系统是企业中常⽤的技术,所以系统的掌握推荐系统的知识是很有必要的。

本专栏主要讲述⼿机APP下载的项⽬。

常⽤的推荐⽅法有两个,分别是基于物品的推荐和基于⽤户的推荐。

基于⽤户的推荐原理是:跟你喜好相似的⼈喜欢的东西你也很有可能喜欢(userBaseCF)。

基于物品的推荐原理是:跟你喜欢的东西类似的东西你也可能喜欢(itemBaseCF)。

我们这⾥⽤到的是itembaseCF,本质是依据特征找⽤户喜好规律。

显式的⽤户反馈:这类是⽤户在⽹站上⾃然浏览或者使⽤⽹站以外,显式的提供反馈信息,例如⽤户对物品的评分,或者对物品的评论。

隐式的⽤户反馈:这类是⽤户在使⽤⽹站时产⽣的数据,隐式的反应了⽤户对物品的喜好,例如⽤户购买了某物品,⽤户查看了某物品的信息等等。

本项⽬基于隐式的⽤户反馈。

⼆、协同过滤算法详述结论:对于⽤户A,根据⽤户的历史偏好,这⾥只计算得出⼀个邻居⽤户C,然后将⽤户C喜欢的物品D推荐给⽤户A结论:基于⽤户的推荐(长虚线)---1和5⽐较相似,5买了104商品,所以把104推荐给⽤户1。

基于物品的推荐(短虚线)---101物品和104物品⽐较相似,所以当⽤户买了101,把104也推荐给他。

三、lambda架构(所有推荐系统的⽗架构)四、本⽂系统架构lmbda架构(⼿机APP下载)解释:1.选⽤逻辑回归算法原因是⽤户要么下载,要么不下载。

2.⽣成特征索引(实际上是⼀个⽂本⽂件)的原因是格式化测试数据,也是相当于降维,当⼀个userId进来时找到推荐服务,然后通过服务路由去查找HBase中的数据,并根据特征索引来取对应的特征,所以这⼀步相当于⼀个降维。

线上架构(测试集架构):关联特征:保存的是同现矩阵。

流程:核⼼思想(计算⽤户对所有APP(除去历史下载部分)的评分,按分值排序,然后取topn)问题:五、需求分析(架构推荐⽅案)1、数据清洗(得到训练数据)2、算法建模(得到模型结果)3、模型使⽤(得到推荐结果)4、结果评估(推荐结果评估)。

(完整版)很详细的系统架构图-强烈推荐

(完整版)很详细的系统架构图-强烈推荐

很详细的系统架构图--专业推荐2013.11.71.1.共享平台逻辑架构设计如上图所示为本次共享资源平台逻辑架构图,上图整体展现说明包括以下几个方面:1 应用系统建设本次项目的一项重点就是实现原有应用系统的全面升级以及新的应用系统的开发,从而建立行业的全面的应用系统架构群。

整体应用系统通过SOA面向服务管理架构模式实现应用组件的有效整合,完成应用系统的统一化管理与维护。

2 应用资源采集整体应用系统资源统一分为两类,具体包括结构化资源和非机构化资源。

本次项目就要实现对这两类资源的有效采集和管理。

对于非结构化资源,我们将通过相应的资源采集工具完成数据的统一管理与维护。

对于结构化资源,我们将通过全面的接口管理体系进行相应资源采集模板的搭建,采集后的数据经过有效的资源审核和分析处理后进入到数据交换平台进行有效管理。

3 数据分析与展现采集完成的数据将通过有效的资源分析管理机制实现资源的有效管理与展现,具体包括了对资源的查询、分析、统计、汇总、报表、预测、决策等功能模块的搭建。

4 数据的应用最终数据将通过内外网门户对外进行发布,相关人员包括局内各个部门人员、区各委办局、用人单位以及广大公众将可以通过不同的权限登录不同门户进行相关资源的查询,从而有效提升了我局整体应用服务质量。

综上,我们对本次项目整体逻辑架构进行了有效的构建,下面我们将从技术角度对相关架构进行描述。

1.2.技术架构设计如上图对本次项目整体技术架构进行了设计,从上图我们可以看出,本次项目整体建设内容应当包含了相关体系架构的搭建、应用功能完善可开发、应用资源全面共享与管理。

下面我们将分别进行说明。

1.3.整体架构设计上述两节,我们对共享平台整体逻辑架构以及项目搭建整体技术架构进行了分别的设计说明,通过上述设计,我们对整体项目的架构图进行了归纳如下:综上,我们对整体应用系统架构图进行了设计,下面我们将分别进行说明。

1.3.1.应用层级说明整体应用系统架构设计分为五个基础层级,通过有效的层级结构的划分可以全面展现整体应用系统的设计思路。

基于人工智能的个性化推荐系统架构设计

基于人工智能的个性化推荐系统架构设计

基于人工智能的个性化推荐系统架构设计第一章绪论 (2)1.1 系统概述 (3)1.2 技术背景 (3)1.3 系统目标 (3)第二章个性化推荐系统概述 (4)2.1 推荐系统定义 (4)2.2 个性化推荐原理 (4)2.3 推荐系统分类 (4)第三章用户行为数据采集与处理 (5)3.1 数据采集方法 (5)3.1.1 网络爬虫技术 (5)3.1.2 数据接口调用 (5)3.1.3 用户主动输入 (6)3.2 数据预处理 (6)3.2.1 数据清洗 (6)3.2.2 数据转换 (6)3.3 数据存储与查询 (6)3.3.1 数据存储 (6)3.3.2 数据查询 (6)第四章用户画像构建 (7)4.1 用户画像概念 (7)4.2 用户画像构建方法 (7)4.2.1 数据来源 (7)4.2.2 用户画像构建步骤 (7)4.2.3 用户画像构建算法 (7)4.3 用户画像应用 (8)第五章内容推荐算法 (8)5.1 基于内容的推荐算法 (8)5.2 内容特征提取 (8)5.3 内容推荐算法优化 (9)第六章协同过滤推荐算法 (9)6.1 用户基协同过滤 (9)6.1.1 算法原理 (9)6.1.2 算法步骤 (9)6.1.3 算法优缺点 (10)6.2 物品基协同过滤 (10)6.2.1 算法原理 (10)6.2.2 算法步骤 (10)6.2.3 算法优缺点 (10)6.3 模型融合与优化 (10)6.3.1 特征融合 (10)6.3.2 模型融合 (10)6.3.3 参数优化 (11)6.3.4 稀疏性处理 (11)6.3.5 冷启动问题处理 (11)6.3.6 实时推荐 (11)第七章深度学习推荐算法 (11)7.1 神经协同过滤 (11)7.1.1 算法原理 (11)7.1.2 神经协同过滤模型 (11)7.1.3 训练与优化 (11)7.2 序列模型推荐 (12)7.2.1 算法原理 (12)7.2.2 序列模型推荐方法 (12)7.2.3 模型训练与优化 (12)7.3 深度强化学习推荐 (12)7.3.1 算法原理 (12)7.3.2 深度强化学习推荐模型 (12)7.3.3 模型训练与优化 (12)第八章推荐系统评估与优化 (13)8.1 推荐效果评估指标 (13)8.2 评估方法与工具 (13)8.3 系统优化策略 (14)第九章推荐系统应用场景 (14)9.1 电商推荐 (14)9.2 社交网络推荐 (15)9.3 其他应用场景 (15)第十章未来发展趋势与挑战 (15)10.1 技术发展趋势 (15)10.1.1 模型算法的优化与创新 (15)10.1.2 多模态数据的融合与应用 (16)10.1.3 边缘计算与云计算的融合 (16)10.2 行业应用挑战 (16)10.2.1 数据隐私保护 (16)10.2.2 知识图谱的构建与应用 (16)10.2.3 跨域推荐与冷启动问题 (16)10.3 可持续发展策略 (16)10.3.1 加强技术创新 (17)10.3.2 注重数据治理 (17)10.3.3 深化行业合作 (17)10.3.4 培养专业人才 (17)第一章绪论1.1 系统概述互联网技术的飞速发展,个性化推荐系统在电商、社交网络、在线教育等领域发挥着越来越重要的作用。

智慧图书馆智能书架推荐系统建设方案

智慧图书馆智能书架推荐系统建设方案

智慧图书馆智能书架推荐系统建设方案第一章概述 (2)1.1 项目背景 (2)1.2 项目目标 (2)1.3 项目意义 (3)第二章智慧图书馆智能书架推荐系统设计理念 (3)2.1 设计原则 (3)2.2 设计思路 (3)2.3 技术路线 (4)第三章系统需求分析 (4)3.1 功能需求 (4)3.1.1 书架信息管理 (4)3.1.2 书籍信息管理 (4)3.1.3 读者信息管理 (5)3.1.4 借阅信息管理 (5)3.1.5 推荐算法 (5)3.1.6 数据分析 (5)3.2 非功能需求 (5)3.2.1 系统稳定性 (5)3.2.2 数据安全性 (5)3.2.3 系统可扩展性 (5)3.2.4 界面友好性 (5)3.2.5 系统兼容性 (5)3.3 用户需求 (5)3.3.1 读者 (5)3.3.2 图书管理员 (5)3.3.3 系统管理员 (6)第四章系统架构设计 (6)4.1 系统总体架构 (6)4.2 关键模块设计 (6)4.3 数据库设计 (7)第五章智能书架硬件设计 (8)5.1 书架结构设计 (8)5.2 传感器选型与布局 (8)5.3 通信模块设计 (8)第六章推荐算法研究与实现 (9)6.1 推荐算法概述 (9)6.2 常见推荐算法分析 (9)6.2.1 内容推荐算法 (9)6.2.3 深度学习推荐算法 (9)6.3 自定义推荐算法设计 (9)6.3.1 数据预处理 (10)6.3.2 用户兴趣模型构建 (10)6.3.3 图书相似度计算 (10)6.3.4 推荐策略设计 (10)6.3.5 算法优化与评估 (10)第七章系统开发与实现 (10)7.1 开发环境与工具 (10)7.2 系统开发流程 (11)7.3 系统测试与优化 (11)第八章系统安全与隐私保护 (12)8.1 安全防护措施 (12)8.2 数据加密与解密 (12)8.3 用户隐私保护策略 (13)第九章系统运维与管理 (13)9.1 系统运维策略 (13)9.2 系统监控与报警 (14)9.3 系统维护与升级 (14)第十章项目实施与评估 (14)10.1 项目实施计划 (14)10.1.1 实施阶段划分 (14)10.1.2 实施步骤 (15)10.2 项目验收与评估 (15)10.2.1 验收标准 (15)10.2.2 验收流程 (15)10.3 项目后期维护与改进 (15)10.3.1 维护策略 (16)10.3.2 改进方向 (16)第一章概述1.1 项目背景信息技术的飞速发展,图书馆作为知识的宝库,其服务模式也在不断更新与变革。

《2024年基于Spark的推荐系统的设计与实现》范文

《2024年基于Spark的推荐系统的设计与实现》范文

《基于Spark的推荐系统的设计与实现》篇一一、引言随着互联网的快速发展,数据量呈现出爆炸式的增长,如何有效地利用这些数据为用户提供精准的推荐服务成为了亟待解决的问题。

推荐系统通过分析用户的历史行为、兴趣偏好等数据,为用户提供个性化的推荐服务,提高用户体验和满意度。

本文将介绍基于Spark的推荐系统的设计与实现,通过利用Spark的大规模数据处理能力,提高推荐系统的准确性和效率。

二、系统设计1. 需求分析在系统设计阶段,首先需要对需求进行深入的分析。

基于Spark的推荐系统需要具备以下功能:(1)支持大规模数据处理:能够处理海量用户数据和物品数据,提供实时的推荐服务。

(2)高准确性:通过分析用户的历史行为和兴趣偏好,提供准确的推荐结果。

(3)可扩展性:系统应具备良好的可扩展性,以适应未来数据量的增长。

2. 系统架构设计基于需求分析,我们设计了一个基于Spark的推荐系统架构。

该架构主要包括数据预处理层、推荐算法层、结果输出层三部分。

(1)数据预处理层:负责从数据源中获取用户数据和物品数据,并进行清洗、转换和存储。

(2)推荐算法层:利用Spark的大规模数据处理能力,实现多种推荐算法,如协同过滤、内容过滤、深度学习等,以提供准确的推荐结果。

(3)结果输出层:将推荐结果以适当的形式输出给用户,如网页、APP等。

3. 推荐算法实现在推荐算法层,我们实现了基于协同过滤的推荐算法。

该算法通过分析用户的历史行为和兴趣偏好,找出与目标用户相似的其他用户,然后根据这些相似用户的喜好为目标用户提供推荐。

同时,我们还采用了Spark的分布式计算能力,提高了算法的运算速度和准确性。

四、系统实现与测试在系统实现阶段,我们根据设计文档完成了系统的编码和测试工作。

经过多次测试和优化,系统性能和准确性得到了显著提升。

五、总结与展望本文介绍了基于Spark的推荐系统的设计与实现过程。

通过利用Spark的大规模数据处理能力,我们实现了高准确性和高效率的推荐系统。

基于大数据技术的个性化电商推荐系统设计

基于大数据技术的个性化电商推荐系统设计

基于大数据技术的个性化电商推荐系统设计随着互联网的发展,电商成为了越来越不可或缺的一部分,人们越来越倾向于在网上购物,而不是去实体店面购买商品,这也进一步推动了电商的发展,电商企业也开始利用大数据技术来推动其业务增长。

在这个过程中,个性化推荐系统变得越来越关键,因为它可以通过分析用户数据和购买历史,给用户提供更具有针对性的商品推荐。

本文将介绍一个基于大数据技术的个性化电商推荐系统的设计。

一、系统架构个性化推荐系统是一个复杂的系统,需要结合多种技术实现。

基于大数据技术的个性化电商推荐系统包括以下几个核心组件:1. 数据采集:系统首先需要收集大量的用户数据,包括用户购买行为、浏览记录、搜索记录等等。

2. 数据清洗:通过数据清洗,去除噪音数据,数据清洗后的数据才能用于推荐算法。

3. 推荐算法:该系统采用基于协同过滤算法的推荐引擎,它可以分析大量的用户数据,自动生成推荐结果。

4. 推荐结果展示:将推荐结果以用户可接受的方式呈现给用户。

5. 实时化:系统可以动态地监控用户的行为,并更新用户画像,这样可以在不断更新的数据基础上提供更精准的推荐结果。

二、技术选型1. 数据采集采用 Flume 进行数据采集,它是一个分布式的、可靠的、高可用的海量日志采集、聚合和传输工具。

通过它,可以轻松地收集各种类型的数据,包括 Web 服务器日志、数据库日志等等。

2. 数据清洗数据清洗使用的是 Apache Spark,它是一个用于大规模数据处理的开源集群计算框架。

它可以使用许多不同的数据源(包括 HDFS、Cassandra、HBase、S3等)进行数据清洗,其性能优于许多其他数据处理引擎。

3. 推荐算法该系统采用基于协同过滤算法的推荐引擎。

协同过滤是一种通过比较用户购买历史和行为偏好进行推荐的算法。

它可以分为基于用户的协同过滤和基于物品的协同过滤。

基于用户的协同过滤是先找到与用户兴趣相似的用户,然后根据这些用户喜欢的商品推荐商品。

在线教育个性化学习推荐系统系统架构设计

在线教育个性化学习推荐系统系统架构设计

在线教育个性化学习推荐系统系统架构设计目录第一节总体架构设计 (3)一、数据采集层 (3)二、数据处理层 (5)三、数据分析层 (7)四、服务提供层 (9)五、用户交互层 (11)第二节功能模块划分 (13)一、用户管理模块 (13)二、课程内容管理模块 (15)三、数据分析与挖掘模块 (17)四、个性化推荐模块 (19)五、反馈与评价模块 (21)声明:本文内容来源于公开渠道或根据行业大模型生成,对文中内容的准确性不作任何保证。

本文内容仅供参考,不构成相关领域的建议和依据。

第一节总体架构设计一、数据采集层在线教育个性化学习推荐系统的核心在于对大数据的采集、处理和应用。

数据采集层作为整个系统的基石,负责收集各类数据,为后续的个性化学习推荐提供数据支持。

(一)数据源1、在线教育平台用户数据:收集用户的注册信息、学习进度、成绩、反馈等数据。

2、学习内容数据:包括课程描述、知识点、习题、答案等与学习资源相关的数据。

3、用户行为数据:记录用户在学习过程中的点击、浏览、搜索、点赞、评论等行为数据。

4、外部数据:引入社会热点、行业动态、考试信息等外部数据,丰富系统数据源。

(二)数据收集技术1、爬虫技术:通过爬虫程序从各类在线教育网站、社交媒体等渠道收集相关数据。

2、API接口:与第三方服务供应商建立API接口,实现数据的自动收集和传输。

3、数据分析工具:利用数据分析工具对数据进行预处理、清洗和整合,确保数据质量。

4、数据存储技术:采用分布式存储技术,确保大规模数据的存储和高效访问。

(三)数据预处理1、数据清洗:去除重复、错误、无关数据,确保数据的准确性和完整性。

2、数据整合:将来自不同来源的数据进行整合,形成统一的数据格式和标准。

3、特征提取:从原始数据中提取关键特征,为后续的模型训练提供有效数据。

4、数据加密:对敏感数据进行加密处理,保护用户隐私和数据安全。

数据采集层作为在线教育个性化学习推荐系统的第一道关卡,其重要性不言而喻。

智能广告推荐系统的设计与实现

智能广告推荐系统的设计与实现

智能广告推荐系统的设计与实现随着互联网的快速发展和智能化技术的不断进步,广告推荐系统在市场营销中越来越受到重视。

智能广告推荐系统可以根据用户的兴趣、行为和偏好,精准地推送适合他们的广告内容,提高广告的点击率和转化率。

本文将就智能广告推荐系统的设计与实现进行探讨。

一、需求分析在设计和实现智能广告推荐系统之前,我们首先需要对系统的需求进行全面的分析。

广告推荐系统的核心目标是提供个性化的广告推荐,以下是一些具体的需求:1. 用户画像:通过收集和分析用户的行为数据,包括浏览记录、点击记录等,建立用户画像,准确描述用户的兴趣和偏好。

2. 广告标签:对广告文本进行语义分析,自动提取关键词和标签,为广告推荐提供基础。

3. 个性化推荐:根据用户画像和广告标签,利用推荐算法为用户推送符合其兴趣和需求的广告内容。

4. 实时推荐:及时监听用户行为,动态更新广告推荐结果,保证推荐的及时性和准确性。

5. 系统可扩展性:系统应具备良好的可扩展性,能够处理大量的用户数据和广告数据,并能够随着业务的发展进行扩展。

二、系统架构设计基于以上需求分析,我们可以设计出如下的智能广告推荐系统的架构:1. 数据收集与存储层:负责收集和存储用户的行为数据和广告数据。

可以使用日志收集工具和数据库进行数据的存储。

2. 用户画像构建层:根据用户的行为数据,采用数据挖掘和机器学习的技术,构建用户画像。

3. 广告标签提取层:对广告文本进行语义分析,自动提取关键词和标签。

可以使用自然语言处理(NLP)的技术,如文本分类、实体识别等。

4. 推荐算法层:根据用户画像和广告标签,采用个性化推荐算法,为用户推荐符合其兴趣和需求的广告内容。

常用的推荐算法包括协同过滤、内容过滤、基于关联规则的推荐等。

5. 实时推荐层:监听用户行为,动态更新广告推荐结果。

可以使用流式计算和实时数据处理的技术,如Apache Kafka和Apache Flink等。

6. 广告展示层:根据推荐结果,将广告内容展示给用户。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

完整的推荐系统架构设计推荐系统是移动互联网时代非常成功的人工智能技术落地场景之一。

本文我们将从架构设计的角度回顾和讨论推荐系统的一些核心算法模块,重点从离线层、近线层和在线层三个架构层面讨论这些算法。

1 架构设计概述架构设计是一个很大的话题,本文这里只讨论和推荐系统相关的部分。

更具体地说,我们主要关注的是算法以及其他相关逻辑在时间和空间上的关系——这样一种逻辑上的架构关系。

下面介绍的是一些经过实践检验的架构层面的最佳实践,以及对这些最佳实践在不同应用场景下的分析。

除此之外,还希望能够通过把各种推荐算法放在架构的视角和场景下重新审视,让读者大家对算法间的关系有更深入的理解,从全局的角度看待推荐系统,而不是只看到一个个孤立的算法。

架构设计的本质之一是平衡和妥协。

一个推荐系统在不同的时期、不同的数据环境、不同的应用场景下会选择不同的架构,在选择时本质上是在平衡一些重要的点。

下面介绍几个常用的平衡点。

▊个性化 vs 复杂度个性化是推荐系统作为一个智能信息过滤系统的安身立命之本,从最早的热榜,到后来的公式规则,再到著名的协同过滤算法,最后到今天的大量使用机器学习算法,其主线之一就是为用户提供个性化程度越来越高的体验,让每个人看到的东西都尽量差异化,并且符合个人的喜好。

为了达到这一目的,系统的整体复杂度越来越高,具体表现为使用的算法越来越多、算法使用的数据量和数据维度越来越多、机器学习模型使用的特征越来越多,等等。

同时,为了更好地支持这些高复杂度算法的开发、迭代和调试,又衍生出了一系列对应的配套系统,进一步增加了整个系统的复杂度。

可以说整个推荐逻辑链条上的每一步都被不断地细化分析和优化,这些不同维度的优化横纵交织,构造出了一个整体复杂度非常高的系统。

从机器学习理论的角度来类比,如果把推荐系统整体看作一个巨大的以区分用户为目标的机器学习模型,则可以认为复杂度的增加对应着模型中特征维度的增加,这使得模型的VC维不断升高,对应着可分的用户数不断增加,进而提高了整个空间中用户的个性化程度。

这条通过不断提高系统复杂度来提升用户个性化体验的路线,也是近年来推荐系统发展的主线之一。

▊时效性 vs 计算量推荐系统中的时效性概念体现在实时服务的响应速度、实时数据的处理速度以及离线作业的运行速度等几个方面。

这几个速度从时效性角度影响着推荐系统的效果,整体上讲,运行速度越快,耗时越少,得到的效果越好。

这是因为响应速度越快,意味着对用户行为、物品信息变化的感知越快,感知后的处理速度越快,处理后结果的反馈就越快,最终体现到用户体验上,就是系统更懂用户,更快地对用户行为做出了反应,从而产生了更好的用户体验。

但这些时效性的优化,带来的是更大的计算量,计算量又对应着复杂的实现逻辑和更多的计算资源。

在设计得当的前提下,这样的付出通常是值得的。

时效性优化是推荐系统中非常重要的一类优化方法和优化思路,但由此带来的计算压力和系统设计的复杂度也是必须要面对的。

▊时间 vs 空间时间和空间之间的平衡关系可以说是计算机系统中最为本质的关系之一,在推荐系统中也不例外。

时间和空间这一对矛盾关系在推荐系统中的典型表现,主要体现在对缓存的使用上。

缓存通常用来存储一些计算代价较高以及相对静态变化较少的数据,例如用户的一些画像标签以及离线计算的相关性结果等。

但是随着越来越多的实时计算的引入,缓存的使用也越来越广泛,常常在生产者和消费者之间起到缓冲的作用,使得二者可以解耦,各自异步进行。

例如实时用户兴趣计算这一逻辑,如果没有将之前计算的兴趣缓存起来,那么在每次需要用户兴趣时都要实时计算一次,并要求在较短的时间内返回结果,这对计算性能提出了较高的要求。

但如果中间有一层缓存作为缓冲,则需求方可以直接从缓存中取来结果使用。

这在结果的实时性和新鲜度上虽然做了一定的妥协,但却能给性能提升带来极大的帮助。

这样就将生产和消费隔离开来,生产者可以根据具体情况选择生产的方式和速度。

当然,仍然可以努力提高生产速度,生产速度越快,缓存给时效性带来的损失就越小,消费者不做任何改动就可以享受到这一提升效果。

所以说,这种利用缓存来解耦系统,带来性能上的提升以及开发的便利,也是在推荐系统架构设计中需要掌握的一种通用的思路。

上面介绍的一些基本性原则贯穿着推荐系统架构设计的方方面面,是一些具有较高通用性的思路,掌握这些思路,可以产生出很多具体的设计和方法;反过来,每一种设计技巧或方法,也都可以映射到一个或几个这样的高层次抽象原则上来。

这种自顶向下的思维学习方法对于推荐系统的架构设计是非常重要的,并且可以推广到很多其他系统的设计中。

2 系统边界和外部依赖架构设计的第一步是确定系统的边界。

所谓边界,就是区分什么是这个系统要负责的,也就是边界内的部分,以及什么是这个模型要依赖的,也就是边界外的部分。

划分清楚边界,意味着确定了功能的边界以及团队的边界,能够让后期的工作都专注于核心功能的设计和实现。

反之,如果系统边界没有清晰的定义,可能会在开发过程中无意识地侵入其他系统中,形成冗余甚至矛盾,或者默认某些功能别人会开发而将其忽略掉。

无论哪种情况,都会影响系统的开发乃至最终的运转。

系统边界的确定,简单来说,就是在输入方面确定需要别人给我提供什么,而在输出方面确定我要给别人提供什么。

在输入方面,就是判断什么输入是需要别人提供给我的,要把握的主要原则包括:这个数据或服务是否与我的业务强相关在推荐业务中用到的每个东西,并不是都与推荐业务强相关,例如电商推荐系统中的商品信息,只有与推荐业务强相关的服务才应该被纳入推荐系统的边界中。

•这个数据或服务除了我的业务在使用,是否还有其他业务也在使用例如上面说到的商品信息服务,除了推荐系统在使用,其他子系统也在广泛使用,那么显然它应该是一个外部依赖。

也有例外情况,例如推荐系统要用到一些其他系统都用不到的商品信息,这时候,虽然理论上应该升级商品信息服务来支持推荐系统,但由于其他地方都用不到这些信息,因此很多时候可能需要推荐系统的负责团队来实现这样一个定制化服务。

依照此原则,下图展示了推荐系统的主要外部依赖。

▊1、数据依赖推荐系统作为一个典型的数据算法系统,数据是其最重要的依赖。

这里面主要包括用户行为数据和物品数据两大类,前面介绍的各种算法几乎都是以这两种数据作为输入进行计算的。

这些数据除了为推荐系统所用,它们也是搜索、展示等其他重要系统的输入数据,所以作为通用的公共数据和服务,显然不应该在推荐系统的边界内部,而应该是外部依赖。

需要特别指出的是,虽然有专门的团队负责行为数据的收集,但是收集到的数据是否符合推荐系统的期望却不是一件可以想当然的事情。

例如,对于结果展示的定义,数据收集团队认为前端请求到了结果就是展示,但对于推荐系统来说,只有用户真正看见了才是真实的展示。

其中的原因在于数据收集团队并不直接使用数据,那么他们就无法保证数据的正确性,这时就需要具体使用数据的业务方,在这里是推荐团队,来和他们一起确认数据收集的逻辑是正确的。

如果数据收集的逻辑不正确,后面的算法逻辑就是在做无用功。

花在确保数据正确上的精力和资源,几乎总是有收益的。

▊2、平台工具依赖推荐系统是一个计算密集型的系统,需要对各种形态的数据做各种计算处理,在此过程中,需要一整套计算平台工具的支持,典型的如机器学习平台、实时计算平台、离线计算平台、其他平台工具等。

在一个较为理想的环境中,这些平台工具都是由专门的团队来构建和维护的。

而在一些场景下,推荐系统可能是整个组织中最早使用这些技术的系统,推荐业务也还没有重要和庞大到需要老板专门配备一个平台团队为之服务的程度,在这种情况下,其中的一些平台工具就需要推荐系统的团队自己负责来构建和维护了。

为了简化逻辑,下面我们假设这些平台工具都是独立于推荐系统存在的,属于推荐系统的外部依赖。

在对外输出方面,系统边界的划定会根据公司组织的不同有所差异。

例如,在一些公司中,推荐团队负责的是与推荐相关的整个系统,在输出方面的体现就是从算法逻辑到结果展示,这时候系统的边界就要延伸到最终的结果展示。

而在另外一些公司中,前端展示是由一个大团队统一负责的,这时候推荐系统只需要给出要展示的物品ID和相关展示信息即可,前端团队会负责统一展示这些物品信息。

这两种模式没有绝对的好坏之分,重要的是要与整个技术团队的规划和架构相统一。

在本书中,为了叙述简便,我们不讨论前端展示涉及的内容,只专注于推荐结果的生产逻辑。

推荐系统的效果和性能在一定程度上取决于这些依赖系统,所以在寻求推荐系统的优化目标时,目光不能只看到推荐系统本身,很多时候这些依赖系统也是重要的效果提升来源。

例如,物品信息的变更如果能被更快地通知到推荐系统,那么推荐系统的时效性就会更好,给到用户的结果也就会更好;再如,用户行为数据收集的准确性能有所提高的话,对应的相关性算法的准确性也会随之提高。

在有些情况下,外部系统升级会比优化算法有更大的效果提升。

当然,推荐系统的问题也可能来自这些外部的依赖系统。

例如,前端渲染展示速度的延迟会导致用户点击率的显著下降,因为这会让用户失去耐心。

所以,当推荐系统指标出现下降时,不光要从内部找问题,也要把思路拓展到系统外部,从全局的角度去找问题。

综合来讲,外部依赖的存在启发我们要从全链条、全系统的角度来看问题,找问题,以及设计优化方法。

3 离线层、在线层和近线层架构架构设计有很多不同的切入方式,最简单也是最常用的一种方式就是先决定某个模块或逻辑是运行在离线层、在线层还是近线层。

这三层的对比如下。

任何使用非实时数据、提供非实时服务的逻辑模块,都可以被定义为离线模块。

其典型代表是离线的协同过滤算法,以及一些离线的标签挖掘类算法。

离线层通常用来进行大数据量的计算,由于计算是离线进行的,因此用到的数据也都是非实时数据,最终会产出一份非实时的离线数据,供下游进一步处理使用。

与离线层相对的是在线层,也常被称为服务层,这一层的核心功能是对外提供服务,实时处理调用方的请求。

这一层的典型代表是推荐系统的对外服务接口,接受实时调用并返回结果。

在线层提供的服务是实时的,但用到的数据却不一定局限于实时数据,也可以使用离线计算好的各种数据,例如相关性数据或标签数据等,但前提是这些数据已经以对实时友好的形态被存储起来。

近线层则处于离线层和在线层的中间位置,是一个比较奇妙的层。

这一层的典型特点就是:使用实时数据(也会使用非实时数据),但不提供实时服务,而是提供一种近实时的服务。

所谓近实时指的是越快越好,但并不强求像在线层一样在几十毫秒内给出结果,因为通常在近线层计算的结果会写入缓存系统,供在线层读取,做了一层隔离,因此对时效性无强要求。

其典型代表是我们前面讲过的实时协同过滤算法,该算法通过用户的实时行为计算最新的相关性结果,但这些计算结果并不是实时提供给用户的,而是要等到用户发起请求时才会把最新的结果提供给他使用。

相关文档
最新文档