# ch06 精排模块 — 代码示例

本目录用纯 Python(标准库 + `torch` + `numpy`)复刻第 6 章正文的精排链路、预估任务、
多目标融合公式与流量调控策略:每个脚本独立可跑、只打印数值表格,把正文里的公式、
伪代码与结论都变成可以亲手改参数复现的实验。

## 目录结构

```
ch06 精排模块/code/
├── ch01_ranking_architecture/            § 6.1 精排模块架构
│   └── ranking_pipeline.py                  打分→融合→调控→保量强插 四段式链路的进程内全链路演示
├── ch02_ranking_and_ltr_models/          § 6.2 精排模型与 LTR 模型
│   ├── dnn_vs_two_tower.py                  精排拼接式 DNN 与粗排双塔在高阶交叉上的表达力/算力对比
│   └── ltr_pointwise_pairwise_listwise.py   Pointwise / Pairwise / Listwise 三大 LTR 范式同网络对比
├── ch03_prediction_tasks/                § 6.3 精排模型常见的预估任务
│   ├── watch_time_prediction.py             § 6.3.1 时长预估:直接回归 / 对数回归 / 分桶分类 / 序回归
│   ├── sparse_interaction_signals.py        § 6.3.2 稀疏互动信号:CTR→LTR→CMTR→FTR→CVR 逐级稀疏的建模难度
│   ├── sample_weighting.py                  § 6.3.3 样本加权:直播打赏 GTR / G-Value 的五种加权方案
│   ├── dense_to_sparse_esmm.py              § 6.3.4 稠密辅助稀疏:Base-CVR / MTL / CTCVR-Only / ESMM
│   └── behavior_chain_aitm.py               § 6.3.5 行为关联:SharedBottom / MMoE / PLE / AITM 的漏斗一致性
├── ch04_multi_objective_fusion/          § 6.4 精排多目标融合
│   ├── multiplicative_formula_shape.py      § 6.4.1 乘法公式 (β+α·p)^γ 的 α/β/γ 形状分析
│   ├── rank_transform_shape.py              § 6.4.2 五种序变换的形状、区分能力再分配与尺度鲁棒性
│   └── cem_formula_tuning.py                § 6.4.3 CEM 黑盒寻优,含噪声/延迟反馈/维度灾难/目标函数四类正文问题
└── ch05_traffic_control/                 § 6.5 精排流量调控
    ├── cascading_traffic_control.py         § 6.5.1 级联式:融合→初排→调控→重排→TopK 与 Boost 强度权衡
    ├── multi_channel_quota.py               § 6.5.2 多通道 Quota + § 6.5.4 带约束排序优化与动态 Quota 闭环
    └── guarantee_delivery_force_insert.py   § 6.5.5 保量与强插:四类实现、强插位置、24 片 pacing、Q_target 边际代价
```

## 快速运行

```bash
cd "ch06 精排模块/code"

# 单个脚本
python3 ch03_prediction_tasks/dense_to_sparse_esmm.py

# 全部脚本(每个脚本均在 CPU 上数秒内结束)
find . -name '*.py' | sort | while read f; do echo "=== $f"; python3 "$f"; done
```

## 各脚本要点(数字均来自本目录脚本的实际运行输出)

### § 6.1 `ch01_ranking_architecture/ranking_pipeline.py`
- 把正文的精排四段式链路做成进程内 mock:粗排候选 300 → 主模型打分(300 次 RPC)
  → 多目标融合 → 流量调控 → 保量强插 → 输出 Top-60。
- 打分阶段同时产出 7 个因子(`pctr` 均值 0.11575、`pevtr` 0.46130、`pltr` 0.01749、
  `pcmtr` 0.00179、`pcvr` 0.00885、`pwatch_time` 32.36 秒、`pltr_reward` 0.70617),
  对应正文「一次前向产出多个预估目标」。
- 调控效果:189/300 个候选命中 boost 规则,强插 15 条;类目覆盖从 2/5 升到 5/5,
  类目分发基尼系数 0.7667 → 0.5333,新内容 19→33 条、活动商品 3→8 条。
- 调控前后 Top-60 集合重合度 42/60 = 70.0%,即换掉 18 个坑位来换取生态约束达成。

