1024
首发于1024
线下AUC提升为什么不能带来线上效果提升?--测试和评估的一些真相

线下AUC提升为什么不能带来线上效果提升?--测试和评估的一些真相

算法工程师辛苦抄袭加搬砖发现线下效果提升了,auc、loss、pr、mse等指标有提升,但是上线测试却没有效果。


总结来看,原因除了我们之前谈到的无效拟合问题、过拟合问题外,还有一个重要原因是线下测试和线上无法做到真正对等。线下的测试和评估,并不是真相。


这个不对等,我总结有下面几点:

1)线上的数据分布和线下的样本分布不对等

线下做评测的时候,是拿历史出现的样本来评测。而线上测试的时候,会有更多没有出现过的样本。比如下面情况:

线下样本:

user1 ad1 1

user1 ad2 0

user1 ad3 0

线上数据:

user1 ad2 0

user1 ad4 1

user1 ad5 0


线下测试时候,算法1的预测是 ad1>ad4>ad5>ad2>ad3,算法2的预测是ad4>ad2>ad3>ad5>ad1。算法1的表现更好。

但是在线上,由于更多出现了ad4、ad5等新样本,所以算法2的表现反而更好。


2) 线上和线下的评估目标并不对等之一

比如广告点击率预估,线下的测试样本如下:

user1 ad1 1

user2 ad2 0

user3 ad1 0

user3 ad3 1

user4 ad1 0

... ...

线下的AUC、PR、loss、OE等等一堆指标,评估的是 CTR(user*--ad*) 是否够准确,也即每条样本是否拟合准确。

但是线上的真实环境下测试(评估)数据是什么样子呢?

user1 ad1 1

user1 ad2 0

user1 ad3 0

-------------------

user2 ad1 1

user2 ad2 0

user2 ad3 0

-------------------

... ...

线上真实环境下,关心的是ctr、cpm、cvr等实际收益,所以评估的是 CTR(user--ad*) 是否够准确,也即user1选哪个ad*,最后ctr更高。

所以线下,算法1比算法2效果好,但是线上却未必。线上和线下的评估目标并不对等。


解决这个问题,关键是线下能评估 CTR(user--ad*),也即消去user带来的差异建议引入GAUC:

以user为group,计算每个user group样本的auc,然后根据所有用户的impression量做加权平均,就得到GAUC。大家可以自由去调整这个算法,更适合你的需求。

具体可以参考论文:《Deep Interest Network for Click-Through Rate Prediction》


3) 线上和线下的评估目标并不对等之二

不管是搜索、阅读,还是广告,其实我们的最终目标是position*relevance (可以参考下搜索问题中position的bias因素,参考论文《User Browsing Models: Relevance versus Examination》)。而线上做预估排序的时候,都排除了position bias,只是求解和比较relevance。原因是如果考虑position,这个组合问题的规模实在太大了,很难求解。

所以,线上效果,只跟relevance 有关,position因素是排除的。

而线下评估的时候,参考2)中线下样本样例:

user1 ad1 1

user2 ad2 0

user3 ad1 0

user3 ad3 1

user4 ad1 0

... ...

其实是混杂了position因素的。所以,线上和线下评估不对等。

编辑于 2018-04-10

文章被以下专栏收录