跳到主内容
快讯直播
AI智模界
AI 词典

McNemar 检验:两个模型差 2 分,是真提升吗

一句话定义:McNemar 检验(McNemar's test)是一种配对显著性检验,用来判断两个模型在同一批测试题上的对错差异,究竟是真实差距,还是随机波动。

关键思路:只看不一致的题

设想两位医生读同一批病人的片子。要判断谁更强,你不需要统计两人都看对、或都看错的病例——两边都一致的结果,对“谁更好”这个问题不提供任何信息。你只需要比较两类人:“只有甲看出来、乙漏了”和“只有乙看出来、甲漏了”。如果两人水平相当,这两种情况应该数量相近,像抛硬币。

换成模型:1000 道题,模型 A 答对 800 道,模型 B 答对 820 道。把每道题拆成四种情况:

B 对B 错
A 对两边都对只有 A 对(记为 b)
A 错只有 B 对(记为 c)两边都错

McNemar 检验中有效的样本只有 b 和 c。零假设是 b 与 c 的期望数量相等,统计量约为 χ² = (|b−c|−1)² / (b+c),在原假设下近似服从自由度为 1 的卡方分布(减 1 是连续性校正)。当 b+c 很小时,改用精确二项检验更稳妥。

回到例子:那 20 道题的差距,可能来自 b=50、c=70,也可能来自 b=5、c=25。前一种情况说明结果基本上是噪声,后一种情况则说明差异相当扎实——只看“800 对 820”是看不出来的。

和相邻概念的区别

方法适用场景用错会怎样
McNemar 检验同一批样本、二值结果(对/错、好/坏)—
两比例 z 检验 / 卡方独立性检验两组互不重叠的样本忽略配对,丢弃信息,通常偏保守
配对 t 检验同一批样本上的连续分数(如逐条打分)能用,但对二值结果不如 McNemar 贴合
Bootstrap 置信区间想说清“提升幅度的范围”与 McNemar 不冲突,常一起报

对从业者的实际意义

  • 要同时报告 b、c 和 p 值:p 值小只说明“不像噪声”,不说明这 2 分值得上线。净提升其实是 (c−b)/n。
  • 测试集太小要警惕:200 道题里多答对 4 道,无论怎么算都很难显著。想分辨 2 个点的差距,测试集规模必须足够大。
  • 一次比较多个模型或多次迭代时要做多重比较校正,否则总会有某一对模型看起来“显著”。
  • 同样的框架适用于人评 A/B 偏好、RAG 改动前后、Prompt 微调前后——只要是同一批样本上每个样本给出“好/坏”的结果。

一句话总结:别比总分,比不一致的那部分。 具体实现和临界值以统计软件文档与官方说明为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。