你是一位藏宝图设计师。游客手持你绘制的地图走进寻宝乐园,图上标注着1号位、2号位……几十个探索点。可游客的耐心是有限的——多数人翻到前几个点,找不到满意的宝贝,扭头就走。你的地图到底画得好不好,不由你标了多少个点决定,而由宝贝埋得多靠前决定:如果最想要的宝箱在第2个点,游客两步就收获满满;如果埋到第78个点,这份地图等于废纸。搜索引擎和推荐系统,就是一张张数字藏宝图;排序模型是设计藏宝图的人;而排序指标,就是为藏宝图打分的一群裁判。它们不只看结果相不相关,更看重相关的结果排在第几位——位置越靠前,得分越高。NDCG、MAP、MRR、Precision@K、Recall@K,正是裁判席上最常见的五把评分尺。

岗位关联

掌握排序指标,你才能科学评估搜索、推荐、广告排序模型的好坏,在A/B测试与算法迭代中做出有数据支撑的决策,这是推荐算法工程师与搜索工程师的核心基本功。

目录
  1. 可视化演示
  2. 排序任务认知:先看懂藏宝图的生意
  3. Precision@K:数一数前K步的含宝率
  4. Recall@K:前K步捞回了多少宝物
  5. AP与MAP:多张藏宝图的平均得分
  6. MRR指标:第一件宝物出现得多早
  7. NDCG指标:宝物论价值、位置论折损的豪华评分
  8. 实战选型:不同园区请不同的裁判
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

本节配有交互动效(进入视口后自动加载,约 3KB)。

NDCG 归一化折损累积增益 NDCG考虑相关性等级和位置折扣 MAP 平均精度均值 Precision计算 DCG@K = Σᵢ₌₁ᴷ relᵢ / log₂(i+1) NDCG = DCG / IDCG (理想排序的DCG) 排序指标可视化:NDCG、MAP...

排序任务认知:先看懂藏宝图的生意

你经营的寻宝乐园里,每位游客手里的藏宝图都标着1到N的探索点。游客是否满意,往往由前几个点决定——如果第1个点就挖到心仪的宝贝,他会在门口给你写好评;如果翻了七八个点全是石头,他扭头就走。排序任务的成功与否,同样由“开头几步”决定。

搜索推荐系统干的是同一件事。用户输入“折叠屏手机推荐”,搜索引擎返回十条结果排成列表;用户打开电商App首页,推荐系统拉出一个商品信息流。模型输出的不是散装结果,而是一张有序列表——这就是数字版藏宝图。评估这类任务,要先明确两件事:一是“相关性”标注,每个位置的结果与用户需求相关记为 $rel=1$,不相关记为 $rel=0$,更精细可分 0/1/2 多级;二是“位置即价值”,排在前面的结果才真正被用户看见。位置权重 $w_i = 1/i$ 刻画了这种直觉:第一位权重 1,第二位 0.5,第三位 0.33,越靠后趋于 0。

Ranking=[d1,d2,…,dn]\displaystyle \text{Ranking} = [d_1, d_2, \dots, d_n]

1. Ranking 表示:它代表排序模型产出的完整有序列表,相当于藏宝图的数字化形式。

Ranking\text{Ranking}

2. $d_i$ 的含义:排在第 $i$ 个位置的具体结果,可以是一篇文档、一件商品或一条视频。

did_i

3. 下标的位置语义:$i$ 越小,结果越靠前,被用户注意到的可能性越大。

ii

所以,评判一张藏宝图不能只数“图上一共标了几件宝物”,而要关心宝物埋得靠不靠前、前几步含宝量高不高。接下来出场的五位裁判——P@K、R@K、MAP、MRR、NDCG,正是从不同角度回答“宝物到底埋在了哪里”。

Precision@K:数一数前K步的含宝率

游客的耐心有限,大多只愿意探索前K个点。作为评委,你决定不看他画完整张图,只看前K个探索点里挖到宝的比例——这就是 Precision@K,也叫精确率@K。放到搜索里,“前K个结果”就对应搜索结果第一页的十条链接,K常取 5、10、20。“含宝率”等于前K个结果中相关项的占比,它回答的问题是:用户只看前K个结果时,看到的东西里有多少是他想要的。

