1. 推荐和搜索的异同

相同点

  1. 推荐和搜索的目标相同,都是为了解决信息过载问题
  2. 都返回给用户最感兴趣的物品列表。
  3. 搜索就是限定了条件的推荐,推荐就是系统自发的主动搜索。
  4. 两者可以相互成就
    1. 可以从用户搜索的 query 中收集到大量的个性化推荐的需求,来提高推荐效果
    2. 推荐系统也可以用来增强搜索引擎,在搜索中加入个性化排序,尤其是当搜索 query 不够明确时,可以根据各种特征推荐更好的搜索结果

区别

  1. 主动/被动:搜索行为是主动的,需求是明确的,会给出关键词;推荐行为则是被动的,需求不明确(模糊
    1. 搜索引擎更倾向于用户有明确的目的,可以将用户对于信息的寻求转换为精确的关键字 query,然后交给搜索引擎最后返回给用户一系列列表,用户可以对这些返回结果进行反馈。并且是用户对于搜索引擎有主动意识的。
      1. 搜索引擎的问题:会有马太效应的问题,即会造成越流行的东西随着搜索过程的迭代会越流行,使得那些越不流行的东西石沉大海。绝大多数的用户点击都集中在顶部的少量搜索结果上。
    2. 推荐引擎更倾向于用户没有明确的目的,或者说他们的目的是模糊的,通俗来讲,用户连自己都不知道他想要什么,这时候正是推荐引擎的用武之地,推荐系统通过一些列特征,包括用户特征(用户的历史行为、兴趣偏好、人口统计学特征等)、物品特征上下文特征等,然后推荐系统运用推荐算法来产生用户可能感兴趣的项目列表。用户对于推荐引擎是被动的。
      1. 推荐系统的价值:其中长尾理论(人们只关注曝光率高的项目,而忽略曝光率低的项目)可以很好的解释推荐系统的存在价值,试验表明位于长尾位置的曝光率低的项目产生的利润不低于只销售曝光率高的项目的利润。推荐系统正好可以给所有项目提供曝光的机会,以此来挖掘长尾项目的潜在利润。
  2. 个性化程度的高低
    1. 虽然搜索引擎也需要一定程度的个性化(尤其是在购物网站的搜索场景),但是当需求非常明确时,找到结果的好坏通常没有太多个性化的差异,就比如搜“天气”
    2. 推荐系统则更需要关注个性化
  3. 快速满足还是持续服务
    1. 价搜索结果质量的一个重要考量指标是要帮用户尽快的找到需要的结果并点击离开。在设计搜索排序算法里,需要想尽办法让最好的结果排在最前面,往往搜索引擎的前三条结果聚集了绝大多数的用户点击。简单来说,“好”的搜索算法是需要让用户获取信息的效率更高、停留时间更短
    2. 推荐恰恰相反,推荐算法和被推荐的内容(例如商品、新闻等)往往是紧密结合在一起的,用户获取推荐结果的过程可以是持续的、长期的,衡量推荐系统是否足够好,往往要依据是否能让用户停留更多的时间(例如多购买几样商品、多阅读几篇新闻等),对用户兴趣的挖掘越深入,越“懂”用户,那么推荐的成功率越高,用户也越乐意留在产品里。
  4. 评估方法的差别
    1. 搜索:整体上看,评价的着眼点在于将优质结果尽可能排到搜索结果的最前面,前10条结果(对应搜索结果的第一页)几乎涵盖了搜索引擎评估的主要内容。让用户以最少的点击次数、最快的速度找到内容是评价的核心
    2. 推荐:CTR 点击率、CVR 转化率、用户停留时长等。

2. 推荐和广告的异同

区别

计算广告问题涉及的方向更广、需要各模块相互配合,协调; 推荐系统则涉及的问题更细,需要把所有技术都糅合在最终的推荐列表中,但要同时照顾多方面的体验

  1. 根本区别在于两个领域尝试解决的问题不同
    1. 计算广告,本质上要处理的是三方利益的协调问题,这三方分别是广告主、用户和媒体
    2. 推荐系统来说,本质上要处理的是用户体验的问题
  2. 因为要处理问题的不同,导致了两个领域思考方式的不同。比如同样是构建一个CTR模型:
    1. 计算广告,站的角度更多的是用这个 CTR 模型产生更多的收益,那么在使用的时候就更偏向于将 CTR 高的广告全都排在前面
    2. 推荐系统,在使用CTR模型的时候,就不适宜全部按照 CTR 来进行内容排序。而是要兼顾内容的多样性,新颖性,和流行度。因为推荐系统的核心是用户体验,如果涸泽而渔的全部用根据用户行为历史生成的推荐内容,很容易让用户疲倦、透支用户的兴趣。那么为了照顾用户的整体体验并挖掘用户的长期兴趣,就要考虑用户在不同体验阶段的感受和行为特点。
  3. 两个领域重点要考虑的技术问题(排名大致分先后):
    1. 计算广告:CTR模型,Bidding策略,yield optimization(也许可以叫排期优化),智能预算控制
    2. 推荐系统:CTR模型及其他推荐模型,探索与利用(exploitation&exploration),冷启动问题,数据有偏问题
  4. 广告和推荐的根本目标不同
    1. 广告算法的目标是为了直接增加公司收入
    2. 推荐算法虽然本质上也是为了增加公司收入,但其直接目标是为了增加用户的参与度
  5. 因为根本目标不同,导致两者的优化目标不同
    1. 各公司广告算法的预估目标非常统一,就是预估 CTR 和 CVR,因为 CPC 和 CPA 计价是目前效果类广告系统的主流计价方式
    2. 推荐算法的预估目标就不尽相同,视频类更多倾向于预测观看时长,新闻类预测 CTR,电商类预估客单价等等,都是针对业务场景来做优化
  6. 优化目标有区别,这带来了算法模型设计中的侧重点完全不一样
    1. 由于广告算法要预测“精准”的 CTR 和 CVR,用于后续计算精确的出价,因此数值上的“精准”就是至关重要的要求,仅仅预估广告间的相对位置是无法满足要求的。这就催生了广告算法中对 calibration 方法的严苛要求,一定要估的准
    2. 推荐算法的结果往往以列表的形式呈现,因此不用估的那么准,而是要更多照顾一个列表整体上,甚至一段时间内的内容多样性上对于用户的“吸引力”,让用户的参与度更高
  7. 侧重点的差异又带来了两种类算法在实现原理上不尽相同
    1. 因为需要对每一条广告的 CTR,CVR 都估的准,广告算法基本全部都是 point wise 的训练方式,因为广告是很少以列表的形式连续呈现的。在采用负采样,weighted sampling 等方式改变原始数据分布后,也需要在后续步骤中千方百计地把 CTR,CVR 纠正过来
    2. 推荐算法就有大量不同的训练方式,除了 point-wise,还有 pair-wise,list-wise 等等。此外为了增加用户的长期参与度,还对推荐内容的多样性,新鲜度有更高的要求,这就让探索与利用,强化学习等一些列方法在推荐场景下更受重视
  8. 这些实现上的差异又带来了一些列辅助策略/算法的区别
    1. 广告系统中,CTR 等算法只是其中关键的一步,估的准 CTR 只是一个前提,如何让广告系统盈利,产生更多收入,还需要 pacing,bidding,budget control,ads allocation 等多个同样重要的模块协同作用,才能让平台利益最大化,这显然是比推荐系统复杂的
    2. 推荐系统中,由于需要更多照顾用户的长期兴趣,需要一些补充策略做出一些看似“非最优”的选择,比如探索性的尝试一些长尾内容,在生成整个推荐列表时要加入多样性的约束,等等。这一点上,广告系统也需要,但远没有推荐系统的重视程度高。
  9. 模型本身的差异
    1. 在广告模型中,用户的兴趣是不那么连贯的,因此容易造成 sequential model 的失效,attention 机制可能会更加重要一些
    2. 推荐模型中,如果不抓住用户兴趣的连续变化,是很难做好推荐模型的

总体感觉上:

  • 广告算法的问题更加琐碎,各模块协同工作找到平台全局利润最大化方法的难度非常大,系统异常复杂到难以掌控的地步,这是广告算法工程师的痛点
  • 推荐算法这边,问题往往卡在长期利益与短期利益的平衡上,在模型结构红利消失殆尽的今天,如何破局是推荐算法工程师们做梦都在想的问题