点击率预估修正

在广告的点击率预估中,训练数据的预处理中包含两条规则:采样和关联。

【1】采样

由于一般广告的整体点击率都在百分位,正负样本不均衡问题较为突出,因此一般都对负样本进行采样以保证模型学习到的数据比例相对均衡。

假设在一段时间内我们的正样本(点击)是$m$个,负样本(没带来点击的曝光)是$n$个,则广告的日志系统一共会上传$n+2m$(多出的$m$条数据是由于有点击的曝光带来的)条数据,则模型学习到的点击率是

此时我们对负样本以采样率为$r$进行采样,则模型学习的点击率如下:

模型在学习到$\hat{ctr}$的分布是一个有偏的分布,预测得到的点击率也是一个有偏的分布$\hat{pctr}$,因此需要修正为与原始$ctr$对应的$pctr$,修正公式如下:

【2】关联

在广告的日志系统中,每个点击和曝光的日志都会上报,这就对点击率预估的模型训练产生了一个问题,有点击的曝光既会上报点击也会上报该曝光。由于该曝光被重复上报,从而导致模型学习到的点击率相比实际的点击率偏低。因此需要对这部分有点击的曝光进行删除。目前业界常采用的做法是将曝光数据缓存起来,等待一段时间来关联点击,然后删除这部分点击负样本,之后才落地供给模型训练使用。

假设在一段时间内我们的正样本(点击)是$m$个,负样本(没带来点击的曝光)是$n$个,则日志系统一共会上传$n+2m$(多出的$m$条数据是由于有点击的曝光带来的)条数据,则模型学习到的点击率是

但实际上真实的点击率为:

如果采用缓存曝光延时关联删除点击的方法,我们可以得到真实的$ctr$,此时再对负样本进行采样,采样率为$r$,则模型学习到的$\hat{ctr}$为:

如果要修正为原始$ctr$对应的$pctr$,需经过如下修正函数:

【3】修正公式对比

对于这两种修正公式来说,都是对模型预测的$\hat{pctr}$的进行了非线性变换,差异点有两点:

一:溢出问题

第二种修正公式修正后的$pctr$值会严格限制在0~1区间,而第一种修正公式在模型预测的$\hat{pctr}$超过阈值$\frac{1}{1+r}=0.869565217$后,修正后的$pctr$大于1溢出导致,因此对负样本采样的时候需要注意抽样后的正负样本比例,不要使模型学习的$\hat{pctr}$太大,超过这一阈值。
calibration1
calibration2

二:预测分布

第一种修正公式相比第二种在曲线后半段的斜率更大,修正区分度更高,两者都是单调增函数,排序不会改变,但是对于ctr场景不仅要考虑排序还要考虑bias,预测分布和真实分布不一致及小样本导致模型学习的pctr不置信等导致的bias问题,需要额外的calibration模块进行校准。常用的有根据真实ctr校正和保序回归校正等方法。
calibration