CTR和推荐算法的本质区别是:CTR预估起源于计算广告,因为关系到真金白银的定价问题,因此要求预估出来的CTR必须“绝对准确”; 但是推荐系统只要求“相对准确”。
一、CTR和推荐算法的本质区别
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依然存在。
延伸阅读:
二、CTR预估只适用于具备“真负”样本的场景
CTR预估本质上就是预测点击与否的二分类算法。和所有算法一样,CTR预估成功的关键之一就是样本的准确性。
对于正样本,一般可发挥的空间不是很大,非常多就是卡一个停留时长,将属于“误点击”的正样本剔除。
对于负样本,CTR预估是非常讲究“真实负样本”的,即一定是给用户真实曝光过而被用户忽略的item,才能作为负样本。为此,还有所谓的above-click作法,即只拿用户点击的item的位置以上的未点击item作为负样本。
但是,推荐系统中还有很多场景,我们是无法获得“真负”样本的,比如:
召回。召回的候选集一般是百万级、千万级,其中绝大多数item都从未给用户曝光过,虽然没有点击,但是你不能说用户就一定不喜欢。(至于为什么不拿“曝光未点击”做负样本,请见我的另一篇文章《负样本为王》)
个性化推送。App内部的推荐,我们可以根据埋点,比较容易获知用户滑过、忽略了某些推荐内容,所以比较有信心拿那些item作为负样本。但是在推送场景下,我们很难知道用户未点击的item是用户真的不喜欢,还是压根没看见(像我对于大多数推送,就是瞟了一眼桌面上的手机,这种“忽略”行为是无法埋点的)。所以,你也不能放心地将所有未点击的item都当负样本。
在这种无法获得“真负”样本的场景下,一般我们通过随机采样来获得负样本。但是,随机采样毕竟引入了噪声,这时,再用CTR预估这种要求“绝对准确性”的算法,就不合适了。所以,在召回或个性化推送场景下,我们一般采用Pairwise LearningToRank(LTR)建模排序的“相对准确性”。
以上就是关于CTR和推荐算法有什么本质区别的内容希望对大家有帮助。