延迟反馈带来的样本偏差如何处理

在广告系统中,转化率预估是个非常常见的任务,但是转化行为的发生时间往往发生在点击行为后很久,这样就产生了一个很严重的问题.转化率模型需要不断更新,但是产生点击的数据又不能及时用于转化率预估,也就是我们常说的延迟反馈问题.以前的方法往往预留一个时间窗口,超过这个窗口的样本会当作负样本,如果该样本后续又发生了转化,那又会多一条正样本注入模型,这样就会带来样本偏差.所以这篇论文给出了解决方案.

延迟反馈建模

转化率预估本质就是个二分类问题,每个样本会被打上{0,1}的标签,但是由于延迟反馈问题,如下图所示,在等待窗口中发生转化的都被标为正确的样本,但是超出这个窗口后就有被标为负样本但实际是正样本的风险.一个非常navie的想法就是扩大等待窗口.但是在广告系统中数据分布是在动态变化的,扩大等待窗口会导致模型学习不够充分.

v2-63d9ca33eee0e72e7fe48673549e7887_b.jpg

下图左表示的是以前的方法,假的负例在转化发生后又会复制一份,作为正例输入到模型中,右图中我们可以看到本文提出的方法会复制真实负例和正例,从而保证样本分布一致.

v2-133a5b39f6e8eec65fbb419b7a04cd8c_b.jpg

本文提出的延迟反馈建模方法叫DEFER,q(x)是有偏差的观测分布(由于延迟反馈,模型训练的数据分布),p(x)是无偏差的观测分布,如果不做任何处理,就是假定q(x)约等于p(x),会带来偏差,为了降低偏差同时保障模型实时性,论文复制了正样本和真实负样本.

构建样本的细节在于,给每个样本制定一个等待窗口w1,在这个窗口发生转化就表示它是正样本,否则就是假负样本或者真实副样本,对于这些假负样本如果后面发生转化,那这些样本依然会标上正样本放到模型训练,对于那些真实负样本,依然会复制一份放到模型进行训练,复制的操作带来了更多转化的确定性信息.

因为复制操作,q(x) = p(x),且:

v2-9a0bb90b5bff03c6e53253e0ff91b6d9_b.jpg

条件概率q(y = 0| x)就可以写为:

v2-b8e2b8fe0b6866079b19061d4af7940b_b.jpg

p_dp(x) = p(x,y=1,z>w1|x)是x被当作假负的概率.q(y=1|x)可以写为:

v2-a344cb7b7458954d3b8e3c43ba436e64_b.jpg

由此我们可以得到loss function为:

v2-f1911afeb51cf1531e8161cfe72f28a5_b.jpg

v2-7b6bb78a8f84baba38f169bf8a2ac230_b.jpg

由上公式,因为p(y=1|x)和p(y=0|x)是不可能得到的,所以用模型预估f替换,并且还需要训练一个模型f_dp预估x是假负例的概率,最终loss function为, [.]是stop gradient操作:

v2-eedb7e968a280be50a3f316c510510fa_b.jpg

本文还提出了一个多任务离线训练的方法提升泛化能力,设定不同的窗口大小w1~wN,如下所示:

v2-bdbb06df0ca95c7367e95f0104e4766e_b.jpg

loss函数如下所示:

v2-2dc245204ea27670d31e470b7c24906d_b.jpg

参考文献

延迟反馈带来的样本偏差如何处理

v2-1641df4d1d7cc969d2fb3968347dc3f0_b.jpg


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部