K5.5.2 Task 5.5

分层抽样:为什么随机监控漏掉了最重要的问题

你每月从 10,000 条处理消息中抽样 100 条。随机选择。分布:账单 60%、物流 25%、退货 10%、保修理赔 5%。你的样本大约有 60 条账单、25 条物流、10 条退货、5 条保修。每月 5 个保修样本。如果保修提取准确率是 68%,大约 2 条会有错误——在统计上和噪音无法区分。监控系统永远不会标记它。

这就是随机抽样做质量监控的根本问题:稀有类别得到的样本太少,无法产出可靠的准确率度量。

分层抽样:同样的成本,更好的覆盖

分层抽样把总体按层(类别)划分,从每层独立抽样,保证每个类别的最低代表性。

同等成本下的直接对比:

方法总样本稀有类别覆盖发现的问题
随机(100/月)100每个稀有类别约 3-84 个月内 3 个已知问题发现 0 个
分层(100/月)100每个稀有类别 15-20第 1 个月发现全部 3 个

同样的总样本预算。同样的人工审查成本。唯一的区别是分配策略。分层抽样保证每个类别得到足够的样本(15-20)来可靠地检测质量问题。

分层发现的三个问题都在占比低于 10% 的类别:手写发票(8%)、外语合同(4%)、多页收据(3%)。随机抽样需要数百或数千个总样本,这些类别才能积累足够的单独样本来检测其特定的错误模式。

为什么”加大样本量”是浪费

随机抽样漏了东西时的直觉:“多抽点。“一个团队每月抽样 60 个测试(TypeScript 65%、Java 20%、Python 15%),得到约 12 个 Java 样本。漏了一个 Java 质量问题。提议:增加到 200。

200 个随机样本下 Java 得到约 40 个。好一些,但低效。60 个总样本的分层抽样——每种语言最低 20 个——成本和原来的 60 一样,同时保证 20 个 Java 样本。60 个样本的分层比 200 个随机的按类别覆盖更好。

把预算翻三倍来修方法论问题是用错了杠杆。

多级分层

单级分层(按文档类型、按语言)能捕获类别级问题。但错误可能在更细的粒度上聚集。

第一级:类别 一个账单类别从 98% 降到 87%。每月 40 个账单样本的分层抽样能可靠地检测这个。

第二级:子类别 调查发现:一次账单系统迁移改变了 30% 的消息格式。旧格式:仍然 98%。新格式:总体 82%,金额字段具体是 71%。类型级分层捕获了总体下降,但没有更深的分解就无法识别子类别模式。

第三级:框架特定 一个按语言分层的代码审查代理显示 JavaScript 91%。可以接受。但在 JavaScript 内部,React Server Components(占 JS 审查的 10%)只有 62% 准确率。其他 JS 框架平均 94%。语言级分层漏掉了这个,因为 RSC 是大类别中的小部分。

解决方案:多级分层。语言 → 框架,或文档类型 → 格式 → 字段。每级添加有最低样本分配的层。任何层的下降触发调查。

准确率不能跨类型外推

有经理提议:“只审核发票(占 70%),然后把质量外推到合同和收据。“这假设提取准确率跨文档类型可传递。不能。

发票是表格式的,字段位置可预测。合同包含散文式法律条款和修正案。收据在不同供应商间格式各异。每种类型产生不同的错误模式,其他类型无法预测。发票准确率高不意味着合同准确率高——提取挑战根本不同。

分层抽样存在恰恰是因为类别表现不同。如果它们相同,单一聚合指标就够了。

置信度分数不能替代

分层抽样的替代方案:“只审核模型置信度低于 80% 的提取。“这能捕获模型知道的错误。它漏掉更危险的情况:自信的错误。

在不熟悉的模式上——新的文档格式、不常见的消息结构、模型没训练过的框架——模型可能产出高置信度但错误的结果。62% 准确率的 RSC 代码审查可能带着 95% 的置信度分数,因为模型把 RSC 当标准 React 处理,没有识别出范式差异。

基于置信度的审查补充分层抽样但不能替代它。模型自信地犯错的类别恰恰是没有分层监控最可能漏过的。

对成长系统的自适应分层

代码库在增长:每季度 2 个新模块,偶尔引入新框架。固定的分层类别会过时。新模块开始时占比小,其低准确率被已建立模块的高分掩盖。

自适应分层抽样解决这个:

  1. 检测 新类别自动出现(新模块路径、新框架标识)
  2. 添加 它们作为层,从第一个月起就有最低样本分配
  3. 标记 初始准确率待审查——新类别质量问题风险最高
  4. 调整 随类别成熟和准确率稳定而调整分配

不需要手动配置更新就能扩展。年度的分层类别审查给中间添加的模块留下 3 个以上季度的盲区。监控方法论应该系统性地检测新模式,而不是依赖组织沟通。

实际分配

在固定的审查预算(比如每月 150 个样本)和多个层下:

  • 每层最低量:足以检测有意义的准确率下降(15-20 个样本是检测 10+ 个百分点变化的合理下限)
  • 超出最低量的分配:按量或按风险比例分配——高风险类别(财务字段、安全审查)可以按比例获得更多
  • 审查所有字段:在每个抽样项目内,审查所有提取字段,不只是最重要的那个。一个账单提取可能金额对了但日期总是解析错——只审查单个字段会漏掉这个。

目标不是每个类别相等的样本(这对高频类别过度采样而不对任何类别不足),而是每个类别的最低代表性加上最低量之上的风险加权分配。


一句话总结: 按类别分层监控样本并设每类别最低量——随机抽样对稀有类别代表不足,而最严重的问题恰恰藏在那里。