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

相关推荐HOT
更多>>
C#编程语言里.sln文件是做什么用的?
一、C#编程语言里.sln文件的作用在C#编程语言中,.sln文件是指Visual Studio Solution文件,它用于保存Visual Studio项目和解决方案的相关信息...详情>>
2023-10-13 21:55:29
快速做出有界面的程序用什么编程语言?
一、快速做出有界面的程序用什么编程语言快速做出有界面的程序用编程语言建议C++ Builder,架构先进(和C#一样拖控件),入门比较容易。C++ Bui...详情>>
2023-10-13 20:31:22
流数据和大数据有什么区别?
一、流数据和大数据的区别流数据和大数据是两个不同的概念。大数据通常指的是数据的规模很大,超出了单个计算机或数据库的处理能力,需要采用分...详情>>
2023-10-13 18:38:42
数组名与指针变量有什么区别?
一、数组名与指针变量的区别在 C/C++ 程序中,数组名和指针变量虽然在语法上有些相似,但实际上它们的含义和用途是不同的。1、数组名数组名是指...详情>>
2023-10-11 22:54:21