这个指标公式很直观——分子是前K个结果中相关项数量,分母是 K。K 就是截断点,决定了评估窗口的大小。P@K 高,说明第一屏质量高、头部结果与用户意图匹配好。但它不关心相关项内部的前后顺序:前K个里就算相关项全挤在最后,P@K 也会给出不错的分,这是它的鲜明局限。

Precision@K=前K个结果中相关项的数量K\displaystyle \text{Precision@K} = \frac{\text{前}K\text{个结果中相关项的数量}}{K}

1. 分子含义:统计前 K 个结果中标注为相关的项数,相当于数前 K 个探索点里的宝物数量。

前K个结果中相关项的数量\text{前}K\text{个结果中相关项的数量}

2. 分母 K:表示截断长度,即只考察前 K 个位置,超出窗口的一律不参与评分。

KK

3. 比值结果:相除得到前 K 个结果中相关项的占比,范围在 0 到 1 之间。

相关项数量K\frac{\text{相关项数量}}{K}

用寻宝图的眼光看,P@K 是“门口检查员”:他不关心园区深处埋了多少宝藏,只关心游客进门后前几步踩到的探点里,宝贝的密度够不够高。电商搜索第一屏的体验,靠的就是这个密度。

Recall@K:前K步捞回了多少宝物

只看含宝率,藏宝图设计师会偷懒——把前10个点全标成“可能有宝”,前K步含宝量确实上去了;可园区深处那些真宝贝,游客根本不会走到。所以第二位裁判登场:Recall@K,召回率@K。它问的不是“前K步结果里有多少是宝”,而是“园区里总共有 R 件宝物,你的图在前K步里帮游客找到了几件”。

公式上,分母换成全部相关项总数,分子仍是前K个结果中的相关项数。P@K 和 R@K 是一对天生的对手:K 固定时,多标注结果通常会让 P 下降(分母变大、含宝率被稀释),但 R 可能上升(覆盖了更多相关项)。因此工程上往往同时看两者,或者借助 F-score 之类的组合值来平衡查准与查全。

Recall@K=前K个结果中相关项的数量全部相关项的总数\displaystyle \text{Recall@K} = \frac{\text{前}K\text{个结果中相关项的数量}}{\text{全部相关项的总数}}

1. 分子与前节相同:前 K 个结果里相关项的数量,衡量窗口内命中的绝对数。

前K个结果中相关项的数量\text{前}K\text{个结果中相关项的数量}

2. 分母更换:全部相关项总数,对应园区里真正埋藏的所有宝物数量,是一个固定总盘。

全部相关项的总数\text{全部相关项的总数}

3. 比值语义:得到 0 到 1 的覆盖率,数值越高代表越多的宝物被前 K 步覆盖到。

窗口内命中总相关数\frac{\text{窗口内命中}}{\text{总相关数}}

如果说 P@K 是“门口含宝率”,R@K 就是“全园寻宝完成率”。一张只把宝物标在门口、深处全不管的偷懒图,P@K 可能很漂亮,但 R@K 会立刻戳穿它——好图必须兼顾门口浓度和全园覆盖。

AP与MAP:多张藏宝图的平均得分

一张图只有一个入口,但园区往往有东南西北多个入口,对应多个查询。评委不能再只看单张图,得把每位游客从不同入口进入的体验都打一个分,再取平均——这就是从 AP 到 MAP 的逻辑。AP(Average Precision,平均精确率)是单张图的综合分:它不只看前K个的浓度,而是在每个找到宝物的位置,都记录一次当时的 P@k,再除以相关项总数 R。宝物埋得越靠前、每个命中点越密集,AP 越高。

把所有查询的 AP 加起来除以查询数 Q,就得到 MAP(Mean Average Precision)。MAP 是信息检索领域最经典的离线指标之一,对排序位置非常敏感:两个宝物从第2、第4位挪到第3、第5位,AP 会明显下降,MAP 也随之波动。

AP=1R∑k=1KPrecision@k×relk\displaystyle \text{AP} = \frac{1}{R} \sum_{k=1}^{K} \text{Precision@k} \times rel_k

