反馈延迟建模是效果广告领域的一个常见问题。在效果广告领域中,随着广告主愈加关注后链路转化效果,其偏向采用oCPC方式进行广告投放,即在转化(如下载、安装、激活、付费、加购、下单等)上进行出价,由广告平台在广告请求到来后,用模型实时预估点击率pCTR和转化率pCVR,并根据转化出价,计算eCPM:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> eCPM = pCTR × pCVR × tCPA \text{eCPM}=\text{pCTR}\times\text{pCVR}\times\text{tCPA} </math>eCPM=pCTR×pCVR×tCPA
最后使用eCPM进行排序和计价,选取靠前的广告进行展示。
而模型预估的准确性依赖于是否准确收集用户在广告展现后的反馈(是否点击和转化)作为样本标记进行模型训练,特别是实时模型更新更依赖样本的时效性,而转化相对于展现、点击一般都会延迟发生,比如用户点击游戏广告下载后,可能会延迟数日才会在游戏中进行付费。假设将付费作为转化目标由模型预估转化率,若在模型训练时,付费还未发生,则由展现、点击日志构成的样本会被标记为负样本,若最终付费在广告平台归因最长窗口期内发生并回传,则样本又会被标记为正样本,这就会导致样本在前后模型训练时的标记不同,并且训练时样本标记的分布和真实分布相比是有偏的------错误地将正样本标记为负样本(Fake Negative,FN),如果模型直接基于有偏的样本集进行训练,最终模型预估的转化率也是有偏的(偏低)。对于这类反馈延迟问题,业界已经有比较多的理论研究和业务实践,本文主要是对基于重要性采样解决反馈延迟的一系列论文的阅读笔记。
DFM
较早的比较经典的解决反馈延迟问题的论文是Criteo于2014年发表的《Modeling Delayed Feedback in Display Advertising》。这篇论文将反馈延迟下的转化率预估问题转化为两个问题:一是预估转化率,二是预估转化相对点击延迟的时间。
令 <math xmlns="http://www.w3.org/1998/Math/MathML"> x x </math>x表示样本, <math xmlns="http://www.w3.org/1998/Math/MathML"> y ∈ { 0 , 1 } y\in\{0,1\} </math>y∈{0,1}表示训练时样本是否发生转化, <math xmlns="http://www.w3.org/1998/Math/MathML"> c ∈ { 0 , 1 } c\in\{0,1\} </math>c∈{0,1}表示样本最终是否发生转化, <math xmlns="http://www.w3.org/1998/Math/MathML"> d d </math>d表示转化相对点击延迟的时间, <math xmlns="http://www.w3.org/1998/Math/MathML"> e e </math>e表示训练时相对点击的时间。论文设计了两个模型分别预估转化率 <math xmlns="http://www.w3.org/1998/Math/MathML"> p ( c = 1 ∣ x ) p(c=1|x) </math>p(c=1∣x)和转化相对点击延迟的时间 <math xmlns="http://www.w3.org/1998/Math/MathML"> p ( d ∣ x , c = 1 ) p(d|x,c=1) </math>p(d∣x,c=1)。第一个模型采用逻辑回归模型,即:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> p ( c = 1 ∣ x ) = = 1 1 + exp ( − w c ⋅ x ) = σ ( w c ⋅ x ) p(c=1|x)==\frac{1}{1+\exp{(-w_c\cdot x)}}=\sigma(w_c\cdot x) </math>p(c=1∣x)==1+exp(−wc⋅x)1=σ(wc⋅x)
其中, <math xmlns="http://www.w3.org/1998/Math/MathML"> σ \sigma </math>σ是sigmoid函数。论文假定转化相对点击延迟的时间满足指数分布,因此,第二个模型可以表示为:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> p ( d ∣ x , c = 1 ) = λ ( x ) exp ( − λ ( x ) d ) p(d|x,c=1)=\lambda(x)\exp(-\lambda(x)d) </math>p(d∣x,c=1)=λ(x)exp(−λ(x)d)
其中, <math xmlns="http://www.w3.org/1998/Math/MathML"> λ ( x ) = exp ( w d ⋅ x ) \lambda(x)=\exp(w_d\cdot x) </math>λ(x)=exp(wd⋅x)。
论文对这两个模型进行联合训练,但训练完成后,只保留第一个模型用于预估转化率。
FNW和FNC
DFM解决延迟反馈的思路是将转化率预估分解为转化率预估和延迟预估两个问题,并设计相应的模型,而另一个思路是保持模型不变,但针对反馈延迟导致的样本标记分布偏差,通过在损失函数中进行正负样本的加权来纠偏。采用这个思路的较早的比较经典的论文是Twitter于2019年发表的《Addressing Delayed Feedback for Continuous Training with Neural Networks in CTR prediction》。Twitter在这篇论文中主要解决其视频广告的延迟点击问题,因此,在本节内容中,样本为展现日志,样本标记为是否点击。
重要性采样
令 <math xmlns="http://www.w3.org/1998/Math/MathML"> x x </math>x表示样本, <math xmlns="http://www.w3.org/1998/Math/MathML"> y ∈ { 0 , 1 } y\in\{0,1\} </math>y∈{0,1}表示样本最终是否发生点击, <math xmlns="http://www.w3.org/1998/Math/MathML"> f θ ( y ∣ x ) f_\theta(y|x) </math>fθ(y∣x)表示预估点击率的模型,则训练模型常用的交叉熵损失函数可表示为:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> L ( θ ) = − E p [ log f θ ( y ∣ x ) ] = − ∑ x , y p ( x , y ) log f θ ( y ∣ x ) \mathcal{L}(\theta)=-\mathbb{E}p[\log{f\theta(y|x)}]=-\sum_{x,y}{p(x,y)\log{f_\theta(y|x)}} </math>L(θ)=−Ep[logfθ(y∣x)]=−x,y∑p(x,y)logfθ(y∣x)
因为模型训练样本集存在FN问题,所以训练样本集并不满足真实概率分布 <math xmlns="http://www.w3.org/1998/Math/MathML"> p ( x , y ) p(x,y) </math>p(x,y)。令样本集的概率分布为 <math xmlns="http://www.w3.org/1998/Math/MathML"> b ( x , y ) b(x,y) </math>b(x,y),与真实概率分布存在偏差,因此,调整损失函数计算方式,由计算真实概率分布下的期望等价修改为计算偏差概率分布下的期望:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> L ( θ ) = − E p [ log f θ ( y ∣ x ) ] = − E b [ p ( x , y ) b ( x , y ) log f θ ( y ∣ x ) ] \mathcal{L(\theta)}=-\mathbb{E}p[\log{f\theta(y|x)}]=-\mathbb{E}b[\frac{p(x,y)}{b(x,y)}\log{f\theta(y|x)}] </math>L(θ)=−Ep[logfθ(y∣x)]=−Eb[b(x,y)p(x,y)logfθ(y∣x)]
令 <math xmlns="http://www.w3.org/1998/Math/MathML"> w ( x , y ) = p ( x , y ) b ( x , y ) w(x,y)=\frac{p(x,y)}{b(x,y)} </math>w(x,y)=b(x,y)p(x,y)表示重要性权重,上述期望基于训练样本集计算的公式如下:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> L ( θ ) = − 1 N ∑ n w ( x n , y n ) log f θ ( y n ∣ x n ) \mathcal{L}(\theta)=-\frac{1}{N}\sum_n{w(x_n,y_n)\log{f_\theta(y_n|x_n)}} </math>L(θ)=−N1n∑w(xn,yn)logfθ(yn∣xn)
通过上述公式即可以基于有偏训练样本集计算损失函数,并通过梯度下降更新模型参数最小化损失函数。这种基于有偏概率分布预估真实概率分布的方法被称为重要性采样(Importance Sampling)。重要性采样并不需要对原有点击率预估模型结构进行修改,仅需要调节损失函数中正负样本权重,其核心问题即如何计算权重 <math xmlns="http://www.w3.org/1998/Math/MathML"> w ( x , y ) w(x,y) </math>w(x,y)。 对于点击延迟,论文在处理样本时并不会等待其相应的点击发生,而是直接将样本标记为负样本,待点击发生后,再将原样本复制成一条新样本,并将新样本标记为正样本。对于重要性采样,论文设计了纠偏机制------FNW(Fake Negative Weighted)。
FNW
令 <math xmlns="http://www.w3.org/1998/Math/MathML"> p p </math>p表示真实概率分布, <math xmlns="http://www.w3.org/1998/Math/MathML"> b b </math>b表示训练样本集实际有偏的概率分布。虽然由于FN问题导致训练样本标记的概率分布有偏,但论文假设有偏的正负样本集合中样本特征的分布和真实分布是同分布的,即:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> b ( x ∣ y = 0 ) = p ( x ) b ( x ∣ y = 1 ) = p ( x ∣ y = 1 ) \begin{aligned} b(x|y=0)&=p(x) \\ b(x|y=1)&=p(x|y=1) \end{aligned} </math>b(x∣y=0)b(x∣y=1)=p(x)=p(x∣y=1)
另外,由于展现发生时直接将样本标记为负样本,待点击发生后,再将原样本复制成一条新样本,并将新样本标记为正样本,所以训练样本集中负样本的概率可表示为:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> b ( y = 0 ) = 1 1 + p ( y = 1 ) b(y=0)=\frac{1}{1+p(y=1)} </math>b(y=0)=1+p(y=1)1
即分子是原样本,分母是原样本加上点击发生后复制的新样本,同样可得:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> b ( y = 1 ) = p ( y = 1 ) 1 + p ( y = 1 ) b(y=1)=\frac{p(y=1)}{1+p(y=1)} </math>b(y=1)=1+p(y=1)p(y=1)
对使用真实概率分布数据集进行计算的损失函数公式进行如下推导:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> L ( θ ) = − ∑ x , y p ( x , y ) log f θ ( y ∣ x ) = − ∑ x , y p ( y = 1 ∣ x ) log f θ ( y = 1 ∣ x ) + p ( y = 0 ∣ x ) log f θ ( y = 0 ∣ x ) = − ∑ x , y b ( y = 1 ∣ x ) p ( y = 1 ∣ x ) b ( y = 1 ∣ x ) log f θ ( y = 1 ∣ x ) + b ( y = 0 ∣ x ) p ( y = 0 ∣ x ) b ( y = 0 ∣ x ) log f θ ( y = 0 ∣ x ) \begin{aligned} \mathcal{L}(\theta)&=-\sum_{x,y}{p(x,y)\log{f_\theta(y|x)}} \\ &=-\sum_{x,y}{p(y=1|x)\log f_\theta(y=1|x)+p(y=0|x)\log f_\theta(y=0|x)} \\ &=-\sum_{x,y}{b(y=1|x)\frac{p(y=1|x)}{b(y=1|x)}\log f_\theta(y=1|x)+b(y=0|x)\frac{p(y=0|x)}{b(y=0|x)}\log f_\theta(y=0|x)} \end{aligned} </math>L(θ)=−x,y∑p(x,y)logfθ(y∣x)=−x,y∑p(y=1∣x)logfθ(y=1∣x)+p(y=0∣x)logfθ(y=0∣x)=−x,y∑b(y=1∣x)b(y=1∣x)p(y=1∣x)logfθ(y=1∣x)+b(y=0∣x)b(y=0∣x)p(y=0∣x)logfθ(y=0∣x)
即由使用真实概率分布计算改为使用有偏概率分布计算,而 <math xmlns="http://www.w3.org/1998/Math/MathML"> p ( y = 1 ∣ x ) b ( y = 1 ∣ x ) \frac{p(y=1|x)}{b(y=1|x)} </math>b(y=1∣x)p(y=1∣x)、 <math xmlns="http://www.w3.org/1998/Math/MathML"> p ( y = 0 ∣ x ) b ( y = 0 ∣ x ) \frac{p(y=0|x)}{b(y=0|x)} </math>b(y=0∣x)p(y=0∣x)分别是正负样本的重要性权重。对 <math xmlns="http://www.w3.org/1998/Math/MathML"> b ( y = 1 ∣ x ) b(y=1|x) </math>b(y=1∣x)进一步展开:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> b ( y = 1 ∣ x ) = b ( y = 1 , x ) b ( x ) = b ( y = 1 ) b ( x ∣ y = 1 ) b ( x , y = 1 ) + b ( x , y = 0 ) = b ( y = 1 ) b ( x ∣ y = 1 ) b ( y = 1 ) b ( x ∣ y = 1 ) + b ( y = 0 ) b ( x ∣ y = 0 ) \begin{aligned} b(y=1|x)&=\frac{b(y=1,x)}{b(x)} \\ &=\frac{b(y=1)b(x|y=1)}{b(x,y=1)+b(x,y=0)} \\ &=\frac{b(y=1)b(x|y=1)}{b(y=1)b(x|y=1)+b(y=0)b(x|y=0)} \end{aligned} </math>b(y=1∣x)=b(x)b(y=1,x)=b(x,y=1)+b(x,y=0)b(y=1)b(x∣y=1)=b(y=1)b(x∣y=1)+b(y=0)b(x∣y=0)b(y=1)b(x∣y=1)
将 <math xmlns="http://www.w3.org/1998/Math/MathML"> b ( x ∣ y = 0 ) = p ( x ) b(x|y=0)=p(x) </math>b(x∣y=0)=p(x)、 <math xmlns="http://www.w3.org/1998/Math/MathML"> b ( x ∣ y = 1 ) = p ( x ∣ y = 1 ) b(x|y=1)=p(x|y=1) </math>b(x∣y=1)=p(x∣y=1)、 <math xmlns="http://www.w3.org/1998/Math/MathML"> b ( y = 0 ) = 1 1 + p ( y = 1 ) b(y=0)=\frac{1}{1+p(y=1)} </math>b(y=0)=1+p(y=1)1、 <math xmlns="http://www.w3.org/1998/Math/MathML"> b ( y = 1 ) = p ( y = 1 ) 1 + p ( y = 1 ) b(y=1)=\frac{p(y=1)}{1+p(y=1)} </math>b(y=1)=1+p(y=1)p(y=1)代入上式:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> b ( y = 1 ∣ x ) = p ( y = 1 ) 1 + p ( y = 1 ) p ( x ∣ y = 1 ) p ( y = 1 ) 1 + p ( y = 1 ) p ( x ∣ y = 1 ) + 1 1 + p ( y = 1 ) p ( x ) = p ( y = 1 ) p ( x ∣ y = 1 ) p ( y = 1 ) p ( x ∣ y = 1 ) + p ( x ) = p ( y = 1 ∣ x ) p ( x ) p ( y = 1 ∣ x ) p ( x ) + p ( x ) = p ( y = 1 ∣ x ) 1 + p ( y = 1 ∣ x ) \begin{aligned} b(y=1|x)&=\frac{\frac{p(y=1)}{1+p(y=1)}p(x|y=1)}{\frac{p(y=1)}{1+p(y=1)}p(x|y=1)+\frac{1}{1+p(y=1)}p(x)} \\ &=\frac{p(y=1)p(x|y=1)}{p(y=1)p(x|y=1)+p(x)} \\ &=\frac{p(y=1|x)p(x)}{p(y=1|x)p(x)+p(x)} \\ &=\frac{p(y=1|x)}{1+p(y=1|x)} \end{aligned} </math>b(y=1∣x)=1+p(y=1)p(y=1)p(x∣y=1)+1+p(y=1)1p(x)1+p(y=1)p(y=1)p(x∣y=1)=p(y=1)p(x∣y=1)+p(x)p(y=1)p(x∣y=1)=p(y=1∣x)p(x)+p(x)p(y=1∣x)p(x)=1+p(y=1∣x)p(y=1∣x)
进一步可得:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> b ( y = 0 ∣ x ) = 1 − b ( y = 1 ∣ x ) = 1 1 + p ( y = 1 ∣ x ) b(y=0|x)=1-b(y=1|x)=\frac{1}{1+p(y=1|x)} </math>b(y=0∣x)=1−b(y=1∣x)=1+p(y=1∣x)1
将 <math xmlns="http://www.w3.org/1998/Math/MathML"> b ( y = 1 ∣ x ) = p ( y = 1 ∣ x ) 1 + p ( y = 1 ∣ x ) b(y=1|x)=\frac{p(y=1|x)}{1+p(y=1|x)} </math>b(y=1∣x)=1+p(y=1∣x)p(y=1∣x)和 <math xmlns="http://www.w3.org/1998/Math/MathML"> b ( y = 0 ∣ x ) = 1 1 + p ( y = 1 ∣ x ) b(y=0|x)=\frac{1}{1+p(y=1|x)} </math>b(y=0∣x)=1+p(y=1∣x)1代入上面的损失函数可得:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> L I S ( θ ) = − ∑ x , y b ( y = 1 ∣ x ) ( 1 + p ( y = 1 ∣ x ) ) log f θ ( y = 1 ∣ x ) + b ( y = 0 ∣ x ) p ( y = 0 ∣ x ) ( 1 + p ( y = 1 ∣ x ) ) log f θ ( y = 0 ∣ x ) = − ∑ x , y b ( y = 1 ∣ x ) ( 1 + p ( y = 1 ∣ x ) ) log f θ ( y = 1 ∣ x ) + b ( y = 0 ∣ x ) ( 1 − p ( y = 1 ∣ x ) ) ( 1 + p ( y = 1 ∣ x ) ) log ( 1 − f θ ( y = 1 ∣ x ) ) \begin{aligned} \mathcal{L}{IS}(\theta)&=-\sum{x,y}{b(y=1|x)(1+p(y=1|x))\log f_\theta(y=1|x)+b(y=0|x)p(y=0|x)(1+p(y=1|x))\log f_\theta(y=0|x)} \\ &=-\sum_{x,y}{b(y=1|x)(1+p(y=1|x))\log f_\theta(y=1|x)+b(y=0|x)(1-p(y=1|x))(1+p(y=1|x))\log(1-f_\theta(y=1|x))} \end{aligned} </math>LIS(θ)=−x,y∑b(y=1∣x)(1+p(y=1∣x))logfθ(y=1∣x)+b(y=0∣x)p(y=0∣x)(1+p(y=1∣x))logfθ(y=0∣x)=−x,y∑b(y=1∣x)(1+p(y=1∣x))logfθ(y=1∣x)+b(y=0∣x)(1−p(y=1∣x))(1+p(y=1∣x))log(1−fθ(y=1∣x))
即在损失函数中,当训练样本集有偏时,对于正样本,用 <math xmlns="http://www.w3.org/1998/Math/MathML"> ( 1 + p ( y = 1 ∣ x ) ) (1+p(y=1|x)) </math>(1+p(y=1∣x))进行加权,对于负样本,用 <math xmlns="http://www.w3.org/1998/Math/MathML"> ( 1 − p ( y = 1 ∣ x ) ) ⋅ ( 1 + p ( y = 1 ∣ x ) ) (1-p(y=1|x))\cdot(1+p(y=1|x)) </math>(1−p(y=1∣x))⋅(1+p(y=1∣x))进行加权 。由于 <math xmlns="http://www.w3.org/1998/Math/MathML"> p ( y = 1 ∣ x ) p(y=1|x) </math>p(y=1∣x)无法提前得知,所以用模型预估值 <math xmlns="http://www.w3.org/1998/Math/MathML"> f θ ( y = 1 ∣ x ) f_\theta(y=1|x) </math>fθ(y=1∣x)直接替换真实概率分布 <math xmlns="http://www.w3.org/1998/Math/MathML"> p ( y = 1 ∣ x ) p(y=1|x) </math>p(y=1∣x),即权重修改为 <math xmlns="http://www.w3.org/1998/Math/MathML"> ( 1 + f θ ( y = 1 ∣ x ) ) (1+f_\theta(y=1|x)) </math>(1+fθ(y=1∣x))和 <math xmlns="http://www.w3.org/1998/Math/MathML"> ( 1 − f θ ( y = 1 ∣ x ) ) ⋅ ( 1 + f θ ( y = 1 ∣ x ) ) (1-f_\theta(y=1|x))\cdot(1+f_\theta(y=1|x)) </math>(1−fθ(y=1∣x))⋅(1+fθ(y=1∣x)),损失函数可进一步表示为:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> L I S ( θ ) = − ∑ x , y b ( y = 1 ∣ x ) [ ( 1 + f θ ( y = 1 ∣ x ) ) ] log f θ ( y = 1 ∣ x ) + b ( y = 0 ∣ x ) [ ( 1 − f θ ( y = 1 ∣ x ) ) ( 1 + f θ ( y = 1 ∣ x ) ) ] log ( 1 − f θ ( y = 1 ∣ x ) ) \mathcal{L}{IS}(\theta)=-\sum{x,y}{b(y=1|x)\left[(1+f_\theta(y=1|x))\right]\log f_\theta(y=1|x)+b(y=0|x)\left[(1-f_\theta(y=1|x))(1+f_\theta(y=1|x))\right]\log(1-f_\theta(y=1|x))} </math>LIS(θ)=−x,y∑b(y=1∣x)[(1+fθ(y=1∣x))]logfθ(y=1∣x)+b(y=0∣x)[(1−fθ(y=1∣x))(1+fθ(y=1∣x))]log(1−fθ(y=1∣x))
论文指出,损失函数由中括号包含的权重部分虽由模型计算所得,但在计算梯度时,这部分固定不进行求导。
FNC
基于FNW,论文设计了另一种纠偏机制------FNC(Fake Negative Calibration)。FNC对模型和损失函数均不进行调整,直接基于有偏的训练样本集训练模型并预测有偏概率分布 <math xmlns="http://www.w3.org/1998/Math/MathML"> b ( y = 1 ∣ x ) b(y=1|x) </math>b(y=1∣x),并通过FNW中推导出的公式对 <math xmlns="http://www.w3.org/1998/Math/MathML"> b ( y = 1 ∣ x ) b(y=1|x) </math>b(y=1∣x)进行纠偏得到 <math xmlns="http://www.w3.org/1998/Math/MathML"> p ( y = 1 ∣ x ) p(y=1|x) </math>p(y=1∣x):
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> p ( y = 1 ∣ x ) = b ( y = 1 ∣ x ) 1 − b ( y = 1 ∣ x ) p(y=1|x)=\frac{b(y=1|x)}{1-b(y=1|x)} </math>p(y=1∣x)=1−b(y=1∣x)b(y=1∣x)
对于模型结构,论文使用了当时点击率预估比较常用的Logistics回归和Wide & Deep。
ES-DFM
针对反馈延迟问题,Twitter提出的FNW先将所有样本直接标记为负样本用于训练,等点击发生后,再复制原样本、构造新的正样本用于训练,并基于重要性采样,通过调节损失函数中正负样本权重,解决反馈延迟问题。这种方法虽然样本时效性较高,但会导致所有正样本初始时均会被错误标记为负样本。一种权衡的方法是等待一段时间(Elapsed Time),若点击发生,则将样本标记为正样本,否则仍标记为负样本,等待虽不能解决FN问题(点击可能在等待后发生),但在降低样本时效性的代价下,能够带来样本准确性的提升 。基于这个思路,阿里妈妈于2021年发表了论文《Capturing Delayed Feedback in Conversion Rate Prediction via Elapsed-Time Sampling》,提出了ES-DFM(Elapsed-Time Sampling Delayed Feedback Model)算法。由于后续内容主要解决转化延迟问题,因此样本为展现、点击日志,样本标记为是否转化。
令 <math xmlns="http://www.w3.org/1998/Math/MathML"> x x </math>x表示样本特征, <math xmlns="http://www.w3.org/1998/Math/MathML"> y y </math>y表示样本标记, <math xmlns="http://www.w3.org/1998/Math/MathML"> e e </math>e表示等待时间, <math xmlns="http://www.w3.org/1998/Math/MathML"> h h </math>h表示转化延迟时间。根据等待时间、转化延迟时间和归因窗口三者之间的关系,可将真实样本集样本分为以下三种类型:
- Real Negative:不发生转化或转化在归因窗口(上图未标出归因窗口)后发生, <math xmlns="http://www.w3.org/1998/Math/MathML"> y = 0 y=0 </math>y=0;
- Fake Negative: <math xmlns="http://www.w3.org/1998/Math/MathML"> h > e h>e </math>h>e,转化在等待时间后、归因窗口内发生并归因,初始时 <math xmlns="http://www.w3.org/1998/Math/MathML"> y = 0 y=0 </math>y=0,归因后复制新样本, <math xmlns="http://www.w3.org/1998/Math/MathML"> y = 1 y=1 </math>y=1;
- Positive: <math xmlns="http://www.w3.org/1998/Math/MathML"> h ≤ e h\le e </math>h≤e,转化在等待时间内发生并归因, <math xmlns="http://www.w3.org/1998/Math/MathML"> y = 1 y=1 </math>y=1;
令 <math xmlns="http://www.w3.org/1998/Math/MathML"> p ( x , y ) p(x,y) </math>p(x,y)表示真实概率分布, <math xmlns="http://www.w3.org/1998/Math/MathML"> q ( x , y ) q(x,y) </math>q(x,y)表示训练样本集因反馈延迟导致的有偏概率分布,则对于转化率预估模型 <math xmlns="http://www.w3.org/1998/Math/MathML"> f θ ( x ) f_\theta(x) </math>fθ(x),理想的损失函数就是计算真实概率分布下的交叉熵损失函数期望:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> L i d e a l = E ( x , y ) ∼ p ( x , y ) l ( y , f θ ( x ) ) \mathcal{L}{ideal}=\mathbb{E}{(x,y)\sim p(x,y)}\mathcal{l(y,f_\theta(x))} </math>Lideal=E(x,y)∼p(x,y)l(y,fθ(x))
若先不考虑Fake Negative样本在转化发生并归因后复制正样本、导致训练样本集样本数多于真实样本集样本数的问题,则训练样本集负样本由真实样本集Real Negative样本和真实样本集Fake Negative样本构成,即:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> q ( y = 0 ∣ x ) = p ( y = 0 ∣ x ) + p ( y = 1 ∣ x ) p ( h > e ∣ x , y = 1 ) q(y=0|x)=p(y=0|x)+p(y=1|x)p(h>e|x,y=1) </math>q(y=0∣x)=p(y=0∣x)+p(y=1∣x)p(h>e∣x,y=1)
而训练样本集正样本集真实样本集Positive样本构成,即:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> q ( y = 1 ∣ x ) = p ( y = 1 ∣ x ) p ( h ≤ e ∣ x , y = 1 ) q(y=1|x)=p(y=1|x)p(h\le e|x,y=1) </math>q(y=1∣x)=p(y=1∣x)p(h≤e∣x,y=1)
若再考虑Fake Negative样本在转化发生并归因后复制正样本的问题,则训练样本集正样本由真实样本集Positive样本和真实样本集Fake Negative样本复制正样本构成,则 <math xmlns="http://www.w3.org/1998/Math/MathML"> q ( y = 0 ∣ x ) q(y=0|x) </math>q(y=0∣x)和 <math xmlns="http://www.w3.org/1998/Math/MathML"> q ( y = 1 ∣ x ) q(y=1|x) </math>q(y=1∣x)可进一步表示为:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> q ( y = 0 ∣ x ) = p ( y = 0 ∣ x ) + p ( y = 1 ∣ x ) p ( h > e ∣ x , y = 1 ) 1 + p ( y = 1 ∣ x ) p ( h > e ∣ x , y = 1 ) q(y=0|x)=\frac{p(y=0|x)+p(y=1|x)p(h>e|x,y=1)}{1+p(y=1|x)p(h>e|x,y=1)} </math>q(y=0∣x)=1+p(y=1∣x)p(h>e∣x,y=1)p(y=0∣x)+p(y=1∣x)p(h>e∣x,y=1)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> q ( y = 1 ∣ x ) = p ( y = 1 ∣ x ) p ( h ≤ e ∣ x , y = 1 ) + p ( y = 1 ∣ x ) p ( h > e ∣ x , y = 1 ) 1 + p ( y = 1 ∣ x ) p ( h > e ∣ x , y = 1 ) = p ( y = 1 ∣ x ) 1 + p ( y = 1 ∣ x ) p ( h > e ∣ x , y = 1 ) \begin{aligned} q(y=1|x)&=\frac{p(y=1|x)p(h\le e|x,y=1)+p(y=1|x)p(h>e|x,y=1)}{1+p(y=1|x)p(h>e|x,y=1)} \\ &=\frac{p(y=1|x)}{1+p(y=1|x)p(h>e|x,y=1)} \end{aligned} </math>q(y=1∣x)=1+p(y=1∣x)p(h>e∣x,y=1)p(y=1∣x)p(h≤e∣x,y=1)+p(y=1∣x)p(h>e∣x,y=1)=1+p(y=1∣x)p(h>e∣x,y=1)p(y=1∣x)
由FNW中的推导可得,若采用重要性采样,需要计算正负样本权重 <math xmlns="http://www.w3.org/1998/Math/MathML"> p ( y = 1 ∣ x ) q ( y = 1 ∣ x ) \frac{p(y=1|x)}{q(y=1|x)} </math>q(y=1∣x)p(y=1∣x)、 <math xmlns="http://www.w3.org/1998/Math/MathML"> p ( y = 0 ∣ x ) q ( y = 0 ∣ x ) \frac{p(y=0|x)}{q(y=0|x)} </math>q(y=0∣x)p(y=0∣x),由上述 <math xmlns="http://www.w3.org/1998/Math/MathML"> q ( y = 0 ∣ x ) q(y=0|x) </math>q(y=0∣x)、 <math xmlns="http://www.w3.org/1998/Math/MathML"> q ( y = 1 ∣ x ) q(y=1|x) </math>q(y=1∣x)的推导,可进一步得到:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> p ( y = 1 ∣ x ) q ( y = 1 ∣ x ) = 1 + p ( y = 1 ∣ x ) p ( h > e ∣ x , y = 1 ) = 1 + p d p \begin{aligned} \frac{p(y=1|x)}{q(y=1|x)}&=1+p(y=1|x)p(h>e|x,y=1) \\ &=1+p_{dp} \end{aligned} </math>q(y=1∣x)p(y=1∣x)=1+p(y=1∣x)p(h>e∣x,y=1)=1+pdp
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> p ( y = 0 ∣ x ) q ( y = 0 ∣ x ) = p ( y = 0 ∣ x ) + p ( y = 0 ∣ x ) p ( y = 1 ∣ x ) p ( h > e ∣ x , y = 1 ) p ( y = 0 ∣ x ) + p ( y = 1 ∣ x ) p ( h > e ∣ x , y = 1 ) = p ( y = 0 ∣ x ) ( 1 + p ( y = 1 ∣ x ) p ( h > e ∣ x , y = 1 ) ) p ( y = 0 ∣ x ) + p ( y = 1 ∣ x ) p ( h > e ∣ x , y = 1 ) = [ 1 + p d p ( x ) ] p r n ( x ) \begin{aligned} \frac{p(y=0|x)}{q(y=0|x)}&=\frac{p(y=0|x)+p(y=0|x)p(y=1|x)p(h>e|x,y=1)}{p(y=0|x)+p(y=1|x)p(h>e|x,y=1)} \\ &=\frac{p(y=0|x)(1+p(y=1|x)p(h>e|x,y=1))}{p(y=0|x)+p(y=1|x)p(h>e|x,y=1)} \\ &=[1+p_{dp}(x)]p_{rn}(x) \end{aligned} </math>q(y=0∣x)p(y=0∣x)=p(y=0∣x)+p(y=1∣x)p(h>e∣x,y=1)p(y=0∣x)+p(y=0∣x)p(y=1∣x)p(h>e∣x,y=1)=p(y=0∣x)+p(y=1∣x)p(h>e∣x,y=1)p(y=0∣x)(1+p(y=1∣x)p(h>e∣x,y=1))=[1+pdp(x)]prn(x)
其中:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> p d p = p ( y = 1 ∣ x ) p ( h > e ∣ x , y = 1 ) p_{dp}=p(y=1|x)p(h>e|x,y=1) </math>pdp=p(y=1∣x)p(h>e∣x,y=1)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> p r n = p ( y = 0 ∣ x ) p ( y = 0 ∣ x ) + p ( y = 1 ∣ x ) p ( h > e ∣ x , y = 1 ) p_{rn}=\frac{p(y=0|x)}{p(y=0|x)+p(y=1|x)p(h>e|x,y=1)} </math>prn=p(y=0∣x)+p(y=1∣x)p(h>e∣x,y=1)p(y=0∣x)
从公式可以看出, <math xmlns="http://www.w3.org/1998/Math/MathML"> p d p p_{dp} </math>pdp表示真实样本集中延迟正样本(即Fake Negative样本)的概率(Delayed Positive Probability), <math xmlns="http://www.w3.org/1998/Math/MathML"> p r n p_{rn} </math>prn表示训练样本集负样本(包含Fake Negative样本)中真负样本(即Real Negative样本)的概率(Real Negative Probability)。基于上述正负样本权重 <math xmlns="http://www.w3.org/1998/Math/MathML"> p ( y = 1 ∣ x ) q ( y = 1 ∣ x ) \frac{p(y=1|x)}{q(y=1|x)} </math>q(y=1∣x)p(y=1∣x)、 <math xmlns="http://www.w3.org/1998/Math/MathML"> p ( y = 0 ∣ x ) q ( y = 0 ∣ x ) \frac{p(y=0|x)}{q(y=0|x)} </math>q(y=0∣x)p(y=0∣x)的表达式,损失函数最终可写成:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> L i w n = − ∑ ( x i , y i ) ∈ D ~ n y i [ 1 + p d p ( x i ) ] log ( f θ ( x i ) ) + ( 1 − y i ) [ 1 + p d p ( x i ) ] p r n ( x i ) log ( 1 − f θ ( x i ) ) \mathcal{L}{iw}^n=-\sum{(x_i,y_i)\in\tilde{D}}^n{y_i[1+p_{dp}(x_i)]\log(f_\theta(x_i))+(1-y_i)[1+p_{dp}(x_i)]p_{rn}(x_i)\log(1-f_\theta(x_i))} </math>Liwn=−(xi,yi)∈D~∑nyi[1+pdp(xi)]log(fθ(xi))+(1−yi)[1+pdp(xi)]prn(xi)log(1−fθ(xi))
其中, <math xmlns="http://www.w3.org/1998/Math/MathML"> D ~ \tilde{D} </math>D~表示训练样本集,其满足概率分布 <math xmlns="http://www.w3.org/1998/Math/MathML"> q ( x , y ) q(x,y) </math>q(x,y)。至此,论文将正负样本权重的计算转化为计算 <math xmlns="http://www.w3.org/1998/Math/MathML"> p d p p_{dp} </math>pdp和 <math xmlns="http://www.w3.org/1998/Math/MathML"> p r p p_{rp} </math>prp。论文分别使用分类器 <math xmlns="http://www.w3.org/1998/Math/MathML"> f d p f_{dp} </math>fdp和 <math xmlns="http://www.w3.org/1998/Math/MathML"> f r n f_{rn} </math>frn预估 <math xmlns="http://www.w3.org/1998/Math/MathML"> p d p p_{dp} </math>pdp和 <math xmlns="http://www.w3.org/1998/Math/MathML"> p r n p_{rn} </math>prn,这两个分类器共用一个模型进行联合训练,模型结构和转化率预估模型相同。
对于如何构造 <math xmlns="http://www.w3.org/1998/Math/MathML"> f d p f_{dp} </math>fdp和 <math xmlns="http://www.w3.org/1998/Math/MathML"> f r n f_{rn} </math>frn的训练数据,论文使用30天前的历史样本数据,这些样本数据已无反馈延迟,可以对其准确标记正负样本以及当时是否延迟。对于 <math xmlns="http://www.w3.org/1998/Math/MathML"> f d p f_{dp} </math>fdp,其正样本为转化延迟正样本,其负样本为历史样本数据中除转化延迟正样本以外的其他样本,对于 <math xmlns="http://www.w3.org/1998/Math/MathML"> f r n f_{rn} </math>frn,其正样本为转化负样本,其负样本为转化延迟正样本。
论文通过等待转化发生并归因以提升样本准确性。对于等待时间的长短,论文指出电商广告场景下,不同类型商品的转化延迟时间不同(比如价格高的商品转化延迟大),因此相应的等待时间也应不同,但论文对此进行了简化,将等待时间固定为常量,并通过实验验证其取值为1小时较合适。
DEFER
FNW和ES-DFM在处理样本时,均只对Fake Negative样本进行处理,在转化发生并归因后,复制原样本,构造新的正样本,如图2左侧所示。阿里妈妈于2021年发表了论文《Real Negatives Matter: Continuous Training with Real Negatives for Delayed Feedback Modeling》,提出了DEFER(DElayed FEedback modeling with Real negatives)算法,如图2右侧所示,除复制Fake Negative样本外,也复制Real Negative样本和Positive样本,从而保证训练样本集特征概率分布 <math xmlns="http://www.w3.org/1998/Math/MathML"> q ( x ) q(x) </math>q(x)和真实样本集特征概率分布 <math xmlns="http://www.w3.org/1998/Math/MathML"> p ( x ) p(x) </math>p(x)一致。
通过复制,训练样本集除包含真实样本集中的Positive、Fake Negative和Real Negative外,还包含复制样本集中的真正样本和真负样本,真实样本集和复制样本集除部分样本的标记不同外,其余均一致。
训练样本集负样本包含真负样本(真实样本集中的Real Negative样本和复制样本集中其对应的复制样本)和Fake Negative样本,则 <math xmlns="http://www.w3.org/1998/Math/MathML"> q ( x , y = 0 ) q(x,y=0) </math>q(x,y=0)可用如下公式表示:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> q ( x , y = 0 ) = p ( x , y = 0 ) + 1 2 p ( x , y = 0 , z > w 1 ) q(x,y=0)=p(x,y=0)+\frac{1}{2}p(x,y=0,z>w_1) </math>q(x,y=0)=p(x,y=0)+21p(x,y=0,z>w1)
进而, <math xmlns="http://www.w3.org/1998/Math/MathML"> q ( y = 0 ∣ x ) q(y=0|x) </math>q(y=0∣x)可表示为:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> q ( y = 0 ∣ x ) = q ( x , y = 0 ) q ( x ) = p ( x , y = 0 ) + 1 2 p ( x , y = 1 , z > w 1 ) p ( x ) = p ( y = 0 ∣ x ) + 1 2 p d p ( x ) \begin{aligned} q(y=0|x)&=\frac{q(x,y=0)}{q(x)} \\ &=\frac{p(x,y=0)+\frac{1}{2}p(x,y=1,z>w_1)}{p(x)} \\ &=p(y=0|x)+\frac{1}{2}p_{dp}(x) \end{aligned} </math>q(y=0∣x)=q(x)q(x,y=0)=p(x)p(x,y=0)+21p(x,y=1,z>w1)=p(y=0∣x)+21pdp(x)
其中:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> p d p ( x ) = p ( x , y = 1 , z > w 1 ∣ x ) p_{dp}(x)=p(x,y=1,z>w_1|x) </math>pdp(x)=p(x,y=1,z>w1∣x)
<math xmlns="http://www.w3.org/1998/Math/MathML"> p d p p_{dp} </math>pdp表示真实样本集中延迟正样本(即Fake Negative样本)的概率(Delayed Positive Probability)。
类似地,训练样本集正样本包含真正样本(真实样本集中的真正样本和复制样本集中其对应的复制样本),并减去真实样本集中的Fake Negative样本,可作如下公式推导:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> q ( y = 1 ∣ x ) = q ( x , y = 1 ) q ( x ) = p ( x , y = 1 ) − 1 2 p ( x , y = 1 , z > w 1 ) p ( x ) = p ( y = 1 ∣ x ) − 1 2 p d p ( x ) \begin{aligned} q(y=1|x)&=\frac{q(x,y=1)}{q(x)} \\ &=\frac{p(x,y=1)-\frac{1}{2}p(x,y=1,z>w_1)}{p(x)} \\ &=p(y=1|x)-\frac{1}{2}p_{dp}(x) \end{aligned} </math>q(y=1∣x)=q(x)q(x,y=1)=p(x)p(x,y=1)−21p(x,y=1,z>w1)=p(y=1∣x)−21pdp(x)
重要性采样中正负样本权重 <math xmlns="http://www.w3.org/1998/Math/MathML"> p ( y = 1 ∣ x ) q ( y = 1 ∣ x ) \frac{p(y=1|x)}{q(y=1|x)} </math>q(y=1∣x)p(y=1∣x)、 <math xmlns="http://www.w3.org/1998/Math/MathML"> p ( y = 0 ∣ x ) q ( y = 0 ∣ x ) \frac{p(y=0|x)}{q(y=0|x)} </math>q(y=0∣x)p(y=0∣x)可表示为:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> p ( y = 0 ∣ x ) q ( y = 0 ∣ x ) = p ( y = 0 ∣ x ) p ( y = 0 ∣ x ) + 1 2 p d p ( x ) \frac{p(y=0|x)}{q(y=0|x)}=\frac{p(y=0|x)}{p(y=0|x)+\frac{1}{2}p_{dp}(x)} </math>q(y=0∣x)p(y=0∣x)=p(y=0∣x)+21pdp(x)p(y=0∣x)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> p ( y = 1 ∣ x ) q ( y = 1 ∣ x ) = p ( y = 1 ∣ x ) p ( y = 1 ∣ x ) − 1 2 p d p ( x ) \frac{p(y=1|x)}{q(y=1|x)}=\frac{p(y=1|x)}{p(y=1|x)-\frac{1}{2}p_{dp}(x)} </math>q(y=1∣x)p(y=1∣x)=p(y=1∣x)−21pdp(x)p(y=1∣x)
基于上述正负样本权重,损失函数最终可写成:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> L = − ∑ x , y y p ( y = 1 ∣ x ) p ( y = 1 ∣ x ) − 1 2 p d p ( x ) log f θ ( x ) + ( 1 − y ) p ( y = 0 ∣ x ) p ( y = 0 ∣ x ) + 1 2 p d p ( x ) log ( 1 − f θ ( x ) ) \mathcal{L}=-\sum_{x,y}{y\frac{p(y=1|x)}{p(y=1|x)-\frac{1}{2}p_{dp}(x)}\log f_\theta(x)+(1-y)\frac{p(y=0|x)}{p(y=0|x)+\frac{1}{2}p_{dp}(x)}\log(1-f_\theta(x))} </math>L=−x,y∑yp(y=1∣x)−21pdp(x)p(y=1∣x)logfθ(x)+(1−y)p(y=0∣x)+21pdp(x)p(y=0∣x)log(1−fθ(x))
其中, <math xmlns="http://www.w3.org/1998/Math/MathML"> p ( y = 1 ∣ x ) p(y=1|x) </math>p(y=1∣x)和 <math xmlns="http://www.w3.org/1998/Math/MathML"> p ( y = 0 ∣ x ) p(y=0|x) </math>p(y=0∣x)未知,使用模型预估值 <math xmlns="http://www.w3.org/1998/Math/MathML"> f θ ( x ) f_\theta(x) </math>fθ(x)和 <math xmlns="http://www.w3.org/1998/Math/MathML"> 1 − f θ ( x ) 1-f_\theta(x) </math>1−fθ(x)分别替代,另外,和ES-DFM 类似,训练分类器 <math xmlns="http://www.w3.org/1998/Math/MathML"> f d p ( x ) f_{dp}(x) </math>fdp(x)用于预估 <math xmlns="http://www.w3.org/1998/Math/MathML"> p d p ( x ) p_{dp}(x) </math>pdp(x),因此上述损失函数可进一步改写为:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> L = − ∑ x , y y [ f θ ( x ) f θ ( x ) − 1 2 f d p ( x ) ] log f θ ( x ) + ( 1 − y ) [ 1 − f θ ( x ) 1 − f θ ( x ) + 1 2 f d p ( x ) ] log ( 1 − f θ ( x ) ) \mathcal{L}=-\sum_{x,y}{y[\frac{f_\theta(x)}{f_\theta(x)-\frac{1}{2}f_{dp}(x)}]\log f_\theta(x)+(1-y)[\frac{1-f_\theta(x)}{1-f_\theta(x)+\frac{1}{2}f_{dp}(x)}]\log(1-f_\theta(x))} </math>L=−x,y∑y[fθ(x)−21fdp(x)fθ(x)]logfθ(x)+(1−y)[1−fθ(x)+21fdp(x)1−fθ(x)]log(1−fθ(x))
其中,中括号部分和FNW中的处理方式一致,计算梯度时,固定不进行求导。