《推荐系统开发实战》之业内推荐系统架构介绍

2023-10-29 04:40

本文主要是介绍《推荐系统开发实战》之业内推荐系统架构介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转载请注明出处:http://blog.csdn.net/gamer_gyt
博主微博:http://weibo.com/234654758
Github:https://github.com/thinkgamer
公众号:搜索与推荐Wiki
个人网站:http://thinkgamer.github.io


不管是电商网站,还是新闻资讯类网站,推荐系统都扮演着十分重要的角色。一个优秀的推荐系统能够推荐出让人满意的物品,但这不仅是推荐算法的功劳,整个推荐架构所扮演的角色也举足轻重。

学术界往往更加关注推荐算法的各项评估指标。从基本的协同过滤到点击率预估算法,从深度学习到强化学习,学术界都始终走在最前列。一个推荐算法从出现到在业界得到广泛应用是一个长期的过程,因为在实际的生产系统中,首先需要保证的是稳定、实时地向用户提供推荐服务,在这个前提下才能追求推荐系统的效果。

在生产系统中,不管是用户维度、物品维度还是用户和物品的交互维度,数据都是极其丰富的,学术界对算法的使用方法不能照搬到工业界。当一个用户访问推荐模块时,系统不可能针对该用户对所有的物品进行排序,那么推荐系统是怎么解决的呢?对应的商品众多,如何决定将哪些商品展示给用户?对于排序好的商品,如何合理地展示给用户?

架构介绍

图14-1所示是业界推荐系统通用架构图,主要包括:底层基础数据、数据加工存储、召回内容、计算排序、过滤和展示、业务应用。
底层基础数据是推荐系统的基石,只有数据量足够多,才能从中挖掘出更多有价值的信息,进而更好地为推荐系统服务。底层基础数据包括用户和物品本身数据、用户行为数据、用户系统上报数据等。

图14-2~图14-4所示为用户本身数据、物品本身数据和用户行为数据。

得到底层基础数据之后,就要对数据进行加工处理和分析了,如结合用户属性信息和行为信息构建用户画像,结合物品属性信息和用户对物品的行为信息构建物品画像。基于用户对物品的行为数据构建特征工程,同时进行相关的数据分析。
数据在处理之后存储到相应的位置(业务推荐系统使用的数据一般存储在redis中),供推荐系统实时调用。

召回内容

电商网站、内容网站、视频网站中数据量很大,并不能直接把所有的物品数据全部输送到推荐系统进行排序,那么如何对物品进行筛选就成了很关键的问题。
第4章中介绍了一些常用的数据挖掘算法和应用场景,在进行物品召回时可以基于一些常用的机器学习算法构建用户偏好模型、用户兴趣模型、物品相似模型、物品互补模型等。在进行内容召回时,只召回和用户有偏好关系、和用户有直接关联、和用户有直接关系的相关物品,输入排序模型,进行打分排序。
例如,在某新闻类网站中,根据用户对新闻的相关行为信息构建用户对新闻标签的兴趣模型,在为用户推荐时就可以推荐用户偏好标签下的新闻数据,如图14-5所示。

在物品召回过程中,重点是如何构建合适的用户偏好模型,只有保证偏好模型的准确性才能确保用户召回物品的准确性。

计算排序

特征工程

“数据决定了机器学习的上限,而算法只是尽可能逼近这个上限”,这里的数据指的就是经过特征工程得到的数据。特征工程指的是把原始数据转变为模型的训练数据的过程,目的就是获取更好的训练数据特征,使得机器学习模型逼近这个上限。特征工程能使模型的性能得到提升,有时甚至在简单的模型上也能取得不错的效果。

特征工程在机器学习中起着非常重要的作用,一般认为包括特征构建、特征提取、特征选择三部分。 特征提取与特征选择都是为了从原始特征中找出最有效的特征。它们之间的区别是:

  • 特征提取强调通过特征转换的方式得到一组具有明显物理意义或统计意义的特征;
  • 特征选择是从特征集合中挑选一组具有明显物理意义或统计意义的特征子集。