### § 6.2 `ch02_ranking_and_ltr_models/dnn_vs_two_tower.py`
- 构造「用户年龄 × 内容类目」的高阶交叉与 `|u-i|` 型非双线性关系,训练 40000 /
  测试 10000 条,6 个任务(click 8.1%、effective_view 40.85%、like 0.84%、
  comment 0.08%、follow 0.05%、share 0.19%)。
- 平均 AUC:双塔 0.8473,精排 DNN 0.8825(ΔAUC +0.0352);Oracle 上限 0.9406,
  精排收回了 37.7% 的可弥补差距。click 任务差距最大(0.7436 → 0.8029,+0.0593)。
- 算力对比:双塔在线每候选约 8 次乘加(物品向量离线预算),精排 DNN 约 27,840 次,
  相差约 3480 倍 —— 正文「效果 / 算力 / 时延」三角权衡的量化版本。

### § 6.2 `ch02_ranking_and_ltr_models/ltr_pointwise_pairwise_listwise.py`
- 同一个打分网络、只换损失函数,600 query × 20 候选训练,相关度 rel=0..4。
- NDCG@10:Random 0.3474 / Pointwise-MSE 0.9560 / Pointwise-BCE 0.9509 /
  Pairwise-RankNet **0.9663(最优)** / Pairwise-BPR 0.9371 / Listwise-ListNet 0.9631 /
  Pairwise-LambdaRank 0.9630。
- 验证正文「LTR 直接优化最终排序效果」:Pairwise / Listwise 在排序指标上整体优于
  Pointwise;本例规模下 RankNet 与 ListNet/LambdaRank 差距在 0.004 以内。

### § 6.3.1 `ch03_prediction_tasks/watch_time_prediction.py`
- 合成右偏长尾时长(mean 16.66s / median 2.97s,mean/median = 5.60,max 948.5s),
  29.27% 的样本落在 `[0,1)` 秒桶,对应正文「大量样本集中于较小时长区间」。
- 四种范式(MAE / log-MAE / Spearman):直接回归 20.597 / 1.5184 / 0.5142;
  **对数回归 13.702 / 0.7739 / 0.6452(两项最优)**;分桶分类 21.459 / 1.5759 / 0.4739;
  序回归 23.565 / 1.6433 / 0.5566。
- 分段 MAE 揭示长尾主导:长时长段 `[40,inf)` 四种方案 MAE 都在 144~161 秒,
  而对数回归在短时长段 `[0,5)` 只有 1.96 秒(直接回归 12.30)。
- 序回归额外产出正文的阈值事件率 `1[t>τ]`:τ=1 时预估 0.6794 / 真实 0.6820(偏差
  -0.0026),τ=160 时 0.0332 / 0.0270 —— 每个头天然就是「有效播放率 / 完播率 / 长播率」。
  解码时额外估计 `E[t-160 | t>160] = 121.7s` 以避免生存函数积分系统性偏低。

### § 6.3.2 `ch03_prediction_tasks/sparse_interaction_signals.py`
- 按正文量级构造 5 个目标并统计「平均每 batch 正样本数」(batch=256):
  CTR 8.0850%(20.70 个/batch)、LTR 1.2150%(3.11)、CMTR 0.3550%(0.91)、
  FTR 0.0800%(0.20)、CVR 0.0450%(0.12)—— 最稀疏的两个目标平均每 batch 不到 1 个正样本。
- 单任务 3 个种子:AUC 从 CTR 0.8266±0.0015 衰减到 FTR 0.7233±0.0114、
  CVR 0.7227±0.0422(标准差随稀疏度放大 28 倍);PR-AUC 从 0.3446 掉到 0.0009。
- 共享底座多任务后稀疏目标普遍受益:FTR +0.1150、CVR +0.0595、CMTR +0.0273、
  LTR +0.0181,而稠密的 CTR 略降 -0.0014 —— 这是 § 6.3.4 的最朴素形式。
- 所有头都做了 bias 校准初始化(`_solve_bias`),否则万分级目标会被初始 logit 拖死。

### § 6.3.3 `ch03_prediction_tasks/sample_weighting.py`
- 直播打赏场景:GTR = 1.1600%,G-Value mean 11.40 元 / median 4.08 / max 310.2,
  金额 Top-1% 的正样本贡献了全部打赏金额的 18.0%。
- 五种加权(GTR AUC / 价值加权 AUC / 校准比):W0 不加权 0.8285 / 0.8496 / 0.82;
  W1 正样本×85 0.8095 / 0.8384 / **13.69(严重失准)**;W2 w=金额 0.8280 / 0.8673 / 3.23;
  W3 w=log(1+金额) **0.8338(GTR 最优)** / 0.8747 / 1.28;
  W4 w=金额/均值 0.8241 / **0.8756(价值最优)** / 0.59。
