3. 分流单元选择:用户级分流、会话级分流、请求级分流的适用场景与陷阱
分流单元(Split Unit)是 A/B 测试中最基础也最容易被忽视的设计决策。它决定了“谁”被随机分配到实验组或对照组。选错分流单元,轻则降低统计功效,重则导致结论完全错误。在模型验证场景中,分流单元的选择直接影响模型效果的归因准确性。
3.1 三种分流单元的核心定义
| 分流单元 | 定义 | 典型粒度 | 随机化对象 |
|---|---|---|---|
| 用户级(User-level) | 以唯一用户 ID 为最小随机化单位 | 一个用户的所有行为 | 用户 ID |
| 会话级(Session-level) | 以一次访问会话为最小随机化单位 | 单次会话内的所有请求 | 会话 ID |
| 请求级(Request-level) | 以单次 API 请求或页面曝光为最小单位 | 单次请求 | 请求 ID / 时间戳 |
3.2 适用场景分析
用户级分流
- 适用场景:模型效果需要长期累积才能体现,如用户留存模型、生命周期价值(LTV)预测模型、推荐系统冷启动策略。
- 优势:同一用户始终处于同一实验组,避免用户在不同组间“穿越”导致的污染;统计独立性较好,便于使用标准 t 检验或卡方检验。
- 典型陷阱:用户 ID 的获取可能延迟(如未登录用户),导致大量流量无法分流;用户量不足时,实验周期会显著拉长。
会话级分流
- 适用场景:模型效果在单次会话内即可评估,如搜索排序模型、广告 CTR 预估模型、实时对话机器人。
- 优势:比用户级更灵敏,能更快收集到足够样本;适合高频交互场景。
- 典型陷阱:同一用户的不同会话可能被分到不同组,造成用户感知不一致;会话边界定义模糊(如用户离开 30 分钟算新会话?),容易引入偏差。
请求级分流
- 适用场景:模型推理延迟极低、流量巨大且用户无感知的场景,如广告竞价排名、实时风控模型、图片滤镜效果。
- 优势:样本量增长最快,实验周期最短;适合对延迟极度敏感的线上模型验证。
- 典型陷阱:同一用户在同一会话内可能看到不同模型结果,导致用户体验割裂;请求间存在强相关性,违反独立同分布(i.i.d.)假设,需使用聚类稳健标准误修正。
关键原则:分流单元的选择应遵循“最小干扰原则”——在保证实验结论有效的前提下,选择粒度最粗的单元。通常优先级为:用户级 > 会话级 > 请求级。
3.3 分流单元选择决策流程
3.4 常见陷阱与避坑指南
| 陷阱 | 表现 | 后果 | 解决方案 |
|---|---|---|---|
| 单元错配 | 分析单元(如请求)与分流单元(如用户)不一致 | 标准误被严重低估,假阳性率飙升 | 使用聚类标准误(Cluster-robust SE),或按分流单元聚合指标 |
| 用户穿越 | 同一用户在不同时间被分到不同组 | 模型效果被稀释,组间差异不显著 | 使用用户级分流;若必须用会话级,则记录用户首次分组并固定 |
| 会话边界模糊 | 会话超时时间设置不合理 | 同一用户行为被错误拆成多个会话,引入相关性 | 统一会话超时标准(通常 30 分钟),并在实验前做敏感性分析 |
| 请求级污染 | 同一页面多个请求被分到不同组 | 用户看到混合结果,体验割裂,模型效果无法归因 | 对同一页面使用“页面级”哈希,确保同页请求进入同一组 |
| 样本量幻觉 | 请求级分流获得大量样本,误以为统计功效足够 | 样本间强相关导致有效样本量远小于实际样本量 | 计算有效样本量(Effective Sample Size),或使用 Bootstrap 重抽样 |
⚠️ 高风险提示:在模型验证中,最常见的错误是“用请求级分流分析用户级指标”。例如,用请求级分流测试推荐模型,却用“用户次日留存”作为核心指标。此时分流单元与分析单元不匹配,结论几乎不可信。务必确保:分析单元 ≥ 分流单元。
3.5 分流单元与统计方法对照
| 分流单元 | 推荐检验方法 | 标准误修正 | 最小样本量要求 |
|---|---|---|---|
| 用户级 | 独立样本 t 检验 / 卡方检验 | 无需修正 | 每组 ≥ 1000 用户 |
| 会话级 | Welch t 检验 / 广义线性模型 | 按用户 ID 聚类 | 每组 ≥ 5000 会话 |
| 请求级 | 广义估计方程(GEE)/ 混合效应模型 | 按会话或用户双重聚类 | 每组 ≥ 50000 请求 |
💡 实战建议:在模型上线前的 A/B 测试中,优先使用用户级分流。如果流量不足,再考虑会话级。请求级分流仅适用于以下条件同时满足:① 用户对模型输出无感知;② 模型效果在单次请求内即可评估;③ 有成熟的聚类标准误计算方案。
3.6 案例:推荐模型验证中的分流单元选择
某短视频平台要验证新推荐模型对“用户人均观看时长”的影响。团队最初使用请求级分流,发现新模型显著提升 3% 的观看时长。但上线全量后,指标反而下降 1%。
根因分析:
- 请求级分流导致同一用户在不同请求下看到新旧模型混合推荐,用户感知混乱,频繁刷走。
- 人均观看时长是用户级指标,但分流单元是请求级,单元错配导致标准误被低估,假阳性。
修正方案:
- 将分流单元改为用户级,确保同一用户始终看到同一模型。
- 重新运行实验,新模型对人均观看时长的提升变为 0.5%,且不显著(p=0.23)。
- 进一步分析发现,新模型仅在“新用户”子群中有显著正向效果,最终采用分群上线策略。
教训:分流单元的选择不是技术细节,而是实验设计的核心决策。错误的单元选择会直接导致错误的业务决策。在模型验证中,宁可牺牲一些样本量,也要保证分流单元与分析单元的一致性。