MAP=1Q∑q=1QAPq\displaystyle \text{MAP} = \frac{1}{Q} \sum_{q=1}^{Q} \text{AP}_q

1. 指示变量 $rel_k$:当第 $k$ 个位置是相关项时为 1,否则为 0,相当于“这里有没有宝物”的开关。

relkrel_k

2. 逐位求 P@k:在每个相关项位置计算当时的精确率,宝物越靠前,P@k 越大。

Precision@k\text{Precision@k}

3. 除以 R 取平均:除以相关项总数,使 AP 落在 0 到 1,越接近 1 说明宝物整体越靠前。

1R∑k=1KPrecision@k×relk\frac{1}{R} \sum_{k=1}^{K} \text{Precision@k} \times rel_k

4. 外层求和:对每个查询的 AP 累加,相当于把多位游客的寻宝体验分数加在一起。

∑q=1QAPq\sum_{q=1}^{Q} \text{AP}_q

5. 平均到查询:除以查询总数 Q,得到系统在所有查询上的平均表现。

1Q∑q=1QAPq\frac{1}{Q} \sum_{q=1}^{Q} \text{AP}_q

MAP 相当于“园区各入口平均好评率”。如果某个入口(某一类冷门查询)总是把宝物埋得很深,它的 AP 会拖低整体 MAP,倒逼设计师优化那些最难伺候的入口——这正是排序模型迭代的驱动力。

MRR指标:第一件宝物出现得多早

很多时候,用户只需要找到“第一个对的东西”。问“北京到上海的高铁几点发车”,用户要的不是十条相关答案,而是第一个准确答案。这时候,裁判只看第一件宝物埋在第几个点。MRR(Mean Reciprocal Rank,平均倒数排名)的思路极简:对每个查询,找到第一个相关项的位置 $rank_q$,取倒数 $1/rank_q$;再对全部 Q 个查询取平均。

第一相关项在第1位得 1 分,第2位得 0.5,第3位得 0.33,衰减极快。MRR 天然适配问答系统、导航建议、链接预测这类“只要一个正确答案就够”的任务。它和位置权重 $w=1/i$ 的直觉完全一致,但只关心第一次“命中”,不关心后续结果质量——如果任务需要评估完整列表,MRR 会显得太粗略。

MRR=1Q∑q=1Q1rankq\displaystyle \text{MRR} = \frac{1}{Q} \sum_{q=1}^{Q} \frac{1}{\text{rank}_q}

1. $\text{rank}_q$ 的定义:第 $q$ 个查询中,第一个相关结果排在第几位,比如排第 2 位则 rank 为 2。

rankq\text{rank}_q

2. 倒数变换:对位置取倒数,把“位次”转换为“得分”,位次越靠前得分越高。

1rankq\frac{1}{\text{rank}_q}

3. 平均汇总:对所有查询求和再除以 Q,得到系统在“首答质量”上的平均水平。

1Q∑q=1Q1rankq\frac{1}{Q} \sum_{q=1}^{Q} \frac{1}{\text{rank}_q}

寻宝乐园里常有“只求第一个宝”的速通玩家:拿到第一件满意的东西就结束行程。MRR 就是为这些玩家设计的裁判——你的地图能不能让他在第 1、2 步就有所收获,决定了速通玩家给不给五星。

NDCG指标:宝物论价值、位置论折损的豪华评分

前几位裁判都默认“宝物只有有和没有两种”。但真实园区里,宝物分三六九等:镇园之宝(2分)、普通宝物(1分)、石头(0分)。藏宝图设计师最大的本事,是把最值钱的宝藏放在最显眼的位置。NDCG(Normalized Discounted Cumulative Gain,归一化折损累计增益)就是排序评估里最常用的“豪华评分员”。

它先算 DCG:从位置 1 到 K,每个结果按相关等级 $rel_i$ 给出指数增益 $2^{rel_i}-1$,再用 $\log_2(i+1)$ 做位置折损——位置越深,价值被稀释得越厉害。DCG 的绝对数值受列表长度影响,所以用 IDCG(理想排序下的 DCG)做分母归一化:把当前排序的 DCG 除以理想排序的 DCG,得到 0 到 1 之间的 NDCG。NDCG=1 表示这张图就是完美藏宝图,它支持多级相关标注,位置敏感度高,是新闻推荐、通用搜索排序的首选评估指标。

