enhanced-replica-model-pack / docs /cross_domain_results.md
LUCIFerace's picture
Add files using upload-large-folder tool
7186231 verified
|
Raw
History Blame Contribute Delete
4.54 kB

# Cross-Domain Results

这部分结果在回答什么问题

results/cross-domain/ 不是 DS13 正式提交结果的重复拷贝,而是专门回答一个研究问题:当数据分布跨域变化时,仅靠一个全局 LR 是否还够用,还是应该按长度分桶后分别建模。

本仓库正式保留了两个跨域结论集:

  • results/cross-domain/ds06/
  • results/cross-domain/ds07/

它们都同时保存了:

  • ensemble_meta.json
  • ensemble_lr_global_*_predictions.csv.gz
  • ensemble_lr_bucket_*_predictions.csv.gz

分桶定义

跨域 bucket ensemble 的分桶不是手填经验值,而是脚本里固定编码并在正式结果中保留的长度区间:

  • extreme_short = 0-75
  • short = 76-180
  • general = 181+

对应实现可见:

  • scripts/inference/run_cross_domain_ensemble.py
  • scripts/inference/run_logistic_regression_ensemble.py

bucket 权重是怎么来的

这里的“bucket 权重”同样不是人工拍脑袋给的。正式流程是:

  1. 对每个 bucket 的 dev 子集单独收集 7 个 voter 分数。
  2. 加入 len_norm 后做 StandardScaler
  3. LogisticRegression(lbfgs, C=1.0) 在该 bucket 的 dev 子集上学习 LR。
  4. 用该 bucket 的 dev 子集搜索最佳 F1 阈值。
  5. 如果某个 bucket 的 dev 样本太少,则直接回退到 global LR。

因此,bucket ensemble 的核心不是“按桶给不同固定比例”,而是“按桶单独训练 LR;样本不够时回退”。

DS06 结果

DS06 的正式结果文件位于 results/cross-domain/ds06/ensemble_meta.json

总体结论

方案 F1 Precision Recall Accuracy
lr_global 0.643836 0.979167 0.479592 0.734694
lr_bucket 0.904255 0.944444 0.867347 0.908163

DS06 上 bucket 方案比 global 提升非常明显,说明跨域条件下统一阈值和统一系数不够稳,长度分段后单独建模更有效。

DS06 的 fallback 情况

Bucket n_dev 处理方式
extreme_short 0 回退到 global
short 2 回退到 global
general 190 单独训练 bucket LR

general 桶学出的正式参数中,阈值为 0.5376874712,说明 DS06 的跨域适配并不是简单复用 global threshold,而是真的在足够样本的桶里重新拟合了一个局部 LR。

DS07 结果

DS07 的正式结果文件位于 results/cross-domain/ds07/ensemble_meta.json

总体结论

方案 F1 Precision Recall Accuracy
lr_global 0.743119 0.975904 0.600000 0.792593
lr_bucket 0.872340 0.836735 0.911111 0.866667

DS07 也呈现出相同趋势:bucket LR 明显优于 global LR。

DS07 的 fallback 情况

Bucket n_dev 处理方式
extreme_short 0 回退到 global
short 2 回退到 global
general 266 单独训练 bucket LR

DS07 general 桶的正式阈值为 0.4020108060。这进一步说明 bucket 模型不是静态表,而是 dev 驱动的局部 LR。

为什么 DS13 和 DS06 / DS07 不一样

这三个结果最需要区分的地方是 dev 规模:

  • DS13:extreme_short=1short=0general=9,3 个桶全部不够训练,所以 bucket 全部回退。
  • DS06:只有 general 桶 dev 足够,因此只有 general 真正学出局部 LR。
  • DS07:结论与 DS06 相同,也是只有 general 学出局部 LR。

所以不要把“仓库里保留了 bucket 逻辑”误解成“所有数据集都会有独立桶模型”。真正决定是否独立建模的是 dev 样本量。

与探索期动态分桶投票的关系

仓库里还保留了探索期的动态分桶投票脚本,例如:

  • scripts/train_eval/rules_and_fusion/run_dynamic_bucket_vote.py
  • src/enhanced_replica/voter_registry.py

这些脚本里的 bucket_weights 属于研究路线 E06 的硬投票设定。正式跨域结论不是靠这些默认表直接得出的,而是以后续的 bucket LR 结果为准。看正式结果时,应当优先阅读:

  • results/cross-domain/ds06/ensemble_meta.json
  • results/cross-domain/ds07/ensemble_meta.json

可以直接复用的结论

  • 如果 dev 很小,bucket 流程可能会保留,但最终会回退到 global。
  • 如果某些长度桶有足够 dev 样本,bucket LR 能显著优于 global LR。
  • 对当前这条研究线来说,跨域提升主要来自 general 桶的局部 LR,而不是来自人为设置一套长度权重表。