ctr 校准

什么是ctr校准?

校准(Calibration)指对模型的预估 CTR (或者 CVR 等其它概率问题, 以下统一以 CTR 为例叙述) 通过一定手段进行调整的手段.

为什么要做校准?

通常我们在做CTR预估的时候,预估值会与真实的CTR有偏差bias(高估或者低估),偏差一般来说有以下两种类型:

  • 预估结果在全量数据上存在Bias(即整体高估或者低估)。
    这种情况,一般是由模型收敛存在异常导致,或者数据流存在问题导致。这种情况下,需要解决数据流异常,对模型进行调优来解决。
  • 预估结果在部分流量上存在Bias(如在青年用户上存在高估,在少年用户上存在低估,但全量数据上可能不存在 bias)。
    这种情况,又存在两种可能
    • 特征设计不合理,存在有区分度的特征并没有加入到模型中
      此时,建议进行进一步的特征工作来解决.
    • 由于部分流量上训练数据不足,导致训练不充分。

下图为一个示例(蓝色点为真实数据, 绿色虚线为预估值),横轴为 ctr 排序后的分桶, 纵轴为该桶内 sum(click)/sum(pctr) 在该图中我们发现,在不同 ctr 水平上,时而存在高估,时而存在低估,在 ctr 的极值附近这种情况更为明显。

CTR预估值与真实值有偏差,并不会影响AUC指标和排序,但是实际使用中往往需要CTR的预估值不仅仅是做到有序,即正样本排在负样本前面,而且需要保证有一定的区分度。

尤其是在广告场景中,ctr 与最终的出价相关,如果模型高估过于严重,则可能会导致严重的亏损或者流量浪费。低估则对广告平台的大盘量有较大影响。

这涉及到一个概念保序和保距。关于保序和保距,可详细看这篇文章:千寻:ctr校准的方式

负采样校准

在使用正负样本数量不对称的数据训练一个预测模型时,比如在训练广告的CTR模型时,训练数据就严重正负样本不对称,负样本可能是正样本的几百倍。

对于这种问题,常用的做法是对负样本进行采样,将采样后的负样本和正样本一起作为训练数据。但这样的训练数据训练出的模型预测概率的均值会比实际的均值要大些。

因为对负样本采样导致训练数据的分布和原始数据的分布不一致了。所以在预测时要对模型预测值进行矫正

矫正ctr —第一种方法:

首先假设

{p'} 是负采样后的预测概率;
{p} 表示未采样的预测概率;
N_p 原始的正样本数量;
N_n 采样后的负样本的数量;
{r} 表示负样本的采样比例,这个值通常是分数。
\frac{N_{p}}{r} 表示原始的负样本数量。

  1. 可以得到:

\frac{p'}{1-p'} = \frac{N_p}{N_n}  \ \ \ \ \  (1) \\ \frac{p}{1-p} = \frac{N_p}{\frac{N_n}{r}}  \ \ \ \ \ \ (2) \\ p' = \frac{1}{1+e^{-wx}}  \ \ \ \ (3) \

公式(1)、(2)这里假设 (正样本概率)/(负样本概率)=(正样本数)/(负样本数)
公式(3)是一个假设,为了方便后面的计算。

2. 根据(1)和 (2)得到:
\frac{p}{1-p} = \frac{N_p}{\frac{N_n}{r}} = \frac{p'}{1-p'} * r  \ \ (4)\

3. 已知(3)可得:
 ln\frac{p'}{1-p'} = wx \ \ \ (5) \

变化过程如下
由(3)取倒数\\  \frac{1}{p' }= \ 1+e^{-wx}   (第一步)\ \ \      \  \frac{1-p'}{p' }= \ e^{-wx}  (第二步)\ \ \    \  In(\frac{1-p'}{p' })= \ -wx  (第三步)\ \ \ \

4. 已知(4)和(5)可得:

    ln\frac{p}{1-p} = ln\frac{p'}{1-p'} + ln(r) = wx+ln(r) \ \ \ (6) \\

变化过程如下
(4)取以e为底的对数,然后用(5)替换。

5. 最终得到的预测概率为:
p =  \frac{1}{1+e^{-(wx+ln(r))}}  \ \ \ (7)\

变化过程如下

    ln\frac{p}{1-p} = wx+ln(r) \ \ \ (第一步) \\   然后取e为底ln\frac{p}{1-p}为指数的变换。

矫正ctr —第二种方法:

参考的论文是14年facebook的论文《Practical Lessons from Predicting Clicks on Ads at Facebook》

q = \frac{p}{p+\frac{(1-p)}{w}}

其中P是预估值,w是负样本的采样比例,q是校准后的值。

矫正ctr例子

在广告的CTR训练中,在训练集中对负样本使用下采样,下采样比例为1/7,即选择1/7负样本作为训练数据。

在模型评估中,新模型ctr的mean为0.02。但是线上的Base模型mean为0.0032。所以上线前要对新模型的预估ctr做矫正。按照上面的公式带入计算。

p'是已经采样之后的预测概率值为0.02
r表示负样本的采样比例为1/7
要在要预估p(未采样的预测概率)

用第一种方法:

由(5)可知wx等于-2In7。
将wx等于-2In7带入公式(7)等于0.003。

用第二种方法:

\frac{0.02}{0.02+\frac{(1-0.02)}{1/7}} = 0.0029

通过计算,可以得出两种矫正的结果相差不多,似乎第一种方式更好,但是第一种比第二计算方式复杂。

分析:采样后预估均值为0.02,如果不采样的真实值大约在0.003附近。两者大约相差7倍。

保序回归校准

保序回归校准的基本原则:

  1. 矫正的结果不能改变测试数据的 ctr 序, 即 Calibration 要保持单调性(Calibration 前后的 AUC 保持不变)。
  2. 矫正的目的是在 ctr 序的分桶上 COPC 接近1。(Calibration只矫正 ctr 序上的有偏,特征级别的有偏需要在特征级别进行矫正。)

保序回归的语言描述

  • 保序回归的算法描述非常简单
  • 把数据在 ctr 序上进行分桶
  • 在每个桶内用数据的统计 ctr (正样本数/总样本数), 来做为当前桶的样本 ctr
  • 遍历所有桶,若当前桶的 ctr 为有序的,则算法退出
  • 若 ctr 存在无序,则合并无序的桶,并回到 step 2.
  • 矫正之后的结果如图(红色实线为矫正结果)

引用

Ctr 预估之 Calibration

千寻:ctr校准的方式

黄思光:阿里妈妈展示广告预估校准技术演进之路

https://github.com/huangsg1/uncertainty-calibration

来源:知乎 www.zhihu.com

作者:丹丹

【知乎日报】千万用户的选择,做朋友圈里的新鲜事分享大牛。
点击下载