推荐系统 (一): 推荐系统的架构
- 本文为《深度学习推荐系统》(王喆) 的读书笔记 (边读边记,希望能和大家共同进步!)
目录
- 推荐系统的逻辑框架
- 推荐系统的技术架构
- 推荐系统的数据部分
- 推荐系统的模型部分
- 参考文献
推荐系统的逻辑框架
- 推荐系统要处理的是 “人” 和 “信息” 的关系。这里的 “信息” ,在商品推荐中指的是 “商品信息”,在视频推荐中指的是 “视频信息 ”, 在新闻推荐中指的是 “新闻信息”,简而言之, 可统称为 “物品信息” 。 而从 “人” 的角度出发, 为了更可靠地推测出 “人” 的兴趣点, 推荐系统希望利用大量与 “人” 相关的信息, 包括历史行为、人口属性、关系网络等, 这些可统称为 “用户信息”。此外, 在具体的推荐场景中, 用户的最终选择一般会受时间、地点、用户的状态等一系列环境信息的影响, 可称为 “场景信息” 或 “上下文信息”
- 在获知 “用户信息” “物品信息” “场景信息” 的基础上, 推荐系统要处理的问题可以较形式化地定义为:对于用户 UUU (user), 在特定场景 CCC (context) 下, 针对海量的 “物品“ 信息,构建一个函数 f(U,I,C)f(U,I,C)f(U,I,C), 预测用户对特定候选物品 III (item) 的喜好程度, 再根据喜好程度对所有候选物品进行排序,生成推荐列表的问题
不同业务模式的公司定义的具体推荐系统优化目标不同, 例如,视频类公司更注重用户观看时长 (Deep Neural Networks for YouTube Recommendations),电商类公司更注重用户的购买转化率 (Conversion Rate, CVR), 新闻类公司更注重用户的点击率, 等等。需要注意的是,设计推荐系统的最终目标是达成公司的商业目标、增加公司收益,这应是推荐工程师站在公司角度考虑问题的出发点
推荐系统的技术架构
- 在实际的推荐系统中,工程师需要将抽象的概念和模块具体化 、工程化。在 图 1-3 的基础上,工程师需要着重解决的问题有两类:
- (1) 数据和信息相关的问题,即 “用户信息” “物品信息” “场景信息” 分别是什么?如何存储 、 更新和处理?
- “数据和信息” 部分逐渐发展为推荐系统中融合了数据离线批处理、 实时流处理的数据流框架
- (2) 推荐系统算法和模型相关的问题, 即推荐模型如何训练 、 如何预测 、 如何达成更好的推荐效果?
- “算法和模型” 部分则进一步细化为推荐系统中集训练 (training)、评估 (evaluation) 、 部署 (deployment)、 线上推断 (online inference) 为一体的模型框架
- (1) 数据和信息相关的问题,即 “用户信息” “物品信息” “场景信息” 分别是什么?如何存储 、 更新和处理?
推荐系统的数据部分
- 推荐系统的数据部分 (如图 1-4 中米黄色部分所示) 主要负责 “用户” “物品” “场景” 的信息收集与处理。 在得到原始的数据信息后,推荐系统的数据处理系统会将原始数据进一步加工, 加工后的数据出口主要有三个:
- (1) 生成推荐模型所需的样本数据, 用于算法模型的训练和评估
- (2) 生成推荐模型服务 (model serving) 所需的 “特征”, 用于推荐系统的线上推断
- (3) 生成系统监控 、商业智能 (Business Intelligence, BI) 系统所需的统计型数据
负责数据收集与处理的三种平台
- “客户端及服务器端实时数据处理” “流处理平台准实时数据处理” “大数据平台离线数据处理”
- 在实时性由强到弱递减的同时, 三种平台的海量数据处理能力则由弱到强。 因此, 一个成熟的推荐系统的数据流系统会将三者取长补短, 配合使用
推荐系统的模型部分
- 模型的结构一般由 “召回层” “排序层” “补充策略与算法层” 组成
- “召回层” 一般利用高效的召回规则、 算法或简单的模型, 快快速地将待推荐物品的候选集从十万、百万量级的规模减小到几千甚至几百量级的规模,避免将全部候选物品直接输入深度学习模型造成的计箕资源浪费和预测延迟问题
- “排序层“ 利用排序模型对初筛的候选集进行精排序 (推荐系统产生效果的重点,也是业界和学界研究的重心)
- “补充策略与算法层”,也被称为 “再排序层”,可以在将推荐列表返回用户之前, 为兼顾结果的 “多样性” “流行度” “新鲜度” 等指标, 结合一些补充的策略和算法对推荐列表进行一定的调整, 最终形成用户可见的推荐列表
从推荐模型接收到所有候选物品集,到最后产生推荐列表, 这一过程一般称为模型服务过程
模型训练
- (1) 离线训练:利用全量样本和特征,使模型逼近全局最优点
- (2) 在线更新:准实时地 “消化” 新的数据样本,更快地反映新的数据变化趋势,满足模型实时性的需求
模型评估
- 为了评估推荐模型的效果,方便模型的迭代优化,推荐系统的模型部分提供了 “离线评估” 和 “线上 A/B 测试” 等多种评估模块,用得出的线下和线上评估指标, 指导下一步的模型迭代优化
参考文献
- 《深度学习推荐系统》(王喆)
推荐系统 (一): 推荐系统的架构相关推荐
- 自己动手写一个推荐系统,推荐系统小结,推荐系统:总体介绍、推荐算法、性能比较, 漫谈“推荐系统”, 浅谈矩阵分解在推荐系统中的应用...
自己动手写一个推荐系统 废话: 最近朋友在学习推荐系统相关,说是实现完整的推荐系统,于是我们三不之一会有一些讨论和推导,想想索性整理出来. 在文中主要以工程中做推荐系统的流程着手,穿插一些经验之谈,并 ...
- 推荐系统(2)——推荐系统简介(发展与理论部分)
推荐系统介绍 推荐系统产生的背景 随着移动互联网的快速发展,我们进入了信息爆炸时代.当前通过互联网提供服务的平台越来越多,相应的提供的服务种类(购物,视频,新闻,音乐,婚恋,社交等)层出不穷,所以我们 ...
- 【组队学习】【32期】推荐系统-新闻推荐系统实践
推荐系统-新闻推荐系统实践 航路开辟者:罗如意 领航员:肖桐 航海士:汪志鸿.吴忠强.赖敏材.王辰玥.毛伟.宋禹成.陈雨龙.管柯琴 基本信息 开源内容:https://github.com/dataw ...
- Java+SSM(Spring+SpringMVC+Mybatis)个性化购物商城推荐系统 电子商务推荐系统 基于用户、项目、聚类、混合的协同过滤推荐算法WebShopRSMEx 源代码下载
Java+SSM(Spring+SpringMVC+Mybatis)个性化购物商城推荐系统 电子商务推荐系统 基于用户.项目.聚类.混合的协同过滤推荐算法WebShopRSMEx 源代码下载 一.项目 ...
- 推荐系统系列——推荐系统简介
文章目录 同步读书之<菜根谭> 1--栖守道德,毋依阿权贵. 2--与其练达,不若朴鲁. 推荐系统简介 1 推荐问题的形式化定义 2 推荐系统的历史 3 参考文献 同步读书之<菜根谭 ...
- 小白从0学习推荐系统 ---01 推荐系统简介
文章目录 推荐系统概述 什么是推荐系统? 推荐系统的目的 推荐系统的基本思想 推荐系统的数据分析 推荐系统的分类 推荐算法简介 基于人口统计学的推荐算法 基于内容的推荐算法 基于协同过滤的推荐算法 协 ...
- 使用Java+SSM(Spring+SpringMVC+Mybatis)如何开发个性化职位推荐系统 招聘推荐系统 基于用户、项目的协同过滤推荐算法实现WebPositionCFRS
使用Java+SSM(Spring+SpringMVC+Mybatis)如何开发个性化职位推荐系统 招聘推荐系统 基于用户.项目的协同过滤推荐算法实现WebPositionCFRS 一.项目简介 1. ...
- Python+Django+Mysql个性化二手车推荐系统 汽车推荐系统 基于用户、项目、内容的协同过滤推荐算法 WebCarCFRSPython python实现协同过滤推荐算法实现源代码下载
Python+Django+Mysql个性化二手车推荐系统 汽车推荐系统 基于用户.项目.内容的协同过滤推荐算法 WebCarCFRSPython python实现协同过滤推荐算法实现源代码下载 一. ...
- Netflix推荐系统(Part two)-系统架构
Netflix在2013年公布了自己推荐系统的架构,本文主要总结和翻译自System Architectures for Personalization and Recommendation,但这并不 ...
- 推荐系统-概述:基本架构
提纲 过去八九年在广告.生活服务.电商等领域从事大数据及推荐系统相关工作,近来打算对过去的工作做一个系统性的梳理.一方面帮自己查缺补漏.进行更深入的学习:另一方面也希望能通过博客结交同好,增进交流. ...
最新文章
- ASP.NET之父谈ASP.NET AJAX
- 点在平面上的投影坐标例题_光测力学-栅线投影(面结构光)技术
- linux命令more
- 【初级网络工程师TOP 100 基础问答】来看看你答的上吗?
- 报错:未能加载文件或程序集“XXX”或它的某一个依赖项。系统找不到指定的文件...
- 北京活动预告丨来ACOUG 年会过个温暖的冬天吧!
- 如何使用svconfigeditor.exe编辑WCF Service配置文件-配置一个基本的Endpoint(一)
- Hub与Switch的帧的广播细节
- 快速突破面试算法之动态规划篇
- 数据结构 实验2——表达式求值
- 数据运营与组织变革 知识体系
- CIS Control v8的变化
- VS2017安装并配置VTK
- ps怎么把图片透明化
- 程序员合同日期不到想辞职_辞职理由怎么说才合适?实话实说,随便编一个都不行...
- 【春节旅游攻略】南京周边出发,小众又好玩的景点推荐
- 列举1990年到2000年间的闰年
- Xposed Xposed插件开发
- MySQL5.5版本服务端安装图解
- C++17标准STL库并行策略在GCC编译器中的替代实现方法