# S16 V3：模型修正、复刻与全部误差

[中文](model_report_zh_cn.md) · [English](model_report_en.md)

预测整个世界赛的每局总体选取率、主动禁用率、综合 BP 热度和条件平均选取位置。分路按实际最终阵容统计；分路选取率的分母同样是总局数。原 V2 数据和参数完整留档，V3 是独立新版本。

- 输入: 2556 games / 1003 series / 40 events / 173 champions × 5 roles.
- 截止时间: 2026-10-09T19:20:41Z; patch 26.20; Data Dragon 16.20.1.
- 沿用原始比赛、队伍、技能重要性与分路关联；只统一更正推断结构和推推棒急速减益的符号。没有单英雄特判，也没有用 S16 结果选择参数。

## 1. 历史比赛权重

`w(g) ∝ exp(-ln(2)·age_days/45 - 0.25·patch_gap) × importance(g) × exp(0.8·clip((Elo_before(g)-1500)/400,-1,1)) × event_games_before_cutoff^(-0.25) × first_game_factor`

越久、版本距离越大，权重越小。MSI重要性1.8，EWC1.4，First Stand1.3，资格赛/地区决赛1.45，季后赛/总决赛1.35，KeSPA/DCGI0.75，升降级0.4，其余1。平均实力用本局之前的双方Elo均值，按结果K=20更新；初始LCK1600、LPL1580、LEC1500、LCS1450、LCP/CBLOL1430、外部挑战队1350。第一局权重1.4；45%混合已知世界赛参赛队历史，缓解无畏赛制的深层英雄池影响。

## 2. 历史回归层

`historical_candidate = V1_no_patch_baseline + blend × (intercept + standardized_features × coefficients)`

6组频率岭回归对应5个分路与整体禁用率；5组位置岭回归预测条件平均选取手数。所有英雄共享每组系数，没有英雄身份特征。保留以下17项历史特征，并使用各组训练均值及标准差（标准差下限0.025）：

`baseline_probability`, `recent14_rate`, `recent45_rate`, `season_rate`, `recent_minus_baseline`, `recent_squared`, `baseline_squared`, `qualified_rate`, `champion_ban_rate`, `champion_pick_rate`, `early_pick_fraction`, `early_ban_fraction`, `role_share`, `flex_entropy`, `attack_range`, `recent_role_partner_strength`, `qualified_team_coverage`

recent14/recent45 是在主历史权重上额外按14/45天半衰期加权，属于指数衰减，并非硬日期窗口。界面“最近45天”对照则是硬截取后直接统计。历史共选搭档强度是相关特征，不代表因果配合效果。

`ridge=0.03; residual_blend=0.75; position_blend=0.5`

## 3. 分路证据与结构零

`support(c,r) = historical_pick_count_before_cutoff(c,r) > 0`

没有历史分路记录的状态在回归后以及每轮归一化中保持精确0，不能被epsilon或截距复活。保留全部865状态用于统计误差，不删未出场英雄。现有277个有证据状态、588个无证据状态。曾被使用的稀有分路可以保留低概率，例如阿萝拉上单62次历史记录；不会用英雄名字或玩家直觉手工清零。

这是保守的点预测“不支持/不作正概率预测”，不是断言新分路绝不可能。完全未被职业比赛选过的英雄也不给虚构分路选取率，可能漏掉新英雄首次出场或全新摇摆；测试中这些漏预测的实际选取仍计入误差。零选取率时条件平均BP位置在界面/CSV为null或空白；误差计算若测试期首次出场，使用V1条件位置先验作为兜底，不把该英雄从位置指标删掉。

## 4. 版本改动独立施加

`delta(c,r) = clip(Σ favorable_log_change × skill_importance × role_relevance, -1.6, 1.6)`
`patched_pick(c,r) ∝ supported_historical_candidate(c,r) × exp(delta(c,r))`
`patched_ban(c) ∝ historical_ban(c) × exp(Σ supported_V1_role_share(c,r) × delta(c,r))`

