小样本评测置信区间:样本少时别把 2 分差距当胜利

📅 2026/7/4 2:27:16 👁️ 阅读次数 📝 编程学习
小样本评测置信区间:样本少时别把 2 分差距当胜利

小样本评测置信区间:样本少时别把 2 分差距当胜利

很多 AI 产品早期评测样本很少,可能只有几十条真实任务。模型 A 比模型 B 高 2 分,就说 A 更好,这很危险。样本少时,分数波动很大。没有置信区间,就很难判断差距是不是随机噪声。

小样本评测要更谨慎。样本越少,结论越要克制。

一、平均分不够

flowchart TD A[Small Eval Set] --> B[Mean Score] A --> C[Variance] B --> D[Confidence Interval] C --> D

两个模型平均分接近时,方差可能决定结论是否可靠。

平均分最大的问题,是把不确定性压扁成一个数字。20 个样本里赢 2 分,和 2000 个样本里赢 2 分,含义完全不同。前者可能只是抽到了更适合某个模型的样本,后者才更可能反映稳定差异。因此评测报告里应该同时展示样本量、均值、标准差和置信区间。

二、Bootstrap 很实用

可以对样本重复抽样,估计分数分布。

import random def bootstrap(scores, n=1000): means = [] for _ in range(n): sample = [random.choice(scores) for _ in scores] means.append(sum(sample) / len(sample)) return sorted(means)

取 2.5% 和 97.5% 分位,可以得到近似 95% 区间。

Bootstrap 的好处是直观,不要求我们强行假设分数服从正态分布。相比之下,传统的 t 检验依赖正态假设,对偏态分布容易误判。尤其是 LLM 评测中,分数常常是离散的、偏斜的,甚至包含大量满分和零分。重复抽样能让团队看到“如果重新抽一批类似样本,平均分可能落在哪个范围”,这比单个均值更接近真实风险。

三、比较差值区间

不要只看 A 和 B 各自区间,也要看差值分布。

delta = score_a - score_b ci95 = [-0.8, 3.1]

如果差值区间跨过 0,就不能自信地说 A 胜出。最多说“当前样本下 A 略高,但证据不足”。

差值区间也能帮助确定下一步。区间很宽,说明样本太少或波动太大;区间整体大于 0,说明 A 的优势更可信;区间靠近 0,即使不跨 0,也要评估收益是否值得上线成本。统计显著不等于业务显著,0.3 分的稳定提升可能不值得一次复杂迁移。反过来,0.5 分但区间很宽的提升,虽然统计不足,但如果迁移成本极低,也可以作为观察候选。决策要同时看效果幅度、置信宽度和落地成本。

四、补样本比硬解释更有用

样本太少时,与其写复杂解释,不如补关键场景样本。尤其是线上高频任务、失败高风险任务。

sample_plan: high_frequency: 50 high_risk: 30 edge_cases: 20

评测集不是越大越好,但要覆盖真实风险。

补样本时不要平均用力。优先补高频、高风险和模型分歧大的样本,因为这些样本最能缩小决策不确定性。还可以把线上失败案例纳入回归集,让评测集随着产品一起成长。小样本阶段的正确姿势不是假装很确定,而是快速发现还缺哪些证据。

报告结论时也要使用克制语言。可以写“当前样本下观察到提升,仍需补充高风险场景验证”,而不是直接写“模型 A 全面优于模型 B”。统计表达越诚实,产品决策越稳。

上线决策也可以设置分层门槛。普通体验优化允许较宽区间,高风险任务则要求差值区间明显为正,并且关键子集不能退化。不同风险使用同一套统计门槛,本身就是不严谨。

五、总结

小样本评测要报告方差和置信区间,可以用 Bootstrap 估计分数分布和模型差值区间。

样本少时别把 2 分差距当胜利。证据不足,就诚实说证据不足。