两者都能帮助减少特征维度、数据冗余,特征提取有时能发现更有意义的特征属性,特征选择的过程经常能表示出每个特征对于模型构建的重要性。
特征工程的标准化流程主要分为以下几步:
(1)基于业务理解,找到对因变量有影响的所有自变量,即特征。
(2)评估特征的可用性、覆盖率、准确率等。
(3)特征处理:包括特征清洗、特征预处理(特征预处理可参考第4章“数据预处理”部分)、特征选择。
(4)特征监控:特征对算法模型的影响很大,微小的浮动都会带来模型效果的很大波动,因此做好重要特征的监控可防止特征异常变动带来线上事故。

特征分类

在工业界的推荐系统中,典型的特征主要分为以下四类。

  • 相关性特征:评估内容的属性与用户是否匹配。显性的匹配包括关键词匹配、分类匹配、来源匹配、主题匹配等。
  • 环境特征:包括地理位置、时间。这些既是偏差特征,又能以此构建一些匹配特征。
  • 热度特征:包括全局热度、分类热度、主题热度及关键词热度等。内容热度信息在大的推荐系统中特别是在用户冷启动时非常有效。
  • 协同特征:可以在一定程度上帮助解决所谓算法越推越窄的问题。协同特征并不考虑用户已有历史,而是通过用户行为分析不同用户间的相似性,如点击相似、兴趣分类相似、主题相似、兴趣词相似,甚至向量相似,从而扩展模型的探索能力。

排序算法

在得到召回的物品之后,就要考虑如何对这些物品进行正确的排序。目前业界在机器学习领域最普遍的做法是将排序推荐模型作为二分类模型来训练,即在构造样本集的过程中对应的标签为0或1(未点击或点击)。常用的排序算法包括但不局限于GBDT、LR、XGBoost等,当然也有很多把GBDT和LR结合起来使用的,但是模型融合后的效果在不同的业务场景中带来的提升并不是很大。

物品过滤和展示

过滤和展示直接影响用户体验,因此在做推荐系统时一定要注意相关的过滤和展示规则。

物品过滤

经常会听到人们说“电商网站经常给我推荐我已经买过的东西”。其实在做推荐系统的过程中会有相关的过滤规则,在电商推荐系统中,最常用的过滤规则是:用户购买过滤,即在进行商品召回时过滤掉用户过去一段时间内已经购买过的商品和相似商品。例如,用户昨天买了一个机械键盘,今天的推荐系统就不会再给该用户推荐机械键盘了。
同时也会有一些其他过滤规则如:

  • 项目指定的一些敏感词汇或敏感商品等过滤。
  • 刷单商品过滤。
  • 曝光商品过滤(有时会认为那些曝光过的商品是用户不感兴趣的,即看到了没有进行点击)。
  • 无货商品过滤。

至于为什么推荐系统会给用户推荐已经购买过的商品,是因为在用户购买该商品之后,又对该类型的商品产生了新的行为,所以推荐系统会再次进行推荐。

物品展示

展示即用户看到的推荐结果。不同类型的推荐系统中展示的规则不一样,但基本原则是:品类隔离展示,即同类型的商品不能出现在相邻的位置。例如推荐系统返回的推荐结果集中有两个手机,这两个手机就不能在相邻的位置展示。

有的推荐系统会要求第一屏内不能出现同类型的商品,如推荐系统给用户的第一屏展示了8个商品,那么这8个商品中就不能出现同类型的商品(如不能出现两个手机)。

效果评估

无论是推荐架构最开始的召回内容、计算排序,还是最后的过滤和展示,每次新上一个方案之后都要进行效果统计,生产系统中最常用的效果评估方法就是ABTest,更多关于ABTest的使用介绍可以参考第10章。
在生产系统中,进行ABtest之后,往往会将不好的方案下线,保留效果更好的一方,同时也会不断上线新的召回、排序特征等,迭代优化模型,提升线上效果。


注:《推荐系统开发实战》是小编近期要上的一本图书,预计本月(7月末)可在京东,当当上线,感兴趣的朋友可以进行关注!


【技术服务】,详情点击查看: https://mp.weixin.qq.com/s/PtX9ukKRBmazAWARprGIAg

扫一扫 关注微信公众号!号主 专注于搜索和推荐系统,尝试使用算法去更好的服务于用户,包括但不局限于机器学习,深度学习,强化学习,自然语言理解,知识图谱,还不定时分享技术,资料,思考等文章!

这篇关于《推荐系统开发实战》之业内推荐系统架构介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/298288

相关文章

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用