沿用V1的数值、机制、系统三类增益1。数值使用有利方向log(新/旧)：冷却、耗蓝、承伤反向；攻击速度用总倍率，减伤用剩余承伤比例。技能重要性与分路关联仍是公开先验。26.19按历史旧版本暴露比例衰减，26.20直接施加。先完成历史回归与结构零投影，再乘版本倍率，最后重新投影，避免版本项凭空给无记录分路添加十几个百分点。

移除V2的numeric_patch、mechanism_patch、system_patch、positive_patch_saturation、patch_x_low_frequency五个学习特征。原因是S15历史目标窗口没有完整历史版本改动，这些列大多接近0；阿萝拉上单的饱和特征值0.962相对训练均值0.000077严重外推。版本作用保留在上述独立先验，没有声称已从数据学到真实版本弹性。推推棒20→10技能急速用施法频率分母120→110的负log幅度，统一修正13位关联英雄。

## 5. BP位置与总量约束

`Σ_c p(c,r)=2; Σ_(c,r) p(c,r)=10; Σ_c ban(c)=10; Σ_r p(c,r)+ban(c)≤1`
`E[BP_step] = E[pick_rank] + 6 + 4·P(pick_rank≥7)`

投影保留支持掩码和不可用英雄零值。平均手数在1–10范围，全BP步数在7–20范围；角色位置的回归修正最多±2手，再施加版本优先级先验并约束合法矩。总体位置按预测分路选取率加权。禁用没有最终分路，不拆虚构的ban分路。

## 6. 训练与重测

V3只使用S15世界赛之前的2392局，构成39个历史赛事/版本目标窗口（1771目标局）。34个滚动时间窗口中前27个选择ridge∈{0.03,0.1,0.3,1,3}、残差混合∈{0.25,0.5,0.75,1}、位置混合∈{0,0.25,0.5,0.75,1}，共100组。损失=0.45×热度RMSE+0.30×选取RMSE+0.15×分路RMSE+0.10×手数MAE。每次拟合仅使用结束日期早于测试开始的目标窗口；然后以全部39窗口拟合共享系数。S15世界赛标签在选参和拟合完成后才用于诊断。

S15全部39窗口的训练集样本内误差（仅V3，不能当泛化误差）：

|Metric|V3|
|---|---:|
|选取率 MAE / 百分点|2.4404|
|选取率 RMSE / 百分点|4.0968|
|禁用率 MAE / 百分点|3.3445|
|BP 热度 RMSE / 百分点|8.1483|
|英雄×分路 RMSE / 百分点|1.8726|
|平均选取手数 MAE / 手|1.0736|
|平均 BP 步数 MAE / 步|1.7664|

S15前27个开发窗口平均误差：

|指标|V2|V3|
|---|---:|---:|
|选取率 MAE / 百分点|2.5405|2.5047|
|选取率 RMSE / 百分点|4.2391|4.2391|
|禁用率 MAE / 百分点|3.4241|3.4241|
|BP 热度 RMSE / 百分点|8.4140|8.3976|
|英雄×分路 RMSE / 百分点|1.9416|1.9366|
|平均选取手数 MAE / 手|1.0733|1.0719|
|平均 BP 步数 MAE / 步|1.7432|1.7398|

S15末7个历史检查窗口（曾查看，不是新盲测）：

|指标|V2|V3|
|---|---:|---:|
|选取率 MAE / 百分点|2.4094|2.3951|
|选取率 RMSE / 百分点|3.9120|3.9287|
|禁用率 MAE / 百分点|3.3145|3.3139|
|BP 热度 RMSE / 百分点|7.8672|7.8514|
|英雄×分路 RMSE / 百分点|1.7825|1.7872|
|平均选取手数 MAE / 手|1.0933|1.0919|
|平均 BP 步数 MAE / 步|1.8103|1.8051|

S15世界赛84局赛前重建对照（回溯诊断）：

|指标|V2|V3|
|---|---:|---:|
|选取率 MAE / 百分点|2.6532|2.4051|
|选取率 RMSE / 百分点|4.2359|3.9278|
|禁用率 MAE / 百分点|3.0384|3.0165|
|BP 热度 RMSE / 百分点|8.4430|8.4203|
|英雄×分路 RMSE / 百分点|1.9162|1.8094|
|平均选取手数 MAE / 手|0.9062|0.8500|
|平均 BP 步数 MAE / 步|1.4947|1.4275|

