在推荐系统中一般会分为召回和排序两个阶段:

召回

召回的目标是从千万级甚至亿级的候选中召回几千个item,召回一般由多路组成,每一路会有不同的侧重点(优化目标),如在广告中成熟期广告和冷启动广告分为两路召回(如果广告比较多,还可能分冷热广告分别召回)。在推荐系统,不同路可能代表了不同的优化目标,如喜欢、关注、观看时长、评论这些都可以分不同的路召回。

目前召回常用的方法有:协同过滤、FM、FFM、图模型、双塔模型、还有YouTube在2017年论文中提出的DNN模型、字节的Deep Retrieval算法等

在工业届,常常会用FM、双塔模型等先学习user embedding、和 item embedding,然后用ball tree、fast ball tree 等近似最近邻算法进行检索,加快效率

排序

排序阶段就是把召回的结果进行排序,把top k(k 一般都是个位数)结果作为推荐系统最终的输出。

排序阶段常用的算法:LR -> FM -> deepFM等

为什么要把排序分为精排和粗排?

把排序阶段分为粗排和精排,其实就是生成环境中成本和结果的一个平衡。进入排序阶段的候选集一般确实只有几千个,但是对于抖音、YouTube这种量级的应用来说,他们request是非常多的,依然不能上太复杂的模型和特征。

因此把排序分为粗排和精排:

粗排漏斗一般是: 几千 -> 几百

精排漏斗一般是:几百 -> 几个

这样精排可以把模型和特征做到极致,可以达到非常高的精度

召回和粗排的差别在哪里?

1. 建模目标不同

召回是漏斗的最上游,可以说是决定了推荐系统的上限

召回的目标是召回用户可能感兴趣的 item,会考虑多方面的因素

粗排是对召回的结果进行排序,top k 送入精排,常用的有两种建模方式:

1. 独立建模,如在在广告推荐中,粗排也是优化ecpm,在推荐中也是优化Finish、Staytime等

2. 对齐精排,用 leaning to rank 等方法去学习精排的序

2. 正负样本的选择不同

如果说召回决定了推荐系统的上线的话,那么可以说样本的构造决定了模型的上限

先看召回阶段:

正样本一般选择用户有正反馈的样本,如ctr中用户点击了的作为正样本,like中用户点了喜欢的作为正样本

但是负样本该怎么选呢?

最简单的方法就是把send给用户后,用户没有正反馈的样本作为负样本。但是这样会带来一个问题,那就是召回模型在training和serving面临的样本分布是不一样的,违反了机器学习的基本原则。

具体的来说就是,真正被send给用户的item只占所有item非常小的一部分,召回模型在serving时会面临很多它以前从来没有见过的样本,召回模型在这些样本上会很难区分

怎么解决这个问题呢?

通常的方法就是从召回的池子中进行随机采样,具体做法待补充

再来看粗排:

粗排的基本目标一般是对其精排,所以可以把精排的top k 个样本作为正样本,然后从精排中其它样本中随机采样,作为负样本

粗排对其精排本身没有太大问题,但是这里也有一个ee(exploit-explore)问题,如果粗排完全对其精排的话,可能会导致模型探索不足,为了缓解这个问题,我们可以适当补充一些进入召回但是没有进精排的样本作为负样本

