三方榜单与归档
在 B1→B18 的能力曲线上,今天是 B14「外部 ground-truth」整块的收口——把这十天造出来的所有部件(真标签 balanced_300、混淆矩阵、bootstrap CI、双模型交叉验证、去循环的规则基线)汇成一张可复现的三方 leaderboard。昨天(Day 139)杀死了循环 baseline、让规则在外部集上暴露真实掉分;今天把规则基线 vs deepseek-v4-f
阶段: B14 · 外部 ground-truth AML eval(Day 131-140) 标签: #leaderboard #reproducibility #confidence-interval #eval-rigor
今日导引(由浅入深)
在 B1→B18 的能力曲线上,今天是 B14「外部 ground-truth」整块的收口——把这十天造出来的所有部件(真标签 balanced_300、混淆矩阵、bootstrap CI、双模型交叉验证、去循环的规则基线)汇成一张可复现的三方 leaderboard。昨天(Day 139)杀死了循环 baseline、让规则在外部集上暴露真实掉分;今天把规则基线 vs deepseek-v4-flash vs Qwen3 在同一真标注集上的 recall/precision/FPR + 95% CI 排成榜单,并写清「CI 重叠时只能说方向性更优、不能宣称显著」。今天的最小可判定产出是:leaderboard.md + 柱状图 + 一条命令重跑的 README——其中脚手架/README/命令可先落地,但三方真实数字仍待跑/待数据。明天起进 B15(FIS×Anthropic 模式 + 对抗/HITL 套件)。
把 B14 这十天串成一条线看:D131-132 列映射→D133-134 schema/loader→D135 judge 校准→D136 混淆矩阵→D137 CI→D138 交叉验证→D139 去循环→D140 收口榜单。每一天都是这张最终榜单可信度的一块砖:去掉 CI 它就成了点估计赌博,去掉去循环它就是自评自夸,去掉可复现它就是截图。今天把这些砖砌成一面能支撑架构决策的墙——这正是 AISA「拿 eval 数字说话」的标准动作。
1. 机理精读
leaderboard 的合法比较单元是「指标 + CI」,不是裸点估计。 把三个系统排榜,诱惑是按 recall 点估计从高到低排个序就完事。但 Day 137 已立下纪律:N=300 上的点估计带抽样噪声。合法的「A 优于 B」判据是 A 的 CI 与 B 的 CI 不重叠(更严格可做配对检验)。CI 重叠时,只能写「方向性更优(directionally better)」,绝不能写「显著更优」。这条直接呼应 Day 137——CI 不是装饰,是榜单可信度的裁决器。
为什么 CI 重叠就不能宣称胜出(用真实案例校准直觉)。 seed 给了本仓一个可直接引用的真实教训:A/B 在 N=29 时测得 Δ+10.3pp,但 95% CI[0,20.7] 跨 0 —— 不显著;按功效分析约需 ~70 任务才有 power 检出这个效应。同理,leaderboard 上即便规则基线和 LLM 的点估计差出几个百分点,只要 N=300 上的 CI 重叠,就没到能下结论的样本量。把这个真实数字写进 README,是给读者一个「区间宽度 = 还能不能信」的标尺。
可复现性是 leaderboard 可信的底线。 一张榜单若不能被第三方一条命令重跑出同样的数字,它就只是一张截图、一个营销断言。可复现的三要素:(1) seed——抽样(balanced_300)和 bootstrap 都用固定 seed;(2) 数据来源 + 版本——AMLworld(IBM, 2024-04),列结构与下载版本标清;(3) 一条重跑命令——如 pnpm eval:agent --dataset=amlworld --seed=...。三者齐了,榜单从「我说我测了」升级为「你也能测出一样的」。
为什么这三要素缺一不可,逐条说:缺 seed,抽样和 bootstrap 每次结果都变,别人重跑得不到你的数字,CI 也对不上;缺数据来源/版本,别人不知道你测的是哪份数据,AMLworld 若改版结果就漂移;缺重跑命令,别人即便有数据也不知道你的 prompt/模型 id/grader 配置,复现无从下手。三者合起来才构成一条「任何人都能走一遍并得到同样结论」的链路——这是科学评测和营销 PR 的根本区别。AISA 面试里 hiring manager 的「评测怎么做的」一问,答案的底气全在这三要素上。
这张榜单最终支撑的决策:build-vs-augment。 leaderboard 不是为了选「最好的模型」,而是为了回答一个架构问题——AML 系统该用纯规则、纯 LLM、还是规则+LLM 兜底?三方对比的意义在于:若规则基线 recall 在外部集上掉得很惨而 LLM 显著更高,说明该上 LLM 兜底;若三方差异不显著(CI 重叠),则规则引擎的可解释性 + 零边际成本可能更划算。这正是 AISA 的 build-vs-buy/augment 选型论证——用 eval 数字 + CI + 成本三件套支撑架构取舍,而非凭感觉。Day 140 把 B14 的全部严谨度收口成这个决策依据。
三方各自的诚实标签不同,不能混为一谈。 榜上三行的成熟度不一样:规则基线 assessCase 是确定性纯函数(已 built+tested,但在外部集上的指标待数据);deepseek-v4-flash 与 Qwen3 是 LLM judge(待跑需 key + 待数据)。leaderboard 必须逐行标注状态,不能因为放在一张表里就把待跑的行也描成已完成——这是整套 B14 笔记的诚信底线。
leaderboard 是给谁看的——决定它必须诚实。 这张榜单的最终读者是「要决定 AML 系统怎么搭」的架构决策者:规则引擎够不够?要不要叠 LLM?叠哪个?一个夸大的榜单会把决策导向错误的架构,在合规领域代价极高。所以 leaderboard 的每一个数字都必须可复现、带 CI、标注成熟度状态——它不是炫技的展板,是决策的依据。这也是为什么 B14 花十天才走到这里:前面所有严谨度(去循环、CI、交叉验证)都是为了让这张最终榜单可信。
与相邻概念的边界。 今天 ≠ Day 139(那是杀死循环、出规则基线一行,今天是三方汇总排榜);今天 ≠ Day 138(那是两 LLM 互比 agreement,今天加进规则基线成三方);今天 ≠ B15(明天起做 FIS×Anthropic 五段链拆解与对抗/HITL 套件)。今天只回答:三个系统在同一外部金标上的指标 + CI 排出来谁方向性更优、能否宣称显著、怎么一条命令重跑。
2. 手算 + 代码走读
2.1 手算:CI 重叠时为什么不能宣称胜出
用一个三方小例子把「重叠 = 不显著」钉死。设三系统在同一 N=300 外部集上的 recall 点估计与 95% CI(数字为手算演示,非真实跑分):
| 系统 | recall 点估计 | 95% CI |
|---|---|---|
| 规则基线 | 0.62 | [0.54, 0.70] |
| deepseek-v4-flash | 0.71 | [0.63, 0.79] |
| Qwen3 | 0.69 | [0.61, 0.77] |
- 排序看点估计:flash(0.71) > Qwen3(0.69) > 规则(0.62)。
- 但 flash 的 CI[0.63,0.79] 与 Qwen3 的 CI[0.61,0.77] 大幅重叠 → 「flash 比 Qwen3 强」不能宣称,只能说「方向性略优」。
- flash 的 CI 下界 0.63 仍高于规则的 CI 上界 0.70?不——0.63 < 0.70,两者也重叠 → 严格说「LLM 显著强于规则」也未到(这套手算数字下)。
读法:哪怕点估计差 9pp,只要 CI 重叠就不能下「显著」结论。判「不重叠」的硬线是「A 的 CI 下界 > B 的 CI 上界」。本例三方两两都重叠,正确的 leaderboard 表述是「点估计 flash 居首,但三方差异在 N=300 下均未达显著,方向性结论需更大样本量确认」。
2.2 代码走读:三方榜单复用的既有部件
今天不写新评分逻辑,而是把 Day 136-139 的部件汇成榜单。Read 了相关源文件,三方各自的产出路径:
- 规则基线行:
src/aml/evalBaseline.ts的规则assessCase(typology.ts)当 predicted,AMLworldIs_Laundering当 label(Day 139 接入),经src/aml/groundTruthEval.ts的binaryEvalWithCI出 recall/precision/FPR + 三对 CI。 - deepseek-v4-flash 行 & Qwen3 行:两个 LLM judge 的
{label, predicted}(Day 136/138 产出)分别喂同一个binaryEvalWithCI(items, { bootstrap: 1000+, rng: <fixed seed> })——评分函数三方共用、口径完全一致(prediction-source-agnostic),这是三行可比的前提。 - CI 算法:
binaryEvalWithCI内部 percentile bootstrap(stats.ts的percentile),RNG 可注入保证 seed 固定可复现;返回recallCI95/precisionCI95/fprCI95+bootstrap次数。三行用同一 seed 与同一 bootstrap 次数,CI 才可横向对比。 - 汇总产物:seed 指定汇成
docs/aipa/.../leaderboard.md+ 一张柱状图,README 标 seed、数据来源(AMLworld 2024-04)、一条重跑命令。注意docs/aipa/...属交叉引用文档(非本仓代码走读)。 - 三行同口径的关键:prediction-source-agnostic。三行预测来源完全不同(规则
assessCase/ DeepSeek judge / Qwen3 judge),但都坍缩成{label, predicted}喂同一个binaryEvalWithCI。评分函数不关心预测怎么来的,这才让「规则 vs LLM」能放进同一张表横比——若三行各用各的评分逻辑,榜单就是苹果比橘子。这是groundTruthEval.ts顶部注释强调的解耦红利在收口处的最终兑现。 - 判读自动化的落点:可在汇总脚本里复用
stats.ts的requiredNForDelta(delta, sdDiff),对任一对系统估「要让这个差异达显著还需多少样本」——把「CI 重叠 → 方向性」从人手判断升级为脚本断言。requiredNForDelta已 built+tested(正态近似,power=.8、alpha=.05)。 - 诚实边界:
binaryEvalWithCI/binaryEval已 built+tested;但三行的真实指标都依赖「AMLworld 数据落盘(待数据)+ 规则/两 LLM 各跑一遍(LLM 行待跑需 key)」,且 Day 139 的amlworldLoader.ts仍待建——脚手架可先落地,真实数字不可预填。
走读结论:榜单脚手架(三方共用 binaryEvalWithCI、README、命令)可先落地并对 fixture 验证格式;三方真实 recall/precision/FPR + CI 需数据 + 两次模型跑产生。requiredNForDelta 提供「还差多少样本」的功效估计,让榜单判读可脚本化。
3. 今日实战
- 汇总三方
binaryEvalWithCI结果(规则基线 / deepseek-v4-flash / Qwen3,同一 balanced_300、同 seed、同 bootstrap 次数)成docs/aipa/.../leaderboard.md,每行 recall/precision/FPR + 95% CI + 诚实状态标签。 - 画一张柱状图(三方三指标,带误差棒=CI),让 CI 重叠/不重叠一眼可辨。
- 写 README:标明 seed、数据来源(AMLworld, IBM, 2024-04)、一条重跑命令(如
pnpm eval:agent --dataset=amlworld --seed=...)。 - 在 README 写清判读纪律:CI 重叠 → 只能说「方向性更优」,引 A/B 真实教训(N=29 时 Δ+10.3pp CI[0,20.7] 跨 0 不显著,约需 ~70 任务)作标尺。
- 给每行加成熟度状态列:规则基线(纯函数 built+tested,外部集指标待数据)、deepseek-v4-flash(judge 待跑需 key)、Qwen3(judge 待跑需 key)——逐行标,不统一上色。
- 在 README 附「复跑前置」清单:需下载 AMLworld(待数据)、需
amlworldLoader.ts/amlworldSchema.ts(待建)、需配 DeepSeek + OpenRouter key——把待办依赖显式列出,让读者知道现在能跑到哪一步、哪些数字还空着。 - 把判读纪律写成可执行检查:在汇总脚本里加一条「若任一对系统 CI 重叠则输出『方向性,未显著』而非排名」的断言,避免人手写榜单时忘了这条纪律。
4. 今日实测 / 产出
本日产出分「可先落地的脚手架」与「待真实数字回填」两层,逐项标注成熟度:
- 产出物:
leaderboard.md+ 柱状图(带 CI 误差棒)+ 可复现 README(seed/数据来源/一条重跑命令)。 - 状态:脚手架/README/命令 可先落地;评分函数
binaryEvalWithCI/binaryEval已 built+tested。 - 三方真实 recall/precision/FPR + CI = 待跑/待数据:需 AMLworld 数据 + 两次模型跑(deepseek-v4-flash、Qwen3)产生;
amlworldLoader.ts仍待建,不预填数字。 - 可直接引用的真实教训:A/B N=29 时 Δ+10.3pp 95% CI[0,20.7] 跨 0、不显著,约需 ~70 任务才有 power——同理 leaderboard CI 重叠不可宣称胜出。
- 可先落地的可复现骨架:README 模板(seed/数据来源/重跑命令三要素)、柱状图脚手架(带误差棒占位)、三行成熟度状态列、判读断言(CI 重叠→输出「方向性」)——这些不依赖真实数据即可先建好并对 fixture 验证格式。
- 三方均为「待真实数字」状态(逐行诚实):规则基线(纯函数 built+tested,外部集二元指标待数据)/ deepseek-v4-flash(judge 待跑需 key)/ Qwen3(judge 待跑需 key)。没有一行的真实 recall/precision/FPR+CI 现在可填——全部等数据 + 模型跑。
5. 常见误区 / 陷阱
- 按点估计排序就宣称胜出:CI 重叠时只能说方向性更优。把「排第一」等同于「显著最好」是榜单最常见的失信。
- 三行用不同 seed / 不同 bootstrap 次数:CI 不在同一基准上,横向对比作废。三行必须同 seed、同 bootstrap 次数、同
binaryEvalWithCI口径。 - 三行用不同子集或不同样本量:必须同一份 balanced_300、同 N,否则比的是不同测试集上的指标,连点估计都不可比,CI 更无从谈起。
- 无 seed、无 CI、无重跑命令的「截图榜单」:不可复现 = 不可信。三要素缺一不可。
- 把待跑的行描成已完成:三行成熟度不同(规则纯函数 vs LLM judge 待跑需 key),逐行诚实标注,别因同表就统一上色。
- 只比 recall 不看 FPR/成本:leaderboard 若只排 recall,会漏掉「高 recall 但 FPR 爆表压垮复核产能」或「LLM recall 略高但单位成本高一个量级」的关键权衡。AML 决策要 recall × FPR × 单位成本三维一起看,单维榜单会导向错误架构。
- 无误差棒的柱状图:柱状图若不画 CI 误差棒,视觉上会把「点估计差几个百分点」夸大成「明显更高」。误差棒是让重叠一眼可辨的必需品。
- 用 ROC-AUC 当极不平衡场景主指标:原始 AMLworld 正例 <0.1%,ROC-AUC 在此会虚高;PR-AUC 或直接的 recall@产能约束更可读。balanced_300 缓解了这点,但报告时仍要标清口径。
- 把 balanced_300 的指标当原始分布的指标:balanced_300 是 50/50 平衡子集,上面的 precision/FPR 不等于真实 <0.1% 分布上的值(真实分布 precision 会低得多)。报告要标清「平衡子集口径」,别让读者误以为是线上分布表现。
- 忘记记录 grader/prompt 版本:可复现不只 seed+数据+命令,还包括 judge prompt 版本与 grader 版本。换了 prompt 措辞结果就漂,必须随榜单存档(与 Day 136 落盘元数据呼应)。
6. 学习资源(每条带 YYYY-MM)
- Anthropic — Demystifying evals(2026-01):可复现报告规范、报告区间而非点估计、leaderboard 可比性。
- 本仓真实 A/B 案例记录(2026-06):N=29 时 Δ+10.3pp CI[0,20.7] 不显著、~70 任务功效——leaderboard 判读标尺。
- IBM AMLworld dataset card(2024-04):榜单数据来源与版本。
- Anthropic — Demystifying evals(2026-01,可比性章节):多系统比较需统一 harness/seed/grader,与本日三行同口径要求一致。
- Qwen3 模型卡 / OpenRouter 文档(2025/2026,执行当周复查 model id 与路由名)。
- 本仓代码:
src/aml/groundTruthEval.ts(binaryEvalWithCI,已 built+tested)、src/agent/eval/stats.ts(percentile、requiredNForDelta、pairedBootstrap)。 - 本仓 MEMORY 锚点(2026-06):A/B N=29 Δ+10.3pp CI[0,20.7] 不显著、~70 任务功效;judge-human κ 仍 gated——leaderboard 判读与「未显著」叙事的真实依据。
- 可复现 eval 报告规范(2025-2026 行业实践,主流厂商 eval 仓库/技术报告普遍带 seed + 区间 + 重跑命令,执行当周复查)。
SOTA检查 (2026-06 更新)
- 现役主线:带 CI 的可复现 leaderboard 是 2026 eval 报告 SOTA;
deepseek-v4-pro/deepseek-v4-flash为当前 id;prediction-source-agnostic 的统一评分口径保证三行可比。 - 可复现三要素是硬条款:seed + 数据来源版本 + 一条重跑命令,是 2026 eval 报告被认可的最低门槛;无三要素的榜单一律视为不可信截图。
- 多维榜单趋势:单维 recall 榜已不够,现役做法是 recall × FPR × 单位成本(× 延迟)多维呈现,让架构决策者看到完整权衡而非单点。本仓
makeModelGenerate的成本口径(缺 usage 留 undefined)正是为多维榜单提供诚实成本列。 - 避免/禁用:避免无 seed、无 CI、无重跑命令的「截图榜单」;避免按点估计宣称显著胜出;避免单维 recall 榜掩盖 FPR/成本权衡;legacy
deepseek-chat/deepseek-reasoner2026-07-24 退役,脚本/命令须用 v4 id。 - 下次复查点:执行当周用 WebSearch 复核 Qwen3 当周具体版本 与
deepseek-v4-flash是否仍可用;确认 AMLworld(2024-04)仍当前、是否有更新外部集;amlworldLoader.ts待建依赖落地后回填真实三方数字;评估是否把榜单从无配对 CI 升级为配对 bootstrap(同一批样本配对比三系统,CI 更窄、更有 power)。 - B14 阶段末 SOTA 复盘:作为 block 收口,重审本 block 主线(AMLworld 2024-04、deepseek-v4 id、Demystifying evals 2026-01、GRPO 2024-02/R1 2025-01)是否仍 SOTA——若 DeepSeek-V5 或 Qwen3 后继发布、AMLworld 出新版,需在下次执行当周更新榜单的模型行与数据版本。
衔接
- 昨天:Day 139 — 替换循环 baseline(规则
assessCase在 AMLworld 真标签上重测、暴露虚高 recall 掉分),产出三方榜单的「规则行」。 - 今天:规则基线 vs deepseek-v4-flash vs Qwen3 三方排 leaderboard + CI + 可复现 README,收口 B14(脚手架可落地,真实数字待跑/待数据)。
- 明天:Day 141 — FIS×Anthropic Financial Crimes 模式拆解(进 B15:evidence→typology→SAR draft→HITL→audit 五段链,把 src/aml 管线逐段映射并标缺口)。从「评测规则/模型准不准」转向「评测整条调查链每段谁是 LLM/规则/人、哪段无对抗测试」。
- B14 收口一句话:评测严谨度 = 去循环(换尺子)+ CI(控方差)+ 交叉验证(控偏差)+ 可复现(seed/数据/命令)四件齐,才配排榜下结论。
- 一句话记忆点:CI 重叠不可宣称胜出——点估计居首≠显著最好,N=300 下三方差异多半「方向性、未显著」。