S16冻结参数迁移：13窗口/210局：

|指标|V2|V3|
|---|---:|---:|
|选取率 MAE / 百分点|3.3161|3.2834|
|选取率 RMSE / 百分点|5.3810|5.3696|
|禁用率 MAE / 百分点|3.7430|3.7435|
|BP 热度 RMSE / 百分点|8.6146|8.5959|
|英雄×分路 RMSE / 百分点|2.4599|2.4542|
|平均选取手数 MAE / 手|1.4622|1.4602|
|平均 BP 步数 MAE / 步|2.4665|2.4612|

S16与旧版使用完全相同的系列赛切分，并重新计算旧V2误差确认逐项相同。赛事/版本≥30局，前65%完整系列赛为先前信息，后段≥10局测试；其他赛事也只取截止前信息，整系列不重叠。英雄元数据来自对应历史版本；版本冲击置零。这验证同版本延续预测，不验证未见过的26.19/26.20改动。各窗口等权平均，并非独立样本汇总。

结构零漏预测的实际分路选取: S15 7 windows=8; S15 Worlds=0; S16=10/2100.
S16改善很小；S15末7窗口的选取/分路RMSE略有变差。修复的直接证据是无记录分路精确归零和版本外推不再产生大幅异常抬升，不能宣传所有误差显著下降。参数未用S16检查结果反复优化。

## 7. 不确定性、复刻和交接

80次bootstrap按历史完整系列赛抽样，支持掩码固定为原始截止前档案，系数固定；95%区间只反映历史抽样波动。版本敏感性比较关闭全部改动、数值幅度±25%、关闭机制/系统先验。26.19/26.20影响页以四种开关组合做两因素Shapley拆分，这是模型敏感性，不是实际/因果版本影响。未来新分路、世界赛赛程、阶段占比和无畏英雄池不确定性没有全部进入区间。

```powershell
python -X utf8 research/scripts/train_worlds_model_v3.py
python -X utf8 research/scripts/forecast_s16_worlds_v3.py
python -X utf8 research/scripts/render_s16_forecast_v3.py
python -X utf8 research/scripts/audit_s16_forecast_v3.py
node research/scripts/check_s16_dashboard.cjs s16_preparation/outputs_v3
```

队友交接需共享V3源代码、17项特征顺序、共享系数/均值/尺度/超参数、原V1参数、结构零规则、修正后的版本编码和输入哈希。不能只把V2的22项系数文件替换成17项系数，不能复制S15英雄后验到S16。新训练bundle位于experiments/s15_candidates/s15-v3-supported-roles，原冻结transfer_parameters不改。

- Event-specific disabled roster not obtained; all 173 champions assumed eligible.
- CBLOL-only games excluded by requested collection scope: LOS/FURIA team preferences are estimated from sparse cross-region observations.
- No completed 26.19/26.20 games in this dataset; target-patch shocks are extrapolations.
- Future series lengths, stage participation and within-series unavailable pools are not explicitly simulated; this is the same marginal whole-event model as S15. First-game weighting moderates observed Fearless depth.
- Independent game-level source checks cover only part of the archive; no claim of every draft step verified against video.
- Historical-series bootstrap measures sampling variation, not all model, patch or event-format uncertainty.
- Zero unsupported roles are conservative abstentions; novel professional flex roles and unseen champion debuts are not forecast as positive picks. All actual test roles remain in error denominators.
- The patch response is an assumed V1 multiplicative prior. S15 lacks complete historical patch shocks, so the five V2 learned patch features are removed; no claim of empirically validated 26.19/26.20 response.

- [Per-window S16 errors](temporal_validation.json)
- [S15 training and retrospective errors](s15_validation.json)
- [Forecast/input hashes](forecast_manifest.json)
- [Shared V3 coefficients](parameters_s16_prior.json)
- [Corrected patch facts](patch_change_features.json)
- [Patch 26.19](https://www.leagueoflegends.com/en-us/news/game-updates/league-of-legends-patch-26-19-notes/)
- [Patch 26.20](https://www.leagueoflegends.com/en-us/news/game-updates/league-of-legends-patch-26-20-notes/)
