召回离线评估指标问题记录

离线评估指标

Posted by BY on October 15, 2020

AUC是否能作为召回评估指标

首先,AUC是代表模型的排序能力,因为在召回环节考虑所有推荐物品的顺序没有太大意义,所以不是一个好的评估指标。另外后面所有提到的AUC含义都是针对单个user的,即group by user AUC。

AUC和线上优化指标正相关嘛

不相关。我们先从AUC的计算说起,计算auc需要知道每个item的label和score,score决定的最终出去的顺序;但是这里的顺序只是召回环节的顺序,而召回后面还有模型排序,甚至中间可能还有粗排,所以最终用户看到的排序是精排模型的打分,和召回的分可能没有关系,甚至可能是相反的。所以说AUC在这里意义不太大,那么AUC是否可以作为一个参考指标呢?

答案是依然是意义不大,因为召回的目的是把用户可能会喜欢的召回出来,最终顺序反而不是重要的,因为这里的顺序决定不了什么。反而召回结果那些能进入到排序,以及推荐出去那些用户点击了更重要。那么有没有可能AUC是可以作为参考的呢?

当召回层模型和排序侧使用相同的模型的时候,有参考价值,比如万能的fm模型,假设召回和排序用相同的,那么召回侧的顺序和精排模型侧排序是一样的,这样AUC就和指标完全相关了,可以作为离线评估效果指标。

召回侧什么评估指标比较好呢

先说一个用的最多的recall@K

\[recall@k = \frac{预召回的k个样本中命中正样本数目}{正样本数}\]

因为是离线计算的指标,所以计算的时候用模型计算召回topk,看有多少个被用户真实点击了,就是表示命中用户喜欢样本的比值。

那么这个k设置怎样比较好呢?其实各有各的好处,比如5–500可能都有,一般会小的大的都看,如果k比较小,比如recall@5能代表模型的精确度,含义是在召回的top5中命中正样本的概率,如果明显精确度提高了,那么这个指标会提升。如果k比较大,比如recall@500能代表模型的整体效果,可能这个召回渠道线上每次拉去的都是一个比较大的结果,那么在这个大的结果中只要能够命中,都有可能最终被精排模型排出去,所以能代表模型整体召回效果。

那么他和线上指标是否是正相关的呢?

从理论角度分析,假设只有这一个召回渠道,那么指标就是完全正相关的。但是线上正常情况不会这么简单,可能会有多个召回渠道,当前召回要经过粗排,最终进入到模型里面的数目是不确定的,而这个数目就是k,所以如果离线指标recall@k如果从0~线上最大召回都是有提升的,那么就一定是正相关的,所以可以分区间多算几个看,比如recall@5,recall@10,recall@50,recall@100,recall@500。

那么大家在工作中常用的召回指标是什么呢?