特征工程

特征工程是所有机器学习项目的起点。为了训练推荐模型,我们需要准备好模型所需的样本和特征。此外,在进行模型线上推断的时候,推荐服务器也需要线上实时拼装好包含了用户特征、物品特征、场景特征的特征向量,发送给推荐模型进行实时推断。

在“模型实战准备二”这一讲,我们就通过 Spark 处理好了 TensorFlow 训练所需的训练样本,并把 Spark 处理好的特征插入了 Redis 特征数据库,供线上推断使用。

模型离线训练

为了在线上做出尽量准确或者说推荐效果尽量好的排序,我们需要在离线训练好排序所用的推荐模型。我们在这一篇中学习和实践的所有深度推荐模型,都是围绕着这个目的展开的。虽然这些深度推荐模型的结构各不相同,但它们的输入、输出都是一致的,输入是由不同特征组成的特征向量,输出是一个分数,这个分数的高低代表了这组特征对应的用户对物品的喜好程度。

模型服务

在离线训练好模型之后,为了让模型在线上发挥作用,做出实时的推荐排序,我们需要通过模型服务的模块把推荐模型部署上线。因为我们的深度学习模型是基于 TensorFlow 训练的,所以我们采用 TensorFlow Serving 作为模型服务的方式。

推荐服务器内部逻辑实现

模型服务虽然可以做到“猜你喜欢”中电影的排序,但要进行排序,仍然需要做大量的准备工作,比如候选集的获取,召回层的构建,特征的获取和拼装等等。这些推荐逻辑都是在推荐服务器内部实现的。推荐服务器就像推荐系统的线上的心脏,是所有线上模块的核心。

首先,我们来看数据和模型部分。左上角是我们使用的数据集 MovieLens,它经过 Spark 的处理之后,会生成两部分数据,分别从两个出口出去,特征部分会存入 Redis 供线上推断时推荐服务器使用,样本部分则提供给 TensorFlow 训练模型。TensorFlow 完成模型训练之后,会导出模型文件,然后模型文件会载入到 TensorFlow Serving 中,接着 TensorFlow Serving 会对外开放模型服务 API,供推荐服务器调用。接下来,我们再看推荐服务器部分。在这部分里,基于 MovieLens 数据集生成的候选电影集合会依次经过候选物品获取、召回层、排序层这三步,最终生成“猜你喜欢”的电影推荐列表,然后返回给前端,前端利用 HTML 和 JavaScript 把它们展示给用户。

在召回层,我们通过三步生成了最终的候选集。
第一步,我们获取用户的 Embedding。
第二步,我们获取所有物品的候选集,并且逐一获取物品的 Embedding,计算物品 Embedding 和用户 Embedding 的相似度。
第三步,我们根据相似度排序,返回规定大小的候选集。
这里也可以使用局部敏感哈希

经过召回层之后,我们会得到几百量级的候选物品集。最后我们到底从这几百部电影中推荐哪些给用户,这个工作就交由排序层来处理。因为排序的工作是整个推荐系统提高效果的重中之重,在业界的实际应用中,往往交由评估效果最好的深度推荐模型来处理。整个的排序过程可以分为三个部分:
准备线上推断所需的特征,拼接成 JSON 格式的特征样本;
把所有候选物品的特征样本批量发送给 TensorFlow Serving API;
根据 TensorFlow Serving API 返回的推断得分进行排序,生成推荐列表。接下来,我们就详细来讲讲这三步中的实现重点。

首先,第一步的实现重点在于特征样本的拼接。因为实践例子里,我们选用了 NeuralCF 作为排序模型,而 NerualCF 所需的特征只有 userId 和 itemId ,所以特征是比较好准备的。我们下面看一下如何拼接特征形成模型推断所需的样本。我们先把 userId 和 movieId 加入了 JSON 格式的样本中,然后再把样本加入到 Json 数组中。接下来,我们又以 http post 请求的形式把这些 JSON 样本发送给 TensorFlow Serving 的 API,进行批量预估。在收到预估得分后,保存在候选集 map 中,供排序层进行排序。
获取返回得分和排序。 我们先来看一下 TensorFlow Serving API 的返回得分格式。它的返回值也是一个 JSON 数组的格式,数组中每一项对应着之前发送过去的候选电影样本,所以我们只要把返回的预估值赋给相应的样本,然后按照预估值排序就可以了。

