Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
15 KiB
生时校正「盘型口径」研究(2026-09-30)
任务书
docs/tasks/TASK-rectification-varga-resolution-research-20260930.md(BUG-1105)。 数据:references/real_case_calibration/minute_rectification_holdout_v5.json(77 例公开 Rodden-AA,开放集,非盲测)。 口径:ayanamsaraman、node modemean;候选步长 2 分钟(同三轮既有研究);分盘上升逐分钟(步长 1);六题由线上event_probes.discriminating_event_probes出、按真值作答、线上卡片更新(±2、三次强冲突淘汰)、线上交付规则(落后头名 <8 分)。 脚本:scripts/research/varga_resolution_lib.py/varga_resolution_probe.py;结果varga_resolution_baseline_2026_09_30.json(M0)与varga_resolution_research_2026_09_30.json(M1–M3、稳健性);测试tests/test_varga_resolution_research.py。生产代码与 10 个冻结文件零改动。
1. 结论
| 项 | 一句话结论 | 是否建议实现 |
|---|---|---|
| M0 段扫描 | 任务书两张表逐格复现。31 分钟窗(±15)D1 上升只有 1 种的 51/77;D9 / D10 均 3.2 / 3.3 种;D9、D10 在任何窗口都没有一例只有 1 种(±10 也是 0/77) | — |
| M1 段级汇总 | 六题后按段汇总,±10:D1 头段 = 真值 76/77,D9 68/77(88%)、D10 66/77(86%);头段占比 ≥ 0.6 时留一法准确率 D9 92%(61 例)、D10 90%(51 例)。±30:D9 / D10 头段 = 真值只有 57% / 64%,但占比 ≥ 0.6 的 18 / 24 例留一法 94% / 92%。±60:真值段保留 74/77 < 基线 75,不过硬红线 1,D9 / D10 只能 blocked | 建议实现(±10 / ±30 分档展示;±60 只给 D1) |
| M2 按段选题 | 同一题库按「段级信息增益」重排:±10 D9 头段命中 68 → 71、D10 不变、宽度 15 → 13;±30 D9 44 → 48、D10 49 → 56、≤2 段 25 → 33 / 30;真值段保留不变(76)。±60 反而更差(真值段 74 → 73) | 建议实现,只在 ≤ ±30 启用;收益 +3~+7 例(4–9 pp),±60 不启用 |
| M2 提前停 | 头段占比达 0.7 / 0.8 即停:题数 4.1 → 2.2 / 2.9,但 ±10 真值段保留 76 → 75、真值在区间 76 → 75 | 不建议作为停止条件;占比只用来给可信度档位,六题照问 |
| M3 按问题域取盘 | 只判用户问的那张盘,准确率上去:±10 婚恋(D1+D9)92%、事业(D1+D10)86%、综合(D1×D9×D10)78%;题数不变(同一题库)。「不用校正」比例:0/77——D9 / D10 在窗内总会换至少一次;只有当问题只需要 D1 时才成立(±10 64/77、±15 51/77) | 建议实现取盘策略;「不用校正」出口只对「只需 D1」的问题成立 |
| 稳健性 | 答错 1 题:±10 真值段保留 98.7%、头段命中 83–86%;答错 2 题:97%、74–80%。事件 ±7 天:与基线逐格相同。LMT 时代 7 例:±10 保留 6/7、命中 5–6/7;±30 起命中 1–2/7 | 分档阈值不因稳健性下调;LMT 例照常计入 |
推荐口径:raw(线上分数、簇内均摊)。percent 与 raw 在所有格子数字相同(同一排序);uniform 没有一致收益。
每档半径的诚实出口
| 用户窗口 | D1 | D9 / D10 | 交付卡说什么 |
|---|---|---|---|
| ≤ ±10(21 分钟) | 头段 = 真值 99% | 占比 ≥ 0.6 →「较可信」(留一法 90–92%);0.5–0.6 →「倾向,备选也要看」(全集 86–88%);< 0.5 →「分不开」(各 3 例) | 「D1 上升 X。D9 上升 Y(较可信),备选 Z」 |
| ±30(61 分钟) | 97% | 占比 ≥ 0.6 →「较可信」(留一法 92–94%,约 1/4–1/3 用户);其余「分不开」 | 多数用户:「D1 上升 X 可信;分盘按现有信息分不开」 |
| ±60(121 分钟) | 90%(占比 ≥ 0.9 时 96%) | blocked(真值段保留低于基线,头段命中 ≤ 47%) | 「只能确定 D1 上升 X」 |
2. M0 · 段扫描(复现任务书两张表)
表 1 · 窗口内有几种上升(77 例)
| 窗口 | D1 只有 1 种 | D9 平均种数 | D10 平均种数 | D12 平均 | D1×D9×D10 平均组合 |
|---|---|---|---|---|---|
| ±10 | 64/77 | 2.43 | 2.51 | 2.88 | 3.84 |
| ±15 | 51/77 | 3.22 | 3.25 | 3.94 | 5.27 |
| ±30 | 37/77 | 5.35 | 5.30 | 6.74 | 9.65 |
| ±60 | 10/77 | 9.27 | 8.49 | 10.91 | 18.32 |
D9 / D10 / D12 在四档窗口里「只有 1 种」都是 0/77。
表 2 · 六题后交付区间(线上 unionStillValidRange 端点,含区间内被淘汰的分钟)里的盘型
| 半径 | 盘 | 只剩 1 种 | ≤2 种 | 区间内多数分钟 = 真值 | 其中多数是并列 |
|---|---|---|---|---|---|
| ±10 | D1 | 75/77 | 77 | 76 | 0 |
| ±10 | D9 | 22 | 68 | 68 | 0 |
| ±10 | D10 | 27 | 63 | 65 | 0 |
| ±10 | D12 | 18 | 60 | 67 | 2 |
| ±10 | D1×D9×D10 | 15 | 34 | 52 | 4 |
| ±30 | D9 / D10 | 7 / 4 | 24 / 22 | 33 / 34 | 24 / 21 |
| ±60 | D9 / D10 | 1 / 2 | 11 / 10 | 15 / 25 | 42 / 22 |
与任务书逐格一致(真值在区间 76 / 76 / 75,宽度中位 15 / 35 / 63)。新增「并列」一列:±30 起「多数 = 真值」有一大半是并列后取先出现的段,不能当准确率读;准确率看 §3 的段级占比。
复现中修正了起点脚本的两处口径:跨午夜区间(如 23:15 出生、交付端点 00:01–23:59)的偏移按 1440 折回 [-720, 720];并列时与起点脚本一样取区间内最早出现的段,并把并列例数单独列出。修正后数字与任务书相同。
3. M1 · 段级汇总与可信度校准(raw,六题)
段 = 窗口内该盘上升相同的连续分钟;段质量 = 仍有效候选簇的分数(≥0)按簇内分钟均摊后落进该段的总和;头段 = 质量最高的段;「真值段保留」= 真值所在段质量 > 0。
3.1 硬红线 1(真值段保留 ≥ 基线真值在区间 76 / 76 / 75)
| 半径 | D1 | D9 | D10 | D12 | 组合 | 判定 |
|---|---|---|---|---|---|---|
| ±10 | 76 | 76 | 76 | 76 | 76 | 过 |
| ±30 | 76 | 76 | 76 | 76 | 76 | 过 |
| ±60 | 76 | 74 | 74 | 75 | 74 | D9 / D10 / 组合不过 |
±60 差的 1 例:真值分钟落在交付端点之内,但它所在的簇落后头名 ≥ 8 分(不在有效簇里),按段汇总时质量为 0。这正是 ±60 分盘应写 blocked 的理由。
3.2 头段 = 真值、剩余段数、头段占比中位
| 半径 | 盘 | 头段 = 真值 | 剩 ≤2 段 | 只剩 1 段 | 头段占比中位 |
|---|---|---|---|---|---|
| ±10 | D1 | 76/77 | 77 | 75 | 1.00 |
| ±10 | D9 | 68/77 (88%) | 68 | 22 | 0.68 |
| ±10 | D10 | 66/77 (86%) | 63 | 27 | 0.67 |
| ±10 | D12 | 55/77 | 60 | 18 | 0.66 |
| ±10 | D1×D9×D10 | 58/77 (75%) | 39 | 15 | 0.53 |
| ±30 | D1 | 75/77 | 77 | 64 | 1.00 |
| ±30 | D9 | 44/77 (57%) | 25 | 7 | 0.46 |
| ±30 | D10 | 49/77 (64%) | 25 | 4 | 0.44 |
| ±30 | D1×D9×D10 | 39/77 | 11 | 2 | 0.35 |
| ±60 | D1 | 69/77 (90%) | 76 | 45 | 1.00 |
| ±60 | D9 | 36/77 | 11 | 1 | 0.33 |
| ±60 | D10 | 36/77 | 10 | 2 | 0.32 |
3.3 阈值-准确率(头段占比 ≥ t 的例子里头段 = 真值的比例;全集拟合,括号内例数)
| 半径 | 盘 | t=0.5 | 0.6 | 0.7 | 0.8 | 0.9 |
|---|---|---|---|---|---|---|
| ±10 | D9 | 0.878 (74) | 0.918 (61) | 0.917 (36) | 0.958 (24) | 0.955 (22) |
| ±10 | D10 | 0.865 (74) | 0.902 (51) | 0.909 (33) | 0.963 (27) | 0.963 (27) |
| ±10 | D1×D9×D10 | 0.826 (46) | 0.867 (30) | 0.857 (21) | 0.933 (15) | 0.933 (15) |
| ±30 | D9 | 0.806 (31) | 0.944 (18) | 1.00 (10) | 1.00 (7) | 1.00 (7) |
| ±30 | D10 | 0.867 (30) | 0.917 (24) | 1.00 (14) | 1.00 (6) | 1.00 (4) |
| ±60 | D9 | 0.611 (18) | 0.625 (8) | 0.75 (4) | 1.00 (1) | 1.00 (1) |
| ±60 | D10 | 0.615 (13) | 0.667 (9) | 0.833 (6) | 0.80 (5) | 1.00 (2) |
3.4 留一法(阈值在训练折上按目标准确率选最低格点,在留出例上判「可信」;报「可信」例数 / 其准确率)
| 半径 | 盘 | 目标 0.8 | 目标 0.9 |
|---|---|---|---|
| ±10 | D9 | 74 例 / 0.878(阈值 0.5) | 61 例 / 0.918(阈值 0.6) |
| ±10 | D10 | 74 / 0.865 | 51 / 0.902 |
| ±10 | D1×D9×D10 | 46 / 0.826 | 17 / 0.824 |
| ±30 | D9 | 31 / 0.806 | 18 / 0.944 |
| ±30 | D10 | 30 / 0.867 | 24 / 0.917 |
| ±60 | D9 | 0 例(没有阈值能在训练折达标) | 0 |
| ±60 | D10 | 6 / 0.833 | 1 / 0.0 |
去掉 LMT 时代 7 例后(70 例):±10 D9 62/70、D10 61/70 头段 = 真值,与全集比例相同。
3.5 三种质量口径:percent 与 raw 所有格子相同;uniform(每个存活分钟计 1)±10 D10 头段 68 vs 66、D12 64 vs 55,±30 / ±60 持平或更差,留一法没有一致收益。推荐 raw:不引入新运算,线上分数直接汇总。
4. M2 · 按段选题
同一题库(线上 discriminating_event_probes 返回的池,±10 中位 6 题、±30 / ±60 中位 8 题),研究侧按「答题后段分布的信息增益」逐题挑选,与线上顺序(前六题)比。两边都按真值作答、都用线上卡片更新。
| 半径 | 目标盘 | 顺序 | 答题数 | 真值段保留 | 头段 = 真值 | 剩 ≤2 段 | 真值在区间 | 宽度中位 |
|---|---|---|---|---|---|---|---|---|
| ±10 | D9 | 线上 | 4.1 | 76 | 68 | 68 | 76 | 15 |
| ±10 | D9 | 按段 | 4.1 | 76 | 71 | 70 | 76 | 13 |
| ±10 | D10 | 线上 / 按段 | 4.1 | 76 / 76 | 66 / 66 | 63 / 65 | 76 / 76 | 15 / 13 |
| ±10 | D1×D9×D10 | 线上 / 按段 | 4.1 | 76 / 76 | 58 / 60 | 39 / 39 | 76 / 76 | 15 / 13 |
| ±30 | D9 | 线上 / 按段 | 5.45 | 76 / 76 | 44 / 48 | 25 / 33 | 76 / 76 | 35 / 33 |
| ±30 | D10 | 线上 / 按段 | 5.45 | 76 / 76 | 49 / 56 | 25 / 30 | 76 / 76 | 35 / 33 |
| ±30 | D1×D9×D10 | 线上 / 按段 | 5.45 | 76 / 76 | 39 / 44 | 11 / 16 | 76 / 76 | 35 / 33 |
| ±60 | D9 | 线上 / 按段 | 5.45 | 74 / 73 | 36 / 34 | 11 / 14 | 75 / 75 | 63 / 63 |
| ±60 | D10 | 线上 / 按段 | 5.45 | 74 / 73 | 36 / 33 | 10 / 11 | 75 / 75 | 63 / 63 |
前六题完全相同的例数:±10 25–28/77,±30 9/77,±60 7/77——两种顺序确实不同。
提前停(头段占比达到阈值即不再问):
| 半径 | 目标盘 | 停在 | 答题数 | 真值段保留 | 头段 = 真值 | 真值在区间 |
|---|---|---|---|---|---|---|
| ±10 | D9 | 0.7(按段) | 2.2 | 75 | 71 | 75 |
| ±10 | D9 | 0.8(按段) | 2.9 | 75 | 70 | 75 |
| ±10 | D10 | 0.7 / 0.8(按段) | 2.4 / 2.9 | 76 / 76 | 67 / 66 | 74 / 75 |
| ±30 | D9 | 0.7 / 0.8(按段) | 4.9 / 5.2 | 74 / 76 | 46 / 48 | 74 / 76 |
提前停少问 1–2 题,但 ±10 D9 与 ±30 0.7 档都丢 1–2 例真值段 / 真值在区间,低于基线,不过硬红线 1。占比只能用于交付卡的可信度档位,不能用来少问。
判定:按段选题在 ≤ ±30 上是一致的小收益(D9 +3 / +4,D10 0 / +7,宽度 −2),真值段保留不降;±60 更差。建议实现,且只在 ≤ ±30 启用。77 例上 1 例 = 1.3 pp,+3 在噪声边缘,+7 超出噪声。
5. M3 · 按问题域取盘
| 半径 | 策略(目标盘) | 窗内段数均值 | 头段 = 真值(线上六题 / 按段六题) | 剩 ≤2 段(按段) | 「不用校正」(目标盘全窗 1 种) |
|---|---|---|---|---|---|
| ±10 | 婚恋 D1+D9 | 2.4 | 68 / 71(92%) | 70 | 0/77 |
| ±10 | 事业 D1+D10 | 2.6 | 66 / 66(86%) | 65 | 0/77 |
| ±10 | 综合 D1×D9×D10 | 3.8 | 58 / 60(78%) | 39 | 0/77 |
| ±15 | 三种 | — | — | — | 0/77 |
| ±30 | 婚恋 | 5.4 | 44 / 48(62%) | 33 | 0/77 |
| ±30 | 事业 | 5.8 | 48 / 53(69%) | 28 | 0/77 |
| ±30 | 综合 | 9.7 | 39 / 44(57%) | 16 | 0/77 |
| ±60 | 婚恋 / 事业 / 综合 | 9.6 / 10.7 / 18.3 | 36→34 / 32→31 / 30→29 | 14 / 12 / 6 | 0/77 |
- 只判用户问的那张盘,准确率明显高于同时判三张(±10:92% / 86% vs 78%)。题数不变——题库是同一个,答题数由可答题目数决定(±10 平均 4.1)。
- 「不用校正」的出口对婚恋 / 事业 / 综合三种策略都是 0/77:D9、D10 在 ±10 里就总会换至少一次。它只对「只需要 D1」的问题成立(±10 64/77、±15 51/77、±30 37/77)。任务书决策记录里的「三张盘都只有 1 种 → 直接说不用校正」在数据上不会发生,实现单要改成「只需 D1 且 D1 全窗一种 → 不用校正」。
6. 稳健性(raw,六题线上顺序)
| 半径 | 盘 | 基线 保留 / 命中 | 答错 1 题(5 seed × 77) | 答错 2 题 | 事件 ±7 天 | LMT 7 例 保留 / 命中 |
|---|---|---|---|---|---|---|
| ±10 | D9 | 76 / 68 | 保留 98.7%、命中 86.0% | 96.6%、80.3% | 76 / 68(同基线) | 6 / 6 |
| ±10 | D10 | 76 / 66 | 98.7%、82.9% | 97.1%、74.0% | 76 / 66 | 6 / 5 |
| ±30 | D9 | 76 / 44 | 96.1%、43.9% | 88.1%、32.0% | 76 / 44 | 6 / 2 |
| ±30 | D10 | 76 / 49 | 96.4%、47.3% | 88.8%、36.4% | 76 / 49 | 6 / 2 |
| ±60 | D9 | 74 / 36 | 93.0%、31.4% | 81.0%、19.7% | 74 / 36 | 5 / 1 |
| ±60 | D10 | 74 / 36 | 91.7%、28.3% | 81.0%、17.9% | 74 / 36 | 5 / 1 |
事件日期 ±7 天与基线逐格相同:日精度事件挪 7 天没有改变任何一题的出题与作答(45 天闸门、月级边界)。答错 2 题在 ±30 起把真值段保留压到 88%,与 09-26 「两道反答 = 8 分 = 淘汰线」一致;分档阈值不因此下调,交付卡文案要保留「答错会影响结果」的提醒。
7. 给实现单的要点
改(都在冻结文件之外)
- 录入后段扫描:新服务端模块(例如
scripts/rectification/varga_segments.py,新文件,不在PRODUCTION_FILES)——对窗口逐分钟算 D1 / D9 / D10 上升,输出各盘段表;只需 D1 且 D1 全窗一种 → 「不用校正」出口。 - 段级汇总:前端
rectification-agentic新增core/segment-summary.ts(在buildInferenceState的分钟分数之上按段求和,raw口径:有效簇分数 ≥0、簇内均摊);输出每盘头段、占比、剩余段数。 - 分档文案:
user-copy.ts/ 交付卡 / 采用卡按 §1 的出口表;采用时落库该段中点分钟。VOICE / DESIGN 同提交。 - 按段选题:新模块对
event_probes返回的题池按段级信息增益重排,只在窗口 ≤ ±30 启用;event_probes.py不动。 - 按问题域取盘:ConversationFocus 里的问题域 → 目标盘集合(婚恋 D1+D9 / 事业 D1+D10 / 综合三张)。
不改:active_rectification_event_engine.py、decision_policy.py、MIN_SEPARATION_LEAD、45 天闸门、七条采集线、卡片 ±2 与三次淘汰、采用 / 确认门、来源标签、训练门与留一件对照、六题照问(不提前停)。
验收红线:实现后用本研究脚本回放,±10 / ±30 真值段保留 76 / 76、头段 = 真值不低于 §4「按段」列;±60 交付卡不得出现 D9 / D10 推荐。
附:复跑命令
export PYTHONHASHSEED=0
python3 scripts/research/varga_resolution_probe.py \
--stages m0,m1,m2,m3,robust --radii 10,30,60 --cache-dir /tmp/varga-cache \
--baseline-out docs/research/varga_resolution_baseline_2026_09_30.json \
--json-out docs/research/varga_resolution_research_2026_09_30.json
python3 -m pytest -q tests/test_varga_resolution_research.py
两次完整运行各约 12 分钟(77 例 × 三档,M0–M3 + 稳健性),输出逐字节一致。