DCG@K=∑i=1K2reli−1log⁡2(i+1)\displaystyle \text{DCG@K} = \sum_{i=1}^{K} \frac{2^{rel_i} - 1}{\log_2(i+1)}

NDCG@K=DCG@KIDCG@K\displaystyle \text{NDCG@K} = \frac{\text{DCG@K}}{\text{IDCG@K}}

1. 相关等级 $rel_i$:第 $i$ 个结果的相关程度,可取 0、1、2,数字越大代表与用户需求越相关。

relirel_i

2. 指数增益项:$2^{rel_i}-1$ 将相关等级映射为增益,等级从 1 升到 2 时增益从 1 跳到 3,高相关被放大。

2reli−12^{rel_i} - 1

3. 对数折损项:$\log_2(i+1)$ 对深位置结果进行衰减,位置 $i$ 越大,分母越大、贡献越小。

log⁡2(i+1)\log_2(i+1)

4. DCG 累加语义:从第 1 位累加到第 K 位的“折扣收益”,得到当前排序的累计增益。

∑i=1K2reli−1log⁡2(i+1)\sum_{i=1}^{K} \frac{2^{rel_i} - 1}{\log_2(i+1)}

5. IDCG 归一化:把同一列表按理想排序重排后计算 DCG 作为基准,当前 DCG 除以它即得 NDCG。

DCG@KIDCG@K\frac{\text{DCG@K}}{\text{IDCG@K}}

如果说 MAP 像“平均好评率”,NDCG 就像“装裱豪华的加权奖杯”。它不仅看宝物有没有出现,更看镇园之宝是不是摆在 1 号展位。设计师要拿高分,就得把最值钱的结果精准地顶到最前面——这正是排序优化的终极目标。

实战选型:不同园区请不同的裁判

裁判各有所长,选错裁判会让评估失真。为博物馆设计导览图,你会强调珍宝摆放的次序,NDCG 最合适;为问答亭设计速通攻略,只需关注第一个答案,MRR 更对口;评估园区门口橱窗的吸引力,P@K 就够了。工程实践里,排序指标不是单独使用的:离线阶段通常同时计算 P@K、R@K、MAP、MRR、NDCG,形成一张指标仪表盘;在线阶段则通过 A/B 测试验证真实效果。

模型迭代时,主指标定一个,辅助指标看一串——例如推荐系统主指标用 NDCG@10,同时盯住 Recall@50 防止召回变差。选型时要看三点:结果是否需要有序(无序分类用 Accuracy,有序列表才用排序指标);标注是否有多级相关(有多级就用 NDCG,二值相关可用 MAP);用户是否只看前几位(偏头部体验用 P@K / MRR,偏全列表用 NDCG / MAP)。

综合评估={Precision@K,Recall@K,MAP,MRR,NDCG}\displaystyle \text{综合评估} = \{\text{Precision@K}, \text{Recall@K}, \text{MAP}, \text{MRR}, \text{NDCG}\}

1. Precision@K 的角色:负责回答“第一屏质量”问题,用于控制顶部结果的噪声。

Precision@K\text{Precision@K}

2. Recall@K 的角色:负责回答“覆盖是否完整”,防止只优化头部而漏掉长尾宝物。

Recall@K\text{Recall@K}

3. MAP 与 MRR 的角色:前者评估全程分布,后者评估首个命中的速度,按任务特性选用。

MAP,MRR\text{MAP}, \text{MRR}

4. NDCG 的角色:作为支持多级相关、位置折损的综合指标,常承担主指标职责。

NDCG\text{NDCG}

好的藏宝图公司从不迷信单个裁判:门口体验看 P@K、全园覆盖看 R@K、速通体验看 MRR、整体布局看 MAP、珍宝摆位看 NDCG。五位裁判各司其职,才能给一张藏宝图打出经得起推敲的总分,这也是搜索推荐工程师做评估的基本功。

AI 应用场景

电商搜索排序评估

