第4章 实验单元与分流策略

4.1 核心概念定义

实验单元是分流的最小原子,决定了同一实体在不同实验组之间的隔离边界。分流策略则规定了如何将实验单元均匀、可复现地分配到不同实验组。本章围绕三种粒度(用户、会话、事件)、两种随机化方法(桶分流、哈希分流)以及分层互斥规则展开SOP化操作指引。

实验单元与分流策略决策流程 实验单元与分流策略决策流程 选择实验单元粒度 用户粒度 会话粒度 事件粒度 选择随机化方法 桶分流 哈希分流 配置分流层与互斥规则 决策准则 长期用户行为实验→用户粒度 | 短期交互实验→会话粒度 | 后端算法实验→事件粒度 大规模实验优先使用哈希分流 | 同层实验必须互斥,不同层实验可叠加

4.2 适用场景

  • 用户粒度:需要评估长期用户行为变化的实验,如UI改版、推荐算法、会员权益调整;要求同一用户在整个实验周期内始终处于同一分组。
  • 会话粒度:每次访问独立生效的短期交互实验,如弹窗策略、临时促销、新用户引导流程;同一用户的不同会话可进入不同组。
  • 事件粒度:后端算法或模型在线对比实验,如排序模型、广告召回、价格计算;每次请求/事件独立分流,不追踪跨事件一致性。
  • 桶分流:预定义分桶数量且实验长期稳定运行,适合用户粒度实验。
  • 哈希分流:实验启动/结束频繁、需要灵活调整分流比例,适合会话粒度和事件粒度实验。
  • 分流层与互斥规则:当多个实验同时运行时,需要避免实验间相互干扰,保证各组独立性和结果可信度。

4.3 前置条件

  1. 已明确实验的核心指标和假设,并确定最小样本量要求。
  2. 已梳理用户/会话/事件的数据模型及唯一标识(user_id、session_id、event_id)。
  3. 已确认实验周期:长期实验(≥7天)优先考虑用户粒度;短期实验(数小时~3天)可使用会话或事件粒度。
  4. 已统计实验覆盖域的日均用户量、会话量、事件量,确保分流后各组样本量满足显著性要求。
  5. 已完成分层架构设计,明确当前实验属于哪一分流层,以及同层是否存在其他互斥实验。

4.4 操作步骤

步骤动作详细说明输出/检查点
1确定实验单元粒度根据实验目标和周期选择粒度。长期用户行为→用户粒度;短期交互→会话粒度;后端算法→事件粒度。实验设计文档中明确标注粒度类型及理由
2选择随机化方法用户粒度推荐桶分流;会话/事件粒度推荐哈希分流。大流量实验(日均用户>10万)优先使用哈希分流。随机化方法决策记录
3实现分流逻辑编写分流函数,确保同一粒度实体始终映射到同一分组。使用一致性哈希或固定桶映射。分流函数代码 + 单元测试
4配置分流层按业务域划分分层(如推荐层、UI层、策略层),每层独立分配流量。分层配置文件
5设置互斥规则同层实验强制互斥:配置互斥组ID,确保同一用户在同一层只进入一个实验。互斥规则配置表
6分流均匀性验证运行小流量预测试,检查各实验组样本量差异是否<5%,且关键指标无显著差异。均匀性检验报告

4.5 输入输出物

类别输入物输出物
文档实验需求文档、数据Schema、分层架构图实验设计文档(含粒度、方法、分层、互斥规则)
配置用户/会话/事件标识字段列表分流配置文件(JSON/YAML)、互斥规则表
代码基础分流函数库实验专用分流模块 + 单元测试
数据历史流量日志(用于模拟分流)分流均匀性验证数据 + 检验报告

4.6 责任边界

  • 产品经理:确定实验单元粒度,提供实验目标和周期,审批分层归属。
  • 数据工程师:实现并部署分流逻辑,确保分流函数性能与一致性;配置分层与互斥规则。
  • 数据分析师:验证分流均匀性,出具随机化检验报告;监控实验期间分流状态。
  • QA 工程师:编写分流模块的自动化测试用例,覆盖边界条件和异常场景。

4.7 记录材料

  1. 实验设计文档:包含粒度选择依据、随机化方法、分层归属、互斥实验清单。
  2. 分流配置记录:保存每次实验的分流配置快照(JSON/YAML),便于复盘回溯。
  3. 均匀性检验日志:记录预测试阶段的样本量分布、指标分布、P值。
  4. 变更历史:记录分流逻辑、分层配置、互斥规则的每次变更时间与操作人。
📌 最佳实践:哈希分流时使用 hash(user_id + ":" + experiment_id) % N 确保同一用户在不同实验中独立均匀分布。桶分流建议预生成1000个桶,避免因桶数过少导致分流不均衡。

4.8 异常处理

异常类型现象原因处理方式
分流不均衡各组样本量差异 >5%哈希函数分布不均匀;桶数量过少更换均匀性更好的哈希算法(如MurmurHash),或增加桶数量至1000以上
用户跨组同一用户在实验期间进入不同组分流键使用了非持久化标识;缓存失效固定使用持久化user_id作为分流键;增加本地缓存
分层冲突同一用户在同一层进入多个实验互斥规则未正确配置或遗漏检查分层配置文件,添加互斥组ID;加强发布前审核
实验单元不一致分析单元与分流单元不匹配粒度选择错误或数据收集逻辑偏差统一分流单元与分析单元;在实验设计阶段对齐
⚠️ 常见陷阱:不要将用户粒度实验与会话粒度实验放在同一分流层,会导致用户在不同会话中进入不同实验组,破坏用户粒度的一致性。必须通过分层隔离。

4.9 验收标准

  1. 分流均匀性:预测试阶段各实验组样本量差异 <5%,且关键指标(如DAU、转化率)无统计学显著差异(P > 0.1)。
  2. 一致性验证:用户粒度实验中,随机抽取1000个用户,其在实验期间所属分组未发生变更的比例 = 100%。
  3. 互斥规则生效:同一分层内的互斥实验中,不存在同一用户同时出现在两个实验组的情况。
  4. 随机化可复现:给定相同的分流键和实验参数,重复执行分流逻辑100次,每次结果一致。
  5. 分层隔离性:不同分层之间的实验分组分布相互独立,无交叉干扰。
🔍 验收检查清单:使用 SELECT experiment_id, group_id, COUNT(DISTINCT user_id) FROM experiment_assign GROUP BY experiment_id, group_id 验证均匀性;使用互斥冲突查询 SELECT user_id, COUNT(DISTINCT experiment_id) FROM experiment_assign WHERE layer_id = X GROUP BY user_id HAVING COUNT(DISTINCT experiment_id) > 1 检测互斥违规。