- 「大额/小额」分档倍数揭示关键差异:W1 这种与金额无关的固定类别权重只整体抬高正样本
  分数,倍数反而被压到 1.70(低于不加权的 3.29);只有与 G-Value 挂钩的 W2/W3/W4 才
  把倍数放大到 3.55 / 4.02 / 6.11。
- 业务用法对比:`GTR × 预估金额`(双塔头)捕获率@500 最高 47.60%、Top500 真实总金额
  616.9 元,优于不加权 601.0 与金额加权 586.1,且概率头仍可解释 —— 衔接 § 6.4 乘法融合。

### § 6.3.4 `ch03_prediction_tasks/dense_to_sparse_esmm.py`
- Exposure→Click→Purchase:曝光 30000、点击 2951(CTR 9.837%)、转化 474
  (CTCVR 1.58%,点击空间 CVR 16.062%);可训练 Base-CVR 的样本只占全空间 9.8%(DS 问题)。
- 样本选择偏差 SSB 实测:偏移最大的 4 维特征在点击空间 vs 全空间的均值偏移平均 0.5048
  (最大维 0.0065 → 0.7229),证明点击样本不是曝光样本的无偏子集。
- CTCVR AUC(最终业务目标):**ESMM 0.9589 > Shared-MTL 0.9557 > CTCVR-Only 0.9504 >
  Base-CVR 0.9329**。
- 条件概率分解检查:按 pCTR 分 5 桶,平均 pCTCVR 0.00002→0.06111 与真实 CTCVR
  0.00000→0.07433 同向单调,验证 `pCTCVR = pCTR × pCVR` 的结构。
- 四个模型的 pCVR 校准比都偏离 1(0.80~0.85,CTCVR-Only 口径不同为 3.49),说明
  ESMM 解决的是排序而非校准,校准要靠额外手段。

### § 6.3.5 `ch03_prediction_tasks/behavior_chain_aitm.py`
- Like→Comment→Follow 链:全空间正样本率 11.9750% / 5.6700% / 2.0850%,条件转化率
  P(t|t-1) = 11.98% / 47.35% / 36.77%;like-comment 相关系数 0.6647,comment-follow 0.5952。
- 四种框架平均 AUC 差异极小(SharedBottom 0.9371 / MMoE 0.9369 / PLE 0.9355 /
  AITM 0.9347,全部在 ±0.003 以内),**真正拉开差距的是漏斗单调违背率**:
  MMoE 4.00%、PLE 3.97%、AITM(无校准)1.65%、AITM(加行为期望校准损失)**0.77%**。
  SharedBottom 0.59% 则因为所有任务共享同一表征而天然接近单调。
- AITM 的自适应信息迁移权重显示链条位置差异:comment 任务只给前序信息 0.09% 权重,
  follow 任务给到 **88.99%** —— 越靠链条末端、自身标签越稀疏,越依赖前序任务迁移来的信息。
- MMoE gate 分布(如 follow 任务 E2 权重 0.3353 vs E3 0.1763)展示专家的差异化分离。

### § 6.4.1 `ch04_multi_objective_fusion/multiplicative_formula_shape.py`
- 逐项扫描 `s_i = (β_i + α_i·p_i)^{γ_i}`:α 从 0.2 → 5.0 使头尾比 1.346 → 5.500;
  β 从 0 → 5 使头尾比 10.000 → 1.176(单调稀释该因子影响力);γ 从 0.3 → 3.0 使头尾比
  1.316 → 15.625,并给出凹/线性/凸的曲率标注。
- 退化验证:γ=1 时 `(β+αp)^1 == β+αp`,21 个采样点最大绝对误差 0.000e+00。
- **一个容易被误解的点**:三因子取同一个 γ 时 `Score = (∏(β+αp_i))^γ` 是基线分的单调幂
  变换,排序完全不变(Top10 重合恒为 100%,与 CTR/CVR 的序相关恒为 0.9792/0.4515);
  γ 同值只改变分数形状 —— 基尼系数 0.0291 → 0.7243、Top1 流量占比 0.55% → 5.96%。
  真正改变排序的是各因子取不同 γ(cvr γ=3 使 Top20 重合降到 90%)。