阶段:离线评测 + 在线 A/B 测试

解决的问题:搜索“降噪耳机”时,旧版模型把相关商品挤到第 3、4 位,用户要翻屏才能看到。仅凭人工看几个 query 很难判断模型好坏,需要用排序指标批量、客观地度量质量。

具体案例:算法团队对 5000 条搜索日志标注 0/1/2 三档相关性,离线计算旧版与新版的 NDCG@10、MRR,新版 NDCG 从 0.72 提升到 0.81,MRR 从 0.55 提升到 0.68;确认提升后再切 10% 流量做 A/B 测试,点击率和下单转化率同步验证后才全量上线。

智能问答系统的首答质量

阶段:模型离线评估

解决的问题:用户问“首都机场怎么去市区”,系统返回一个候选答案列表,用户只关心第一条是不是对的。传统人工抽检效率低,无法覆盖海量问题。

具体案例:问答团队用 MRR 评估模型在 2 万条测试问题上的表现,将候选答案按得分排序,计算每个问题的第一个正确答案位置。模型经过排序损失优化后,MRR 从 0.41 提升到 0.56,意味着首答平均位置从第 2.4 位提升到第 1.8 位,用户满意度显著上升。

视频推荐流的信息多样性

阶段:全链路评估

解决的问题:视频信息流既要保证前几屏的精准,又要保证用户能刷到足够多的感兴趣内容,单一指标无法兼顾。

具体案例:推荐团队以 NDCG@10 为主指标衡量首屏排序质量,以 Recall@50 为辅指标衡量长列表覆盖能力,再配合 MAP 观察整体分布。新召回策略上线前,NDCG@10 提升 6%,同时 Recall@50 下降 3%,团队据此判断新策略头部更准但多样性受损,决定融合旧策略的召回结果后再上线。

Python 演示

python59 行
import math def precision_at_k(ranking, relevant, k):    top_k = ranking[:k]    hits = sum(1 for doc in top_k if doc in relevant)    return hits / k def recall_at_k(ranking, relevant, k):    top_k = ranking[:k]    hits = sum(1 for doc in top_k if doc in relevant)    return hits / len(relevant) def average_precision(ranking, relevant):    hits = 0    ap = 0.0    for k, doc in enumerate(ranking, 1):        if doc in relevant:            hits += 1            ap += hits / k    return ap / len(relevant) def mean_average_precision(list_of_rankings, list_of_relevant):    return sum(        average_precision(r, rel)        for r, rel in zip(list_of_rankings, list_of_relevant)    ) / len(list_of_rankings) def mean_reciprocal_rank(list_of_rankings, list_of_relevant):    total = 0.0    for ranking, relevant in zip(list_of_rankings, list_of_relevant):        for i, doc in enumerate(ranking, 1):            if doc in relevant:                total += 1.0 / i                break    return total / len(list_of_rankings) def dcg_at_k(ranking, k, rel_scores):    return sum(        (2 ** rel_scores[doc] - 1) / math.log2(i)        for i, doc in enumerate(ranking[:k], 2)    ) def ndcg_at_k(ranking, k, rel_scores):    dcg = dcg_at_k(ranking, k, rel_scores)    ideal_scores = sorted(rel_scores.values(), reverse=True)    idcg = 0.0    for i, s in enumerate(ideal_scores[:k], 2):        idcg += (2 ** s - 1) / math.log2(i)    return dcg / idcg if idcg > 0 else 0.0 if __name__ == "__main__":    ranking = ["d1", "d2", "d3", "d4", "d5"]    relevant = {"d1", "d3", "d5"}    rel_scores = {"d1": 2, "d2": 0, "d3": 1, "d4": 0, "d5": 2}    print("P@3 =", precision_at_k(ranking, relevant, 3))    print("R@3 =", recall_at_k(ranking, relevant, 3))    print("AP =", average_precision(ranking, relevant))    print("MRR =", mean_reciprocal_rank([ranking], [relevant]))    print("NDCG@5 =", ndcg_at_k(ranking, 5, rel_scores))
目的:用 Python 实现排序指标全家桶,输入一个排序列表、相关项集合和多级相关分数,输出 P@K、R@K、AP、MRR、NDCG 五个核心指标。
  1. hits = sum(1 for doc in top_k if doc in relevant)数一数前 K 个探索点里挖到了几件宝物。
  2. return hits / len(relevant)分母换成宝物总数,得到“全园找回率”。
  3. ap += hits / k每找到一个宝物就把当时的精确率累加进去。
  4. return ap / len(relevant)除以宝物总数,得到这张藏宝图的平均分。
  5. total += 1.0 / i第一个命中的位置取倒数,得到首宝位次分。
  6. (2 ** rel_scores[doc] - 1) / math.log2(i)指数增益除以对数折损,实现“越值钱越靠前分越高”。
  7. ideal_scores = sorted(rel_scores.values(), reverse=True)把宝物按价值从高到低重排,构造理想藏宝图。
  8. return dcg / idcg if idcg > 0 else 0.0当前图除以理想图,得到归一化的 NDCG。

