作者:十方
在广告系统中,转化率预估是个非常常见的任务,但是转化行为的发生时间往往发生在点击行为后很久,这样就产生了一个很严重的问题.转化率模型需要不断更新,但是产生点击的数据又不能及时用于转化率预估,也就是我们常说的延迟反馈问题.以前的方法往往预留一个时间窗口,超过这个窗口的样本会当作负样本,如果该样本后续又发生了转化,那又会多一条正样本注入模型,这样就会带来样本偏差.所以这篇论文<Real Negatives Matter: Continuous Training with Real Negatives for Delayed Feedback Modeling>给出了解决方案.
延迟反馈建模
转化率预估本质就是个二分类问题,每个样本会被打上{0,1}的标签,但是由于延迟反馈问题,如下图所示,在等待窗口中发生转化的都被标为正确的样本,但是超出这个窗口后就有被标为负样本但实际是正样本的风险.一个非常navie的想法就是扩大等待窗口.但是在广告系统中数据分布是在动态变化的,扩大等待窗口会导致模型学习不够充分.
下图左表示的是以前的方法,假的负例在转化发生后又会复制一份,作为正例输入到模型中,右图中我们可以看到本文提出的方法会复制真实负例和正例,从而保证样本分布一致.
本文提出的延迟反馈建模方法叫DEFER,q(x)是有偏差的观测分布(由于延迟反馈,模型训练的数据分布),p(x)是无偏差的观测分布,如果不做任何处理,就是假定q(x)约等于p(x),会带来偏差,为了降低偏差同时保障模型实时性,论文复制了正样本和真实负样本.
构建样本的细节在于,给每个样本制定一个等待窗口w1,在这个窗口发生转化就表示它是正样本,否则就是假负样本或者真实副样本,对于这些假负样本如果后面发生转化,那这些样本依然会标上正样本放到模型训练,对于那些真实负样本,依然会复制一份放到模型进行训练,复制的操作带来了更多转化的确定性信息.
因为复制操作,q(x) = p(x),且:
条件概率q(y = 0| x)就可以写为:
p_dp(x) = p(x,y=1,z>w1|x)是x被当作假负的概率.q(y=1|x)可以写为:
由此我们可以得到loss function为:
由上公式,因为p(y=1|x)和p(y=0|x)是不可能得到的,所以用模型预估f替换,并且还需要训练一个模型f_dp预估x是假负例的概率,最终loss function为, [.]是stop gradient操作:
本文还提出了一个多任务离线训练的方法提升泛化能力,设定不同的窗口大小w1~wN,如下所示:
loss函数如下所示:
实验如下图:
参考文献
1、Real Negatives Matter: Continuous Training with Real Negatives for Delayed Feedback Modeling
https://arxiv.org/pdf/2104.14121.pdf