- 稀疏因子的 β 作用:CVR 的 β 从 0 → 10,融合分动态范围(max/min)22.94 → 3.08,
  与 CVR 的序相关 0.9455 → 0.4211,Top20 中 CVR 头部物品从 13 个降到 6 个。

### § 6.4.2 `ch04_multi_objective_fusion/rank_transform_shape.py`
- 复刻正文五种序变换并打印 r=1..100 的取值、曲率标注与「头/中/尾区分能力」三元组:
  倒数变换 92%/7%/1%;平滑倒数 λ=0.3 → 1.5 从 58%/31%/11% 变到 95%/5%/0%;
  归一化幂次 λ=0.3/1.0/3.0 为 35%/40%/24%、10%/40%/49%、0%/13%/87%;
  双曲 k=2.0 为 17%/33%/50%;带偏置 λ=2,b=10 为 1%/25%/74%。
- 数值验证正文结论:平滑倒数 λ=0.3 时 S(1)/S(10) 只有 1.50,λ=0.7 升到 3.01,
  λ=1.5 升到 16.31 且 r>5 后得分仅剩 0.0821 并迅速趋近 0 —— 与正文「Rank 大于 5
  之后得分迅速趋近于零」一致。
- 双曲变换的分段敏感性(k=2.0,相邻 Rank 平均 |Δ|):Top-5 0.26853、中腰部 0.08009、
  尾部 0.27900 —— 头尾陡、中间平的「局部区域差异化建模」。
- **尺度鲁棒性实验**:把 CVR 整体 ×100,五种 Rank 融合的序相关与 Top-K 重合全是
  1.0000 / 100%,而 Value 加权和的序相关掉到 0.7061、Top10 重合只剩 40% —— 正文说
  Rank 融合「天然具有更强的鲁棒性」的直接证据。
- 不同变换对 Top-20 构成的影响:倒数类变换的 Top20 平均 Rank 和 93.8(更容易选出
  「单因子第一、其余平庸」的候选),幂次/带偏置为 75.5/75.6(更偏均衡候选)。

### § 6.4.3 `ch04_multi_objective_fusion/cem_formula_tuning.py`
- 按正文四阶段(采样 → 评估 → 选精英 → 更新分布)实现 CEM,搜索
  `Score = ∏(β_i+α_i·p_i)^{γ_i}` 的 5 因子 × 3 参数 = 15 维;收益
  `R = 人均时长 + 20 × 人均 GMV` 由 `[MOCK]` 在线环境黑盒返回,优化器只看到标量 R。
- 迭代轨迹(K=30,ρ=0.15 → M=4):人工默认参数 R = 106.1985 → CEM 122.7466(**+15.58%**);
  每一轮「精英观测均值」都高于「全体观测均值」,平均 σ 从 1.3942 收缩到 0.1684,
  对应正文 `Σ^(t) → 0`。
- 同预算(301 次评估)对比:坐标式人工调参 121.7622(+14.66%)、随机搜索 121.8703
  (+14.76%)、CEM 对角 Σ **122.7466(+15.58%)**、CEM 完整 Σ + Cholesky 122.5855
  (+15.43%)。CEM 领先随机搜索的幅度不大 —— 因为「按融合分取 Top-K」的收益曲面是
  分段常值的大平台,很多参数组合给出同一排序。
- 正文问题(a)数据噪声 `R̂ = R + ε`:噪声 std 0 → 2.0 时,CEM 报出的观测最优被 ε 抬到
  128.2830(虚高,超过无噪声真实上界 122.7466),但其真实收益反而降到 121.6225,
  精英命中率 100% → 75% → 50% → **0%**,即正文「Elite Samples 可能只是局部最优的随机扰动」。
- 正文问题(b)延迟反馈:小时级代理指标(仅人均时长,T_eval=2h)10 轮只花 20 小时但
  综合收益最差(120.0555,GMV 仅 1.6878);天级真指标 3 轮 122.2963、10 轮 122.5518,
  代价是 `T_total = 轮数 × T_eval` = 10 天。
- 正文问题(c)维度灾难:固定 301 次评估,n=1(3 维)时 CEM 与随机搜索撞到同一解
  (优势 0.00%),n=3(9 维)+0.37%,n=5(15 维)+0.72%,同时末轮平均 σ 从 0.0384
  涨到 0.1684 —— 高维下分布压不下去。