常见误区

误区“排序不就是分类吗?直接把每个位置的结果预测对错,算 Accuracy 就好了。”

正解Accuracy 把每个位置当独立样本,完全不管“排在第几位”。把相关项从第 1 位移到第 3 位,Accuracy 纹丝不动,用户看到的顺序却变差了。排序指标必须对位置敏感,P@K、NDCG 这类指标才有意义,否则相当于评委只看游客捡到几块石头,却不看宝物在图的哪个位置。

为何常见:分类指标接触最早、心理上最熟悉,遇到排序任务容易顺手套用,忽略了“顺序”这个最关键的维度。

误区“前 10 个结果里 8 个相关,P@K=0.8,这模型肯定很强。”

正解P@K 不区分相关项在窗口内的顺序,也不看窗口外的漏网之鱼。两个模型 P@10 都是 0.8,一个宝物全在 1-4 位,一个全在 7-10 位,前者用户的体感明显更好。要结合 Recall@K 查漏、结合 NDCG 查序,才能下结论。

为何常见:单一指标看起来简洁有说服力,但“前K个里相关项多”和“前K个顺序合理”是两件不同的事。

误区“NDCG 支持多级相关又做归一化,是全能指标,MRR 太简陋了,直接弃用。”

正解指标没有绝对好坏,只有匹配不匹配。问答系统用户只需第一个正确答案,MRR 简洁直接地度量“首答速度”;新闻推荐要看整屏的多样化收益,NDCG 才更合适。选错指标,相当于给速通玩家算全路线积分,南辕北辙。

为何常见:容易迷信“指标越复杂越高大上”,忽略了业务目标才是选指标的第一依据。

误区“DCG 直接算出来比较大小就行了,不必每次都算 IDCG,太麻烦。”

正解不同查询的相关项数量和增益上限不同,DCG 绝对值无法跨查询比较。比如一个查询只有 1 个相关项,另一个有 10 个相关项,DCG 天然会更大。NDCG 用 IDCG 归一后,长查询和短查询的得分才站在同一条起跑线上。

为何常见:归一化看起来只是“分母的小操作”,却容易被忽视掉它消除量纲差异、让指标可横向比较的关键作用。

面试题

Q1. 排序指标与分类指标最本质的区别是什么?

单选题 · easy

  • A.排序指标计算更快
  • B.排序指标考虑位置先后← 正确答案
  • C.分类指标支持多级标注
  • D.排序指标不需要标注

答案:B。排序指标的核心是“位置敏感”,同样的一组相关项,排得靠前得分就高。分类指标只判断每个样本的标签对不对,无法反映排序质量,这就像藏宝图上宝物在第 2 位和第 80 位,对游客来说完全不同。

Q2. Precision@3 = 2/3 表示什么含义?

单选题 · easy

  • A.前 3 个结果中有 2 个是相关项← 正确答案
  • B.全部结果中有 2/3 是相关项
  • C.3 个查询平均得 2 分
  • D.相关项里恰好有 2 个排进前三

答案:A。P@K 的分子是“前 K 个结果中相关项数量”,分母是 K。P@3=2/3 就是前三名里有两个是宝物。选项 B 混淆了全部结果,选项 D 颠倒了分子分母的考察对象。

Q3. Recall@K 的分母是什么?

