前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CTR和推荐算法有什么本质区别?

CTR和推荐算法有什么本质区别?

作者头像
石晓文
发布2020-12-22 14:43:49
2.1K0
发布2020-12-22 14:43:49
举报
文章被收录于专栏:小小挖掘机小小挖掘机

作者:石塔西 链接:https://www.zhihu.com/question

/341529083/answer/1616964921

CTR预估与推荐系统的目标存在gap

CTR预估起源于计算广告,因为关系到真金白银的定价问题,因此要求预估出来的CTR必须“绝对准确”。这是因为,假如给一个用户准备了A/B/C三个广告,那么无论预测CTR是0.9、0.8、0.6,还是0.5、0.4、0.3都不影响三个广告的展现顺序,但是向客户的收费却有天壤之别。

但是推荐系统只要求“相对准确”。假如ABC换成了三篇文章,只要能够将用户最喜欢的A排在第1位,次喜欢的B排在第2位,无论我们预测的CTR是0.9、0.8、0.6,还是0.5、0.4、0.3,用户都能接受。

看似要求“绝对准确”性,要比“相对准确”,难度更大一些:如果我们能够将用户对每个候选item的CTR都预测准确,那么排序的“相对准确性”自然能够得到保证。但是实际上,“预估CTR”和“排序准确”两个目标存在gap

这是因为"ctr预估"是pointwise loss,每个样本由<user, item, label(0或1)>组成,loss采用binary cross entropy loss。由于实际系统中,正样本太稀疏,理论上存在这样一种可能性,就是算法将所有<user, item>都预测成0,binary cross entropy loss同样能够最小化,但此时,排序正确性就无从谈起了。所以,现实的CTR算法,往往伴随着在训练时对正样本加权,而在预测时还需要对预估出来的ctr进行校正。

那为什么在推荐系统“精排”阶段,CTR预估算法依然流行?根据我在内容推荐场景下的经验,主要是因为推荐系统中的正负样本比例没有那么悬殊,10%以上的ctr并不罕见,所以即使不对正样本进行加权,也不会出现“所有样本都预测成负类”那种“一边倒”的情况。但是,理论层面上的gap依然存在。

如果要确保排序上的准确性,理论上应该采用Pairwise LearningToRank(LTR),即每个样本由<user, item+, item->三元组组成,预测的目标是<user, item+>的匹配得分要高于<user, item->的匹配得分。为了达成这一目标,可以采用margin-based hinge loss或BPR loss。但是由于"ctr预估"这种ponitwise的算法,在实际排序场景下干得还不错,所以在“精排”阶段使用Pairwise LTR并不是很流行。但是也不是绝对没有,从《Applying Deep Learning To Airbnb Search》和《Improving Deep Learning For Airbnb Search》两篇文章,可以窥探出Airbnb在“排序”阶段,采用双塔模型来实现Pairwise LTR。

现实推荐系统也并非只按"预估CTR"排序

刚才所说的,在“排序”阶段,先预估用户对每个候选item的CTR,再按预估ctr对各候选item从大到小排序。这个是最最简单的场景,而现实推荐系统往往是多目标的,并不会只预测ctr并按ctr排序。

  • 对于电商推荐,排序不仅要预测用户的点击率,更重要的是预测用户的转化率(CVR);
  • 对于内容推荐,业务关心的除了CTR,还有阅读/观看时长、转发、评论等指标。

因此,实际环境下的推荐排序,往往是一个多目标优化问题,而不是简单预测CTR。关于多目标优化,既有阿里的ESSM这样的hard parameter sharing算法(《Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate》),也有Youtube采用的MMOE这样的soft parameter sharing算法(《Recommending What Video to Watch Next: A Multitask Ranking System》)。感兴趣的同学,可以移步原文阅读。

CTR预估只适用于具备“真负”样本的场景

CTR预估本质上就是预测点击与否的二分类算法。和所有算法一样,CTR预估成功的关键之一就是样本的准确性。

  • 对于正样本,一般可发挥的空间不是很大,最多就是卡一个停留时长,将属于“误点击”的正样本剔除。
  • 对于负样本,CTR预估是非常讲究“真实负样本”的,即一定是给用户真实曝光过而被用户忽略的item,才能作为负样本。为此,还有所谓的above-click作法,即只拿用户点击的item的位置以上的未点击item作为负样本。

但是,推荐系统中还有很多场景,我们是无法获得“真负”样本的,比如:

  • 召回。召回的候选集一般是百万级、千万级,其中绝大多数item都从未给用户曝光过,虽然没有点击,但是你不能说用户就一定不喜欢。(至于为什么不拿“曝光未点击”做负样本,请见我的另一篇文章《负样本为王》)
  • 个性化推送。App内部的推荐,我们可以根据埋点,比较容易获知用户滑过、忽略了某些推荐内容,所以比较有信心拿那些item作为负样本。但是在推送场景下,我们很难知道用户未点击的item是用户真的不喜欢,还是压根没看见(像我对于大多数推送,就是瞟了一眼桌面上的手机,这种“忽略”行为是无法埋点的)。所以,你也不能放心地将所有未点击的item都当负样本。

在这种无法获得“真负”样本的场景下,一般我们通过随机采样来获得负样本。但是,随机采样毕竟引入了噪声,这时,再用CTR预估这种要求“绝对准确性”的算法,就不合适了。所以,在召回或个性化推送场景下,我们一般采用Pairwise LearningToRank(LTR)建模排序的“相对准确性”。就好比,

  • 由于负样本中的噪声,让我预测user不喜欢item-的精确程度,我信心不足;
  • 但是由于item-是从库中几百万的item中抽样得到的,大概率和用户兴趣八杆子打不着,让我预测“user对item+,要比user对item-,喜欢得多一点”,信心更加充足一些。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小小挖掘机 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CTR预估与推荐系统的目标存在gap
  • 现实推荐系统也并非只按"预估CTR"排序
  • CTR预估只适用于具备“真负”样本的场景
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档