- 正文结语实验:同一个 CEM 换目标函数就得到完全不同的权衡 —— max 人均时长得 86.3000s /
  GMV 1.6878;max GMV 得 GMV 2.0957 但人均时长 76.0552(比人工基线还低);
  max 时长+20·GMV 得综合最优 122.7466。印证「如何定义优化目标比选哪种优化算法更重要」。

### § 6.5.1 `ch05_traffic_control/cascading_traffic_control.py`
- 复刻正文伪代码五步(融合 → 初排 → 调控 → 重排 → TopK),200 候选输出 Top-50,
  融合权重 `w_ctr=0.5, w_wt=0.3, w_like=0.2`,Boost 新内容 1.10 / 新作者 1.05 / 电商 1.15。
- Top-50 里 47 个物品名次被改写、5 个原本入榜的普通内容被挤出。
- 分组占比(初排 → 调控后):新内容 16% → 26%(+62.5%)、电商 10% → 10%(占比不变,
  只是池内名次变了)、**新作者 12% → 8%(-33.3%)**、普通内容 62% → 56%;大盘人均真实
  时长 12.0406 → 11.9049 秒(-1.13%)。弱扶持组(1.05)会被强扶持组(1.10/1.15)一起
  挤出去 —— Boost 系数大小不等于实际分配结果。
- Boost 强度扫描给出「兑换汇率」表:系数 2.00/1.50/2.50 时新内容占比 48%、电商 24%,
  普通内容塌到 10%,人均时长 9.1078(-24.36%);新作者组呈非单调
  (12%→10%→8%→10%→16%→18%)。
- 同样 1.10 倍系数在不同分数密度段跨越的名次完全不同:名次段 1-10(分数跨度 0.0551)
  平均只跨 3.00 名,31-60(跨度 0.0445)能跨 15.17 名 —— 乘性 Boost 的实际力度取决于
  融合分的局部密度,这也是工业界更偏好直接用 Quota / 坑位的原因之一。

### § 6.5.2 + § 6.5.4 `ch05_traffic_control/multi_channel_quota.py`
- 四通道(新内容 / 电商 / 创作者扶持 / 普通)各有独立融合权重(如电商池 `w_like=0.6`),
  正文 Quota (10,20,15,55) 按 50/100 等比缩放为 (5,10,7,28),合并输出 Top-50,
  sum Score = 13.9732、人均真实时长 11.6374 秒。
- Quota 把分配写死在候选池构建阶段:电商池只有 23 个候选却拿 10 个坑位,普通池 98 个
  候选只拿 28 个,而普通池入选者人均真实时长 13.0209 秒是电商池 9.6227 秒的 1.35 倍。
- § 6.5.4 带约束优化(`max Σ Score` s.t. `Q_new≥8, Q_commerce≥6, Q_creator≥5`):
  无约束 Top-K 14.3356 但违反电商约束;固定 Quota 硬切 13.9732 **既违反约束又最低
  (-2.33%)**;贪心补配额 14.3073 满足约束且恰好等于通道 DP 的精确最优(gap 0.00%),
  只比无约束上界低 0.20%。
- 供给不足场景:电商供给 12% → 0% 时固定 Quota 的 10 个坑位填不满,实际输出条数
  50 → 40,sum Score 13.9732 → 11.7532;人均真实时长反而从 11.6374 升到 12.3935
  (被浪费的坑位本来装的是低质内容,少发比乱发好,但整页流量白损失 10 条)。
- 动态 Quota `Q_t = f(S_user, S_Content, S_Platform)` 10 片闭环:并非处处占优,
  供给充足时(t=1、8、9、10)比固定 Quota 低 1%~3%;收益全部来自供给枯竭的
  t=5(+7.44%)与 t=6(+15.16%),累计 135.2568 → 138.9651(**+2.74%**)。

### § 6.5.5 `ch05_traffic_control/guarantee_delivery_force_insert.py`
- `max Σ Score s.t. Exposure_target ≥ Q_target`,200 候选含 16 个白名单,Top-50,Q_target=6。
- 四类实现的单刷结果完全一致:无保量只自然拿到 2 条(达成率 33%),强插置顶 / 预留固定
  坑位 / 加性加价 λ=0.1084 / 乘性加价 λ=0.4791 都拿到 6 条(100%),sum Score 全部
  18.8866 → 18.4812(**-2.15%**),都挤出 4 条普通内容 —— 在 `Q_target ≪ K` 的单刷场景
  下「补齐缺口 + 从尾部挤出」就是该约束的精确最优解,三种写法只是同一个解的不同实现。
  差别在可控性:λ 是连续旋钮,能按投放进度平滑调节。
