美文网首页
搜索排序指标

搜索排序指标

作者: 张虾米试错 | 来源:发表于2021-05-02 10:13 被阅读0次

这里说的指标用于离线评估模型的。一般验证时都是拿前T天的数据进行模型训练,拿第T+1到T+m天的数据进行离线指标验证。本篇文章主要介绍以下一些指标:

  • AUC
  • GAUC
  • logloss
  • MAP
  • MRR
  • NDCG

1. AUC

AUC有两种含义:

  • ROC曲线下面的面积
  • 在评估排序模型时的意义可以表述为指随机给定一个正样本和一个负样本,分类器输出该正样本为正的那个概率值比分类器输出该负样本为正的那个概率值要大的可能性,即P(P_正>P_负)

下面介绍下第二种的计算方法:
auc = \frac{\sum_{i \in positive}^M{(rank_i-i)}}{M*N} \\ = \frac{\sum_{i \in positive}^M{rank_i} - \sum_{i=1}^M{i}}{M*N} \\ = \frac{\sum_{i \in positive}^M{rank_i}-\frac{M(M+1)}{2}}{M*N}
其中M为正样本数量,N为负样本数量,rank_i是根据pred值升序排序后第i个正样本的位置,rank_i - i表示在排在正样本后面的负样本个数。

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 = \frac{\sum_{(u,p)}{w_{(u,p)}*AUC_{(u,p)}}}{\sum_{(u,p)}w_{(u,p)}}
其中w是权重,一般以列表长度为权重值。

gauc优点

考虑了auc对排序模型的局限性,同时通过权重设置考虑各个用户对模型的贡献。因此gauc相对比auc更适合搜索排序场景。

gauc缺点

在计算gauc时需要去掉列表中只有一种label的列表,比如搜索时用户一个没有点击的列表,或者用户全部点击的列表。

3. logloss

在分类问题中,一般用交叉熵损失函数。

logloss缺点
  • 对正负样本比例敏感,而且由于该指标是关注的预测值和实际值的差值,因此从这个角度来看并不是十分的适合排序(考虑一下auc天生适合排序),假设在预测结果上每个样本的预测值都同时增大或者减小一定的值,那么模型的logloss会有改变,但是排序结果是不变的。
logloss优点

logloss描述了模型和真实数据的分布差距,一般对于一个知道正负样本比例为n:m的集合进行瞎猜,可以得到最大logloss_{max}值。通过模型的loglosslogloss_{max}进行比较,可以大致判断模型的效果。

4. MAP (Mean Average Precision)

AP = \frac{1}{click\_count}\sum_{i \in CSP} \frac{i}{rank_i}
其中,click\_count表示点击量,CSP表示所有点击集合,rank_i表示第i个正样本的位置。AP只关心用户是否点击,点击为1,否则为0。

举例来说,一次请求中用户点击了排在1,2,5,7位置的房源,那么该请求的AP为:
AP = \frac{1}{4} * (\frac{1}{1} + \frac{2}{2} + \frac{3}{5} + \frac{4}{7})
MAP = \sum_{i=1}^{n}(AP_i) / n,其中n表示总请求量。

5. MRR (Mean reciprocal rank )

RR是表示的第一个正确结果位置的倒数。MRR是指多个查询语句的排名倒数的均。

只考虑了第一个位置因此首位置对结果的影响比较大,这种排序指标适合于用户值点击一次的列表,比如寻址类检索(Navigational Search)或问答类检索(Question Answering)这些,但是对于房源列表或者别的搜索排序效果不太好

6. NDCG(Normalized Discounted Cumulative Gain)

该指标考虑到了相关性和排序位置等多方面的指标,同时考虑到每个搜索长度不同,因此在最后做了归一化处理。

CG

CG_p = \sum_{i=1}^{p}{rel_i}
rel_i表示相关性,在文档搜索中表示文档的相关性;在我们房源搜索排序中,没有考虑相关性,直接用点击表示,点击就是1,不点击就是0 。

DCG

由于cg没有考虑到不同位置的价值不一样,因此评价是不合理的,dcg是加上了位置的衰减(随着位置增大,衰减增大)。
DCG_p = \sum_{i=1}^{p}\frac{rel_i}{\log_2 (i+1)}

NDCG

IDCG_p = \sum_{i=1}^{p}\frac{2^{rel_i}-1}{\log_2 (i+1)}
NDCG_p = \frac{DCG_p}{IDCG_p}
NDCG是考虑了位置和相关性的,同时是从一条搜索的角度来进行统计的,整体来说比较客观,但是当p值比较小时,不同的排序结果ndcg值区分不大。还可以计算不同p值的NDCG

7. 其他指标

还有一些其他业务指标,因为很好理解这里就不展开说明了,如下:

  • topN ctr
  • topN覆盖率
  • diff率,主要是看前后两版模型的区别。一般来说,为了保证线上效果的稳定性,diff率应该控制在一个比较小的范围内。(这里也需要根据业务情况而定,如果diff率越小也说明新模型没什么变化。)

学习资料

相关文章

  • 搜索排序指标

    这里说的指标用于离线评估模型的。一般验证时都是拿前T天的数据进行模型训练,拿第T+1到T+m天的数据进行离线指标验...

  • 模型融合 组合模型

    场景: 广告排序 文档排序 方案:多指标融合排序 单指标 CTR CVR : 电话、短信、微聊 页面停留时间 融合...

  • 不确定年份excel面板数据的整理

    通过搜索得到所有的年份,为了使得年份与财务指标相对应,需要在两者之间建立链接。通过对指标的排序进行编号,通过1,2...

  • 学习js数据结构与算法8—排序与搜索算法

    排序和搜索算法 排序算法

  • 股票指标搜索

    碎片知识第一,丧失深度思考能力。第二,知识的使用效率下降 学习---学费没了不学习---前途没了改变---过去的你...

  • 2020-2-16 刷题记录

    0X00 leetcode 刷题 7 道 搜索旋转排序数组(33) 搜索旋转排序数组 II(81) 寻找旋转排序数...

  • 排序与搜索:搜索

    搜索 搜索是在一个项目集合中找到一个特定项目的算法过程。搜索通常的答案是真的或假的,因为该项目是否存在。 搜索的几...

  • 前端本地实现搜索排序

    排序实现:首先有一个排序选择框(按某个属性进行排序),排序的触发方法: 搜索实现:首先有一个搜索框,输入点击触发搜...

  • Python数据结构 第五章--排序和搜索

    本章目标: (1)了解和实现顺序搜索和二分法搜索。 (2)了解和实现选择排序、冒泡排序、归并排序、快速排序、插入排...

  • NumPy API(十)——输入和输出排序、搜索和计数

    排序、搜索和计数 排序 sort(a[, axis, kind, order]) 返回数组的排序副本。 lexso...

网友评论

      本文标题:搜索排序指标

      本文链接:https://www.haomeiwen.com/subject/tlqzrltx.html