2. A/B测试基础概念

A/B测试(又称分桶测试)是风控网关策略迭代中最严谨的因果推断工具。其核心思想是:在保持其他条件一致的前提下,将流量随机分为实验组(B组)与对照组(A组),分别应用新策略与旧策略,通过对比两组的关键指标差异来判断新策略是否显著优于旧策略。

核心原则: 单变量控制、随机分流、统计推断。任何偏离这三条原则的“A/B测试”都可能沦为有偏对比。

2.1 A/B测试的定义与核心要素

在风控网关场景下,A/B测试通常包含以下五个要素:

要素 说明 风控网关示例
对照组(A组) 应用当前线上策略的流量分组 现有规则引擎 + 模型A
实验组(B组) 应用待验证新策略的流量分组 现有规则引擎 + 模型B(新模型)
分流机制 将流量随机、均匀地分配到各组 用户ID哈希取模、设备指纹随机分桶
评价指标 衡量策略效果的量化标准 通过率、误杀率、逾期率、响应耗时
统计推断 判断组间差异是否由策略引起 p值、置信区间、功效分析
风控网关A/B测试分流架构 入口流量 随机分流器 对照组(A组) 旧策略(线上版本) 实验组(B组) 新策略(待验证) 指标对比 → 统计推断 通过率 / 误杀率 / 逾期率

2.2 假设检验原理

A/B测试的统计推断建立在假设检验框架之上。我们提出两个互斥的假设:

  • 原假设 H₀: 新策略与旧策略的效果无差异(μB − μA = 0)
  • 备择假设 H₁: 新策略与旧策略的效果存在显著差异(μB − μA ≠ 0)

通过收集样本数据,计算检验统计量,判断是否拒绝原假设。在风控场景中,常见的检验类型包括:

指标类型 常用检验方法 适用场景
二分类指标(通过/拒绝) Z检验(比例检验) 通过率、误杀率、逾期率
连续型指标(耗时/分数) t检验(独立样本) 响应耗时、模型评分
率比指标 卡方检验 不同策略下的拒绝分布
实战提示: 风控网关的通过率、误杀率属于二分类比例指标,通常使用双比例Z检验。如果样本量较小(n < 30),建议使用Fisher精确检验替代。

2.3 统计显著性(p值与置信区间)

统计显著性回答一个关键问题:观察到的组间差异是真实存在的,还是由随机波动造成的?

  • p值: 在原假设为真的前提下,观察到当前结果(或更极端结果)的概率。p值越小,拒绝原假设的证据越充分。
  • 显著性水平 α: 预先设定的阈值,通常取 0.05 或 0.01。当 p < α 时,认为结果具有统计显著性。
  • 置信区间: 给出效应量的估计范围。95%置信区间表示:重复实验100次,有95次的真实效应量会落在这个区间内。
假设检验决策矩阵 正确接受 H₀ 新策略无显著差异,不切换 (真阴性) 第一类错误(α) 误认为新策略有效 (假阳性) 第二类错误(β) 漏掉真正有效的新策略 (假阴性) 正确拒绝 H₀ 新策略显著有效,切换 (真阳性 / 统计功效 1−β) 实际真相 统计决策
风控陷阱: 不要只看p值是否小于0.05。当样本量极大时(如百万级流量),即使效应量极小(如通过率提升0.01%),p值也可能显著。此时应结合效应量(Effect Size)和业务意义综合判断。

2.4 最小样本量计算

最小样本量决定了A/B测试需要积累多少流量才能获得可靠的统计结论。样本量不足会导致检验功效过低,无法检测出真实存在的差异;样本量过大则浪费流量资源,延长实验周期。

计算最小样本量需要四个参数:

参数 符号 说明 风控典型取值
显著性水平 α 犯第一类错误的概率 0.05(双侧)
统计功效 1−β 正确拒绝原假设的概率 0.80 或 0.90
基线转化率 p₁ 对照组当前指标值 如通过率 65%
最小可检测效应 δ 期望检测到的最小绝对差异 如通过率提升 1%

对于二分类比例检验,每组所需样本量的近似公式为:

n = (Z_{α/2} + Z_{β})² × [p₁(1−p₁) + p₂(1−p₂)] / (p₂ − p₁)²

其中:
  Z_{α/2} = 1.96(α=0.05,双侧)
  Z_{β}   = 0.84(功效=0.80)
  p₁      = 对照组基线比例
  p₂      = 实验组预期比例(p₁ + δ)

实际计算示例:

场景:风控网关通过率从 65% 提升至 66%(δ=1%)
参数:α=0.05(双侧),功效=0.80

Z_{α/2} = 1.96,Z_{β} = 0.84
p₁ = 0.65,p₂ = 0.66

n = (1.96 + 0.84)² × [0.65×0.35 + 0.66×0.34] / (0.01)²
  = 7.84 × [0.2275 + 0.2244] / 0.0001
  = 7.84 × 0.4519 / 0.0001
  = 7.84 × 4519
  ≈ 35,429

结论:每组至少需要 35,429 个样本,两组共约 70,858 个样本。
工程建议: 在风控网关中,建议使用Python的 statsmodels.stats.proportion.proportion_effectsize 和 tt_ind_solve_power 函数进行精确计算。对于多指标场景,取各指标所需样本量的最大值作为最终实验样本量。

2.5 常见误区与避坑指南

  • 过早停止实验: 未达到最小样本量就下结论,容易受早期随机波动影响。建议设定固定实验周期,或使用序贯检验(Sequential Testing)动态监控。
  • 多重比较问题: 同时观察多个指标(通过率、误杀率、逾期率)时,需对p值进行Bonferroni校正或使用FDR控制,避免因多重比较导致假阳性膨胀。
  • 样本污染: 用户在不同设备或时间段被分到不同组,破坏独立性假设。风控网关应使用稳定的用户标识(如用户ID)进行分桶,确保同一用户始终在同一组。
  • 新奇效应: 新策略上线初期可能因用户行为改变而产生短期波动。建议设置预热期(Warm-up Period),待系统稳定后再开始统计。
最佳实践: 在风控网关A/B测试中,建议同时运行反向指标监控。例如,当新策略提升通过率时,需同步监控逾期率是否恶化。只有正向指标显著提升且反向指标不显著恶化时,才考虑全量切换。