个性化推荐的工业级实现相关推荐

  1. 深度学习技术在美图个性化推荐的应用实践

    导读:美图秀秀社交化的推进过程中,沉淀了海量的优质内容和丰富的用户行为.推荐算法连接内容消费者和生产者,在促进平台的繁荣方面有着非常大的价值 .本次分享探讨美图在内容社区推荐场景下应用深度学习技术提升 ...

  2. 深度学习在美图个性化推荐的应用实践

    导读:美图秀秀社交化的推进过程中,沉淀了海量的优质内容和丰富的用户行为.推荐算法连接内容消费者和生产者,在促进平台的繁荣方面有着非常大的价值 .本次分享探讨美图在内容社区推荐场景下应用深度学习技术提升 ...

  3. 网易云课堂个性化推荐实践与思考

    作者/ 韩虹莹 编辑/ Ein 从人和信息的博弈谈推荐系统缘起 首先谈谈我理解的推荐系统. 如果说推荐系统的定义是什么,每本书每篇文章说的都不太一样,协同过滤1992年就已经有了,三十年里无数大佬分析 ...

  4. 【阅读笔记】联邦学习实战——联邦个性化推荐案例

    联邦学习实战--联邦个性化推荐案例 前言 1. 引言 2. 传统的集中式个性化推荐 2.1 矩阵分解 2.2 因子分解机 3. 联邦矩阵分解 3.1 算法详解 3.2 详细实现 4 联邦因子分解机 4 ...

  5. 「构建企业级推荐系统系列」实时个性化推荐介绍

    作者 | gongyouliu 编辑 | auroral-L 随着互联网的深入发展和产品布局的多元化,越来越多的企业通过提供快节奏的产品及服务消耗用户的碎片化时间,从而赢得用户的青睐.这类产品通过便捷 ...

  6. 大数据推荐(个性化推荐)

    大数据推荐分享.三场讲座系统的讲解了关于基于大数据的个性化推荐的体系和针对模型的探索.作为讲师主讲了关于个性化推荐的一些流程和算法. 转载于:https://www.cnblogs.com/wenBl ...

  7. 知乎联合清华:开放国内最大个性化推荐实际交互数据集

    5月21日,知乎联合清华大学对外开放基于知乎的大规模富文本查询和推荐数据集"ZhihuRec".该数据集包含了知乎上的1亿个行为数据,是目前为止,国内用于个性化推荐的最大的实际交互 ...

  8. 爱奇艺火爆的背后,个性化推荐排序是如何配合的?

    作者:Michael,推荐算法助理研究员,2014年硕士毕业于北京邮电大学后加入爱奇艺.从事推荐算法的研发和管理工作,对于机器学习和深度学习在推荐上的应用有着丰富的经验. 在当前这个移动互联网时代,除 ...

  9. 独家 | 一文读懂LinkedIn个性化推荐模型及建模原理

    原文标题:HowLinkedIn Makes Personalized Recommendations via Photon-ML Machine Learning tool 作者:Yiming Ma ...

最新文章

  1. 构建插件式的应用程序框架(六)----通讯机制(ZT)
  2. 《DNS与BIND(第5版)》——7.6 保持一切平稳运行
  3. python 二分法实现pow_Python实现二分法和黄金分割法
  4. Datalore:用于机器学习可视化的新Web方案!
  5. 如何动态的生成某种类型的集合呢_知乎画报」的移动端动态化工程实践
  6. java lock可重入_Java源码解析之可重入锁ReentrantLock
  7. mysql5.5提示Deprecated: mysql_query(): The mysql extension is deprecated
  8. 【Servlet】Cookie会话跟踪技术
  9. 小型空仓库图片_大中型的食品企业为何都青睐自动化立体仓库?
  10. 【操作系统/OS笔记04】内存分层体系、地址生成、连续内存分配概论
  11. bad sqlldr java_java sqlldr使用
  12. RS485设计技巧TOP10
  13. Python快速开发分布式搜索引擎Scrapy精讲—craw scrapy item loader机
  14. 几何分布的期望与方差
  15. MEM/MBA英语基础(08)复合句-状语从句
  16. 【Kubernetes】k8s的安全管理详细说明【k8s框架说明、token验证和kubeconfig验证详细说明】
  17. 学习java随堂练习-20220609
  18. 6.3.1 延迟操作接口
  19. 巴菲特抄底台积电,透露出哪些信号?
  20. 计算机视觉四大基本任务介绍

热门文章

  1. 管理信息系统【七】之 系统实施与评价
  2. IDEA在push出现Pushed master to new branch origin/master错误
  3. 2.Python数据基本运算
  4. 用Matlab进行时域信号的频谱分析
  5. 文件夹中的.nomedia文件
  6. ACM-ICPC 2018 南京赛区网络预赛 AC Challenge (状态压缩DP)
  7. linux主机通过top看CPU性能指标
  8. 矛盾的俗语,成大事者不拘小节与一屋不扫,何以扫天下的辨析?
  9. PlayStation Classic由开源PCSX模拟器提供支持
  10. 基于python的验证码自动识别系统设计与实现