Skip to content

Latest commit

 

History

History
193 lines (150 loc) · 10.2 KB

File metadata and controls

193 lines (150 loc) · 10.2 KB

CTR 特征交互实验报告

公开版实验报告|数据、逐样本预测、划分索引和模型权重均未纳入本目录

1. 结论摘要

在同一份 100 万行 Criteo-format 本地数据、固定分层 72%/8%/20% train/validation/test 划分上,使用 5 个独立模型初始化种子比较 DeepFM 的两种输入:

  • baseline:26 个类别字段 + 13 个连续字段;
  • enhanced:训练集低频类别合并 + 13 个零值指示器 + 13 个训练集分位数 分箱字段,同时保留原始连续字段。

主实验结果如下(± 为 5 个 model seeds 的样本标准差):

指标 Baseline Enhanced 配对变化
AUC 0.773037 ± 0.000183 0.779165 ± 0.000313 +0.006129
Average Precision 0.545433 ± 0.001149 0.559374 ± 0.000716 +0.013942
LogLoss 0.469653 ± 0.000123 0.464200 ± 0.000592 -0.005453
Brier Score 0.152838 ± 0.000045 0.150676 ± 0.000190 -0.002162
ECE(15 个等宽概率分箱) 0.011871 ± 0.003473 0.008762 ± 0.004793 -0.003108

5 个配对 seed 的 AUC 增量均值为 0.006129;基于这 5 个增量计算的 t 95% CI 为 [0.005676, 0.006581]。LogLoss 的配对均值变化为 -0.005453,对应 t 95% CI 为 [-0.006298, -0.004607]

参数量由 2,611,413 降至 505,969-80.62%),但这不构成加速: 平均预测吞吐由约 200.7k samples/s 降至 170.4k samples/s-15.08%)。因此本项目只将其表述为参数/模型体积下降,同时如实报告 字段扩展带来的计算开销。

2. 主实验协议

2.1 数据与划分

项目 设置
数据 1,000,000 行、40 列 Criteo-format Parquet
正例率 25.1177%
数据 SHA-256 0b468148aecf6fa9464def4f2ad075b8843874f3469239afd3504602579f767a
划分 固定分层 train/validation/test = 720,000 / 80,000 / 200,000
split_seed 2026
划分 SHA-256 78823ec3b111274816c404e3219ca1f53dec63bb08811580f4506542c334f455

所有词表、低频集合、Min-Max 缩放器与分位数分箱边界均只在 train 上拟合。 测试集只用于最终评估。数据没有可验证的用户 ID 或时间字段,因此不报告 GAUC, 也不声称使用了时间切分。

2.2 训练控制

项目 设置
模型 DeepFM
model_seed 42、2026、2027、2028、3407
最大 epoch 3
Early stopping validation binary cross-entropy,patience=1,恢复最佳权重
Batch size 4096
Learning rate 0.001
Embedding dim 4
DNN [64, 32]
硬件 NVIDIA GeForce RTX 4060 8GB
软件 Python 3.10.20;PyTorch 2.11.0+cu128;DeepCTR-Torch 官方 commit 9eccef78e5810c61d6a04ddc7d96279e3db9c970

split_seed 只负责生成一次固定数据划分;model_seed 只控制模型初始化和训练随机性。 两种特征版本在每个 seed 下使用完全相同的 train/validation/test 行。 DeepCTR-Torch 的包元数据仍自报 0.3.0,但正式实验所用源码已逐文件核对为上述 官方 commit;它与 PyPI 的 0.3.0 标签不是同一实现。公开依赖因此按 commit 固定, 不能只凭版本字符串复现实验。

3. 主实验逐 seed 证据

Model seed Baseline AUC Enhanced AUC ΔAUC Baseline LogLoss Enhanced LogLoss ΔLogLoss
42 0.773278 0.779180 +0.005902 0.469743 0.463843 -0.005901
2026 0.773085 0.779527 +0.006442 0.469671 0.463731 -0.005940
2027 0.772910 0.779376 +0.006466 0.469580 0.464005 -0.005575
2028 0.773104 0.778723 +0.005619 0.469787 0.464214 -0.005574
3407 0.772806 0.779021 +0.006215 0.469483 0.465208 -0.004275

5 个 model seeds 上的 AUC 均提升、LogLoss 均下降。t 区间描述的是固定数据划分下, 5 次独立模型初始化所得配对增量的跨 seed 不确定性。样本数只有 5,结论仍应 限定在当前模型、数据、特征与训练预算内。计算明细见 paired_seed_t_intervals.csv

4. 两种不确定性不能混为一谈

主实验还对每个 seed 的 20 万条同源测试预测执行了 200 次 stratified paired bootstrap,分别在正负类别内有放回采样,并保持 baseline/enhanced 的样本配对。

Model seed ΔAUC 样本 bootstrap 95% CI ΔLogLoss 样本 bootstrap 95% CI
42 +0.005902 [0.005162, 0.006676] -0.005901 [-0.006506, -0.005301]
2026 +0.006442 [0.005650, 0.007138] -0.005940 [-0.006533, -0.005358]
2027 +0.006466 [0.005724, 0.007183] -0.005575 [-0.006127, -0.005015]
2028 +0.005619 [0.004914, 0.006379] -0.005574 [-0.006145, -0.004926]
3407 +0.006215 [0.005313, 0.006941] -0.004275 [-0.004860, -0.003629]
  • 每 seed 的 bootstrap CI 衡量的是:给定已经训练好的这一组权重时,有限测试 样本造成的不确定性;所有 5 个 AUC/LogLoss 区间均不跨 0。
  • 跨 5 seed 的 t CI 衡量的是:固定 split 下,模型初始化/训练随机性对配对增量的 影响。
  • 两者回答不同问题,bootstrap 不能替代多 seed 实验;200 次重采样的 Monte Carlo 分辨率也有限,不应把区间端点解释得过细。

