2. 试验基础概念:对照组(Champion)与实验组(Challenger)的定义,随机化与分层抽样的区别
2.1 对照组(Champion)与实验组(Challenger)
在阈值分层试验中,Champion 和 Challenger 是试验设计的两个核心角色,分别代表当前生产环境和待验证的新策略。
| 角色 | 英文名称 | 定义 | 典型场景 |
|---|---|---|---|
| 对照组 | Champion | 当前线上运行的默认策略或模型,作为性能基准 | 现有推荐算法、风控规则、定价模型 |
| 实验组 | Challenger | 待验证的新策略或模型,与 Champion 进行对比 | 新特征工程、阈值调整、模型迭代版本 |
命名来源:Champion/Challenger 术语源自竞技体育中的“卫冕冠军 vs 挑战者”。在数据科学中,Champion 是当前最优解,Challenger 试图击败它。只有当 Challenger 在统计上显著优于 Champion 时,才会发生“冠军更替”。
2.2 随机化:试验的黄金标准
随机化 是指将试验单元(用户、请求、设备等)以纯随机方式分配到 Champion 组或 Challenger 组。其核心目标是消除选择偏差,确保两组在试验开始前在所有可观测和不可观测特征上具有可比性。
- 核心原则:每个试验单元被分配到 Champion 或 Challenger 的概率相等,且分配结果独立于任何其他因素。
- 实现方式:通常使用哈希取模(如
hash(user_id) % 100 < 50)或伪随机数生成器。 - 优点:理论最严谨,统计推断简单(可直接使用 t 检验或 Z 检验)。
- 缺点:当样本量较小或关键指标(如用户价值)分布极不均匀时,随机化可能导致两组在关键特征上偶然失衡。
# 简单的随机化分配示例(Python 伪代码)
import hashlib
def assign_group(user_id: str, champion_ratio: float = 0.5) -> str:
hash_val = int(hashlib.md5(user_id.encode()).hexdigest(), 16) % 10000
return "Champion" if hash_val < champion_ratio * 10000 else "Challenger"
2.3 分层抽样:提升敏感度的利器
分层抽样 是在随机化之前,先将总体按一个或多个关键特征(层)划分为互不重叠的子集,然后在每个层内独立进行随机化分配。分层抽样的目的是保证每个层内 Champion 和 Challenger 的样本比例与总体一致,从而减少层间差异带来的方差。
- 分层变量选择:通常选择与核心指标强相关的特征,如用户活跃度、新老客、地域、设备类型等。
- 实现方式:先按分层变量对试验单元分组,再在每个组内执行随机化。
- 优点:降低组间方差,提升统计检验的敏感度(Power);保证关键子群体在两组中的均衡分布。
- 缺点:需要预先知道分层变量;层数过多可能导致某些层内样本过少。
# 分层抽样分配示例(Python 伪代码)
def stratified_assign(user: dict, champion_ratio: float = 0.5) -> str:
# 假设 user 包含 'tier' 字段(高/中/低价值)
tier = user['tier']
# 在每个 tier 内独立进行随机化
hash_val = int(hashlib.md5(user['id'].encode()).hexdigest(), 16) % 10000
return "Champion" if hash_val < champion_ratio * 10000 else "Challenger"
2.4 随机化 vs 分层抽样:核心区别
| 对比维度 | 纯随机化 | 分层抽样 |
|---|---|---|
| 分配前处理 | 无预处理 | 先按分层变量分组 |
| 组间均衡性 | 大数定律保证长期均衡 | 强制保证每层内均衡 |
| 方差控制 | 依赖样本量 | 主动降低层间方差 |
| 适用场景 | 样本量大、分层变量不明确 | 样本量有限、关键分层变量已知 |
| 统计检验 | 标准 t 检验 / Z 检验 | 分层 t 检验 / 回归调整 |
| 实现复杂度 | 低 | 中 |
阈值分层试验中的选择建议:当你的核心指标(如转化率、收入)在不同用户价值层之间差异巨大时,必须使用分层抽样。例如,高价值用户的转化率可能是低价值用户的 10 倍,纯随机化可能导致两组在高价值用户数量上偶然失衡,从而污染试验结果。分层抽样能强制保证每层内 Champion 和 Challenger 的比例一致,是阈值分层试验的标准做法。
2.5 随机化与分层抽样的流程对比
下图展示了两种分配方式的流程差异。左侧为纯随机化,右侧为分层抽样后的随机化。
2.6 阈值分层试验中的实践要点
- 分层变量必须与阈值相关:在阈值分层试验中,分层变量通常就是阈值本身或与阈值强相关的指标(如风险评分、信用分、概率值)。例如,按风险评分将用户分为 0-300、301-600、601-900 三个层。
- 每层内 Champion/Challenger 比例固定:在每个层内,Champion 和 Challenger 的样本分配比例必须保持一致(如 50/50),否则无法区分层效应和策略效应。
- 避免过度分层:如果每层样本量小于 100,统计检验的可靠性会大幅下降。建议每层至少包含 200-500 个样本。
- 分层后的统计检验:使用分层 t 检验或带层固定效应的线性回归,而非简单的独立样本 t 检验,以正确估计处理效应。
常见陷阱:不要将“分层抽样”与“配额抽样”混淆。分层抽样在每个层内进行随机化,而配额抽样只是按比例选取样本,不保证随机性。在阈值分层试验中,必须使用分层随机化,而非配额抽样。