推荐系统中的召回和排序相关推荐

  1. 搜索推荐系统中的召回

    搜索推荐系统中的召回 1. 召回简介 2. 召回指标 3. 召回策略 3.1 基于内容匹配的召回 3.2 基于协同过滤的召回 1. 召回简介 谈召回离不开搜索推荐,通过用户搜索或者系统推荐获取客户想要 ...

  2. 推荐系统中的召回算法大致梳理(非完整)

    推荐系统中的召回算法大致梳理(非完整) 定义 推荐策略中的两个关键问题分别是"召回"和"排序". "召回match"是指从全量信息中触发尽可 ...

  3. 推荐系统中的召回算法--协同过滤

    工业界通用推荐系统架构: Match&Rank 定义:Match基于当前user(profile.history)和context,快速在全库中找到TopN最相关的Item,给Rank来做小范 ...

  4. 【推荐系统】推荐系统中的排序学习

    " 本文首先介绍排序学习的三种主要类别,然后详细介绍推荐领域最常用的两种高层排序学习算法框架:BPR和LambdaMART.因为排序学习的算法和实践大都来源于信息检索,一些理论也必须从信息检 ...

  5. 推荐系统中使用ctr排序的f(x)的设计-传统模型篇

    一. 什么是ctr? ctr即广告点击率,在推荐系统中,通常是按照ctr来对召回的内容子集进行排序,然后再结合策略进行内容的分发. 二. ctr预估模型的发展. ctr预估模型的公式:y = f(x) ...

  6. 推荐系统遇上深度学习(三十九)-推荐系统中召回策略演进!

    推荐系统中的核心是从海量的商品库挑选合适商品最终展示给用户.由于商品库数量巨大,因此常见的推荐系统一般分为两个阶段,即召回阶段和排序阶段.召回阶段主要是从全量的商品库中得到用户可能感兴趣的一小部分候选 ...

  7. 推荐系统中的排序学习

    " 本文首先介绍排序学习的三种主要类别,然后详细介绍推荐领域最常用的两种高层排序学习算法框架:BPR和LambdaMART.因为排序学习的算法和实践大都来源于信息检索,一些理论也必须从信息检 ...

  8. 红豆Live 推荐算法中召回和排序的应用和策略

    有人曾说"语音直播产品红豆 Live 的突然出现,让沉寂了一段时间的语音知识付费市场又重新燃起了生机",让语音直播这个小众市场重新吸引了大众的注意力,让声音爱好者找到知音和志同道合 ...

  9. 红豆Live推荐算法中召回和排序的应用和策略

    本文由 「AI前线」原创,原文链接:红豆Live推荐算法中召回和排序的应用和策略 作者|胡南炜 编辑|Emily AI 前线导读:"有人曾说,"语音直播产品红豆 Live 的突然出 ...

最新文章

  1. GET请求中URL的最大长度限制总结
  2. Mybatis问题解释?
  3. Python多任务(4.多线程--Python中的互斥锁和死锁)
  4. 前端学习(2973):配置嵌套路由
  5. 利用计算机管理分区,win7增加磁盘分区教学 利用磁盘管理增加分区
  6. r 重命名 列名_R-reshape2
  7. [Python] 生成迭代器 iter() 函数
  8. JavaScript — 原生js实现上传图片控件
  9. HDS存储产品概述1
  10. 详解torch.view()的-1参数是什么意思
  11. js的unshift()的使用
  12. centos6和centos7的主要区别和版本选择
  13. java基础提升(二):多线程、线程安全、线程状态、等待唤醒机制、线程池
  14. 电脑端微信双开、N开
  15. ubuntu rsync 命令拷贝,显示进度
  16. 清除一个挖矿程序、步骤!!!
  17. 解决chrome自动填充白色背景(input:-internal-autofill-previewed)问题
  18. 传统语音识别介绍【一】—— 前端处理
  19. jupyter notebook import tensorflow as tf 报错解决
  20. JAVA计算机毕业设计跨境电商网站(附源码、数据库)

热门文章

  1. 《袁老师访谈录》第十四期|李世玮教授/香港科大(广州)系统枢纽署理院长【问诊未来·院长系列:开辟融合创新科技转化新航路】...
  2. gun/linux more 搜索功能
  3. 文档在线翻译的方法介绍
  4. 【Axure高保真原型】刮奖原型
  5. 4D产品生产流程(详细)
  6. 网络基础 - 网络服务器带宽Mbps、Mb/s、MB/s的区别?
  7. 用帽子戏法打破次元壁:当武磊牵手科大讯飞
  8. [Win32] DLL的开发和使用
  9. HP D380 G9 改IP地址
  10. 关于集成第三方微信支付,支付宝,高德地图等排坑