完整的小型聚合表见 paired_bootstrap.csvpaired_model_seed_summary.csv; 逐样本预测未复制到公开报告目录。

5. 参数与效率

指标(5 seed 均值) Baseline Enhanced 变化/说明
Sparse fields 26 52 零值指示与分箱使字段数翻倍
词表规模 520,347 97,927 -81.18%
参数量 2,611,413 505,969 -80.62%
参数体积 9.962 MiB 1.930 MiB -80.62%
训练吞吐 62.2k samples/s 42.9k samples/s -31.07%
预测吞吐 200.7k samples/s 170.4k samples/s -15.08%
平均离线 batch 时间 20.40 ms 23.97 ms +17.48%
Peak allocated CUDA memory 107.72 MiB 51.66 MiB 当前实现/批大小下的测量值

训练总耗时不宜直接横比:baseline 的一个 seed 在第 2 epoch early-stop,其余运行 完成 3 epochs;enhanced 的 5 个 seed 均完成 3 epochs。即便采用按已完成 epoch 归一化的训练吞吐,enhanced 仍更慢。原因是低频合并压缩了 embedding 表,但新增 稀疏字段增加了每个样本的交互计算。故正确结论是:模型更小,但没有更快

这里的 mean_batch_ms 是离线整批预测总耗时除以 batch 数,并非在线请求的 P95。

6. 探索性组件消融(单 seed=42)

该实验与主实验使用相同数据/划分/训练上限,但只有一个 model seed。它用于提出 下一步假设,不用于独立、确定地归因某个组件的收益。

Feature variant 组成 AUC LogLoss 参数量
baseline 原始字段 0.773278 0.469743 2,611,413
rare_only + 低频合并 0.775844 0.466862 498,673
rare_zero + 低频合并 + 零值指示 0.776316 0.466725 502,131
rare_bins + 低频合并 + 数值分箱 0.778479 0.465147 502,511
enhanced + 低频合并 + 零值指示 + 数值分箱 0.779180 0.463843 505,969

在 seed=42 上,所有增强变体均优于 baseline,rare_bins 高于 rare_zero,最终组合 最高。但这不是完整析因设计:组件存在交互,且没有跨 seed 方差或多重比较控制。 因此不能把最终 +0.005902 机械拆解成各组件的独立因果贡献。公开聚合数据见 feature_component_ablation_seed42.csv

7. 探索性五模型 baseline 对照(单 seed=42)

模型 Epochs 参数量 AUC Average Precision LogLoss 预测吞吐(samples/s)
LR 3 520,361 0.758283 0.519384 0.483690 214,391
FM 3 2,601,749 0.761462 0.525468 0.478047 184,161
DeepFM 3 2,611,413 0.773253 0.545979 0.469774 176,058
DCN 3 2,612,232 0.773338 0.546072 0.469515 171,187
AutoInt 2 2,612,261 0.772349 0.542362 0.469789 137,352

DCN 在这一次运行中略高于 DeepFM,但差值极小;AutoInt 因 early stopping 完成 2 epochs,其他模型完成 3 epochs。由于只有一个 model seed,该表只能说明 runner 能够在统一 baseline 输入和预算下进行模型对照,不能支持“DCN 显著优于 DeepFM” 或稳定模型排名。公开聚合数据见 model_baseline_benchmark_seed42.csv

8. 可复现证据与公开边界

本报告只读取以下运行目录:

  • artifacts/full-1m-20260813:正式 DeepFM baseline/enhanced,5 model seeds;
  • artifacts/ablation-1m-seed42:单 seed 特征组件消融;
  • artifacts/model-benchmark-1m-seed42:单 seed 五模型 baseline 对照。

三次运行具有相同数据 SHA、split SHA、split_seed=2026 和 100 万行数据口径。 主实验集合有一项已记录的历史恢复操作:首次 seed=42 运行与另一 GPU 任务重叠, 导致墙钟效率数据受干扰,因此 baseline/enhanced 两行及其配对预测改用组件消融运行中 同一 seed 的 clean rerun;其数据 SHA、split SHA、源码 commit、参数和随机种子均一致, 其余 4 个 seeds 保留自完整主运行。该映射不是按测试指标挑选结果,而是为消除已知的 并发计时污染;未来复现应优先一次性重跑完整矩阵。

公开目录只保留实验级或 seed 级聚合 CSV,不含:

  • 原始/处理后数据;
  • split_indices.npz
  • 20 万条逐样本标签与预测;
  • 模型 checkpoint 或环境密钥。

数据来源与可用范围仍受 DATA_CARD.md 中的谱系限制。全部 结论均为本地离线证据,不代表线上 CTR、收入、留存或因果业务收益。

9. 可公开使用的项目表述

在 100 万行 Criteo-format 数据上建立固定 72/8/20 分层划分与 5 随机种子 DeepFM 配对实验;训练集低频合并、零值指示与分位数分箱使 AUC 从 0.773037±0.000183 提升至 0.779165±0.000313,配对增量的 t 95% CI 为 [0.005676, 0.006581],LogLoss 从 0.469653 降至 0.464200;参数量减少 80.6%,同时如实测得预测吞吐下降约 15.1%,未将参数压缩包装为推理加速。