这里说的指标用于离线评估模型的。一般验证时都是拿前T天的数据进行模型训练,拿第T+1到T+m天的数据进行离线指标验证。本篇文章主要介绍以下一些指标:
- AUC
- GAUC
- logloss
- MAP
- MRR
- NDCG
1. AUC
AUC有两种含义:
- ROC曲线下面的面积
- 在评估排序模型时的意义可以表述为指随机给定一个正样本和一个负样本,分类器输出该正样本为正的那个概率值比分类器输出该负样本为正的那个概率值要大的可能性,即
下面介绍下第二种的计算方法:
其中为正样本数量,为负样本数量,是根据值升序排序后第个正样本的位置,表示在排在正样本后面的负样本个数。
AUC的优点
- 对不均衡样本不敏感。auc评估的是相对位置,在样本不平衡的情况下,依然能够对分类器做出合理的评价。
- AUC指标本身和模型预测 score 绝对值无关,只关注排序效果,因此特别适合排序业务。
AUC缺点
- auc不关心正负样本计算的实际值,仅仅关系计算的相对大小。因此假如模型计算的正样本的pred值特别小,但是总是比负样的pred值大,那么auc还是认为模型效果很好,其实模型并没有很好的拟合训练集。
- auc是关心的整个模型的全局相对效果,但是用来在多用户或者session的排序场景上是有局限的。假设有数据集两个用户,如果A的正样本的预测值都大于B的负样本的预测值,但是A的正样本的预测值比A的负样本的预测值小(前提是A的列表远远小于B的列表),那么auc看来模型效果还是很好的,但是排序时对A用户来说效果应该很差,所以从这个角度来看auc是有局限的,基于此阿里提出了gauc的概念。
2. gauc
gauc是先计算每个用户的auc,然后再对用户的auc做加权平均,公式如下:
其中是权重,一般以列表长度为权重值。
gauc优点
考虑了auc对排序模型的局限性,同时通过权重设置考虑各个用户对模型的贡献。因此gauc相对比auc更适合搜索排序场景。
gauc缺点
在计算gauc时需要去掉列表中只有一种label的列表,比如搜索时用户一个没有点击的列表,或者用户全部点击的列表。
3. logloss
在分类问题中,一般用交叉熵损失函数。
logloss缺点
- 对正负样本比例敏感,而且由于该指标是关注的预测值和实际值的差值,因此从这个角度来看并不是十分的适合排序(考虑一下auc天生适合排序),假设在预测结果上每个样本的预测值都同时增大或者减小一定的值,那么模型的logloss会有改变,但是排序结果是不变的。
logloss优点
logloss描述了模型和真实数据的分布差距,一般对于一个知道正负样本比例为n:m的集合进行瞎猜,可以得到最大值。通过模型的与进行比较,可以大致判断模型的效果。
4. MAP (Mean Average Precision)
其中,表示点击量,表示所有点击集合,表示第个正样本的位置。AP只关心用户是否点击,点击为1,否则为0。
举例来说,一次请求中用户点击了排在1,2,5,7位置的房源,那么该请求的为:
,其中表示总请求量。
5. MRR (Mean reciprocal rank )
是表示的第一个正确结果位置的倒数。是指多个查询语句的排名倒数的均。
只考虑了第一个位置因此首位置对结果的影响比较大,这种排序指标适合于用户值点击一次的列表,比如寻址类检索(Navigational Search)或问答类检索(Question Answering)这些,但是对于房源列表或者别的搜索排序效果不太好
6. NDCG(Normalized Discounted Cumulative Gain)
该指标考虑到了相关性和排序位置等多方面的指标,同时考虑到每个搜索长度不同,因此在最后做了归一化处理。
CG
表示相关性,在文档搜索中表示文档的相关性;在我们房源搜索排序中,没有考虑相关性,直接用点击表示,点击就是1,不点击就是0 。
DCG
由于cg没有考虑到不同位置的价值不一样,因此评价是不合理的,dcg是加上了位置的衰减(随着位置增大,衰减增大)。
NDCG
NDCG是考虑了位置和相关性的,同时是从一条搜索的角度来进行统计的,整体来说比较客观,但是当p值比较小时,不同的排序结果ndcg值区分不大。还可以计算不同值的。
7. 其他指标
还有一些其他业务指标,因为很好理解这里就不展开说明了,如下:
- topN ctr
- topN覆盖率
- diff率,主要是看前后两版模型的区别。一般来说,为了保证线上效果的稳定性,diff率应该控制在一个比较小的范围内。(这里也需要根据业务情况而定,如果diff率越小也说明新模型没什么变化。)
网友评论