- 强插位置实验:整页 sum Score(18.4812)与人均真实时长(12.7669)在五个位置下完全
  相同(整页收益只取决于挤掉了谁),但白名单的加权曝光价值从置顶 4.0147 降到尾插
  1.2842(相差 3.1 倍),置顶把头部 3 坑平均融合分从 0.4902 压到 0.2349(-52%);
  pos≥9 后头部已不受影响 —— 这就是工业上「不进前 N 坑」约束的依据。
- 24 时间片 pacing(日目标 600 条):uniform 均摊 602 条 / 100.3% / 代价 -1.42%;
  **ASAP 前置抢量 710 条 / 118.3% / -3.78%(最差,超投部分的损失全是白付)**;
  闭环动态 λ 617 条 / 102.8% / -1.58%。闭环的 λ 确实跟随进度差:t=0..6 落后
  (1.0% vs 应完成 1.7%)时 λ 从 0.0051 抬到 0.0519,t=12 超前(48.8% vs 37.3%)后回落。
  本仿真流量曲线已知且平稳,故 uniform 恰好最优;闭环的价值在于流量不可预知时无需
  事先拍死每片名额。
- Q_target 边际代价曲线:Q=2 完全免费(0.00%,模型自己就给了 2 条),Q=6 -2.15%,
  Q=12 -6.75%,Q=16(整池全曝光)-12.07%;「本档新增代价」从 -1.03% 递增到 -5.31%
  (后续被挤掉的不再是尾部而是中部内容);Q=20 超过白名单池规模 16,约束直接不可行。

## 实现约定

1. **一文件一主题、互不 import**:每个 `.py` 自包含,可单独 `python3 <file>` 运行;
   文件顶部 docstring 用中文写明对应的正文章节、实现内容与关键公式。
2. **固定随机种子**:`if __name__ == "__main__":` 块里统一 `random.seed(42)`,
   用到 numpy / torch 时追加 `np.random.seed(42)` / `torch.manual_seed(42)`。
3. **只用合成数据**:不联网、不读取任何本地数据集、不加载预训练权重;
   所有分布参数(正样本率、时长长尾、金额分布、Quota 等)都按正文给出的量级设定。
4. **只打印数值表格**:不使用 matplotlib,所有「可视化」都是对齐的数值表 + 一行
   `观察:` / `结论:` 文字,且文字里的每个数字都来自同一次运行的真实输出。
5. **以正文为准**:公式符号、伪代码步骤、参数取值范围(如 CEM 的 ρ∈[0.05,0.2]、
   乘法公式的 `(β+α·p)^γ`、Quota (10,20,15,55))一律照抄正文;与论文原版实现有差异时
   优先服从正文,并在要点里注明(例如正文的保量只说「直接插入」,本目录额外补了
   强插位置对比表;正文 Quota 是 100 坑位,本目录等比缩放到 50 坑位)。
6. **mock 组件显式标注**:所有假的在线环境、RPC、存储、流量曲线、竞价对手等组件在
   docstring 里标 `[MOCK]`,避免被当成可直接上线的实现。
7. **运行开销可控**:`torch.set_num_threads(1)`,合成数据规模与 epoch 数都经过裁剪,
   每个脚本在普通 CPU 笔记本上数秒内完成。

## 正文涉及的方法与论文名称

下表只列出正文中出现的方法名称,不附加未经核实的作者 / 年份 / 会议信息:

| 章节 | 正文提到的方法 |
| --- | --- |
| § 6.2 | Learning to Rank(Pointwise / Pairwise / Listwise)、RankNet、LambdaRank、ListNet、BPR |
| § 6.3.1 | 时长回归 / 对数回归 / 分桶分类 / 序回归(Ordinal Regression) |
| § 6.3.4 | ESMM(Entire Space Multi-Task Model)、ESCM² |
| § 6.3.5 | Shared-Bottom、MMoE、PLE、AITM(Adaptive Information Transfer Multi-task) |
| § 6.4.3 | CEM(Cross-Entropy Method)、贝叶斯优化、强化学习、LLM Agent 寻优 |
| § 6.5 | 动态 Boost、Quota 控制、保量(Guarantee Delivery)、强插 |
