Files
Jyotisha/docs/research/rectification_varga_resolution_2026_09_30.md
T

15 KiB
Raw Blame History

生时校正「盘型口径」研究(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,开放集,非盲测)。 口径:ayanamsa raman、node mode mean;候选步长 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. 给实现单的要点

改(都在冻结文件之外)

  1. 录入后段扫描:新服务端模块(例如 scripts/rectification/varga_segments.py,新文件,不在 PRODUCTION_FILES)——对窗口逐分钟算 D1 / D9 / D10 上升,输出各盘段表;只需 D1 且 D1 全窗一种 → 「不用校正」出口。
  2. 段级汇总:前端 rectification-agentic 新增 core/segment-summary.ts(在 buildInferenceState 的分钟分数之上按段求和,raw 口径:有效簇分数 ≥0、簇内均摊);输出每盘头段、占比、剩余段数。
  3. 分档文案:user-copy.ts / 交付卡 / 采用卡按 §1 的出口表;采用时落库该段中点分钟。VOICE / DESIGN 同提交。
  4. 按段选题:新模块对 event_probes 返回的题池按段级信息增益重排,只在窗口 ≤ ±30 启用;event_probes.py 不动。
  5. 按问题域取盘: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 + 稳健性),输出逐字节一致。