单选题 · mid

  • A.前 K 个结果的总数
  • B.全部相关项的总数← 正确答案
  • C.全部结果的总数
  • D.前 K 个相关项的总数

答案:B。R@K 关心“全园找回率”,分母必须是全部相关项总数。如果分母换成结果总数,就变成了 P@K。这就好比问“前 K 步找到了全部宝物中的多少”,分母是宝物总盘子,而不是步数。

Q4. 关于 MAP,下列说法正确的是?

单选题 · mid

  • A.只关心第一个相关项的位置
  • B.与列表顺序完全无关
  • C.对每个查询的 AP 取平均← 正确答案
  • D.只能支持二值相关标注

答案:C。MAP 是先算每个查询的 AP,再对所有查询取平均。选项 A 描述的是 MRR,选项 B 和排序敏感的初衷相悖,选项 D 中 AP/MAP 天然支持多级相关也可与 rel 阈值配合使用。

Q5. MRR 最适合评估哪类任务?

单选题 · mid

  • A.只需一个正确答案的问答检索← 正确答案
  • B.需要整页多样化结果的资讯流
  • C.需要长尾召回的视频推荐
  • D.需要多级相关标注的电商搜索

答案:A。MRR 只关心第一个相关项的位置,适合“首答即满意”的场景。资讯流和视频推荐关注整屏质量,适合 NDCG/MAP;多级相关标注的电商搜索更适合 NDCG,因为 MRR 不区分宝物价值高低。

Q6. 某查询有两个相关文档 doc1、doc2,模型排在第 2 位和第 5 位,该查询的 MRR 贡献是多少?

单选题 · hard

  • A.0.2
  • B.0.5← 正确答案
  • C.0.35
  • D.1.0

答案:B。MRR 只取第一个相关项的位置,doc1 在第 2 位,所以贡献为 1/2=0.5。0.2 是第 5 位的倒数,0.35 是 0.5 和 0.2 的平均值,1.0 要求第一个相关项排在第 1 位。

Q7. 为什么 NDCG 要除以 IDCG?

单选题 · mid

  • A.增大 DCG 数值
  • B.减少计算开销
  • C.只关注不相关项
  • D.便于跨查询比较← 正确答案

答案:D。不同查询的相关项数量和增益上限不同,DCG 绝对值不在同一量级。除以理想排序的 IDCG 后,NDCG 落在 0 到 1,长查询和短查询的得分才能公平比较,相当于把不同大小园区的寻宝得分换算成百分制。

Q8. 下列哪些业务适合用排序指标来评估?

多选题 · easy

  • A.搜索引擎结果列表排序← 正确答案
  • B.推荐信息流的曝光位次← 正确答案
  • C.图像分类的类别标签
  • D.广告的排序与竞价← 正确答案

答案:ABD。A、B、D 都产出一个“有序列表”,列表的前后位置直接影响用户体验或收益,必须用排序指标。C 是典型分类任务,输出的是标签而非顺序,用 Accuracy 评估即可。

Q9. 关于 Precision@K 与 Recall@K,下列说法中正确的有?

多选题 · mid

  • A.两者都只评估前 K 个结果← 正确答案
  • B.两者都不关心窗口内顺序← 正确答案
  • C.K 越大两者的值一定越高
  • D.两者可以组合评估排序质量← 正确答案

答案:ABD。两者都以“前 K 个”为考察窗口,且只数相关项个数、不盘中排序,所以 A、B 正确。K 越大 Recall 通常升高,但 Precision 不一定升高,C 错误。实际评估常用两者取长补短,D 正确。

Q10. 下列属于 NDCG 特点的有哪些?

多选题 · hard

  • A.支持多级相关标注← 正确答案
  • B.位置越深折损越大← 正确答案
  • C.需要构造理想排序归一化← 正确答案
  • D.结果不受标注质量影响

答案:ABC。NDCG 用指数增益 $2^{rel_i}-1$ 支持 0/1/2 多级相关,用 $\log_2(i+1)$ 实现位置折损,并用 IDCG 归一化,A、B、C 都正确。任何排序指标都依赖标注质量,标注错了 NDCG 同样失真,D 错误。