2. A/B测试基础概念

A/B测试(又称分桶测试、对照实验)是风控网关效果评估的核心方法论。其本质是在同一时间维度下,将流量随机划分为实验组(Treatment)与对照组(Control),分别应用新策略(如新的风控模型、规则阈值)与旧策略(基线),通过对比两组的关键业务指标差异,量化新策略的真实效果。

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

在风控网关场景中,A/B测试遵循以下严格定义:

  • 随机化:每个请求(或用户)以概率均等的方式进入实验组或对照组,消除系统偏差。
  • 对照:对照组必须保持与线上生产环境完全一致的策略,作为效果比较的基准。
  • 单一变量:实验组仅改变待验证的单一策略(如模型版本、规则顺序、阈值参数),其他环境配置保持不变。
  • 前置指标:在实验开始前,必须明确定义核心评估指标(如通过率、误杀率、逾期率)。
风控网关A/B测试典型场景: 将10%的流量切至新规则引擎(实验组),90%流量保持旧引擎(对照组),观察24小时内的“交易通过率”与“首逾率”变化。
A/B测试基本流程(风控网关) 线上流量入口 对照组(Control) 旧策略 / 基线模型 实验组(Treatment) 新策略 / 待验证模型 统计检验:通过率 / 误杀率差异

2.2 假设检验:从业务问题到统计决策

假设检验是A/B测试的统计内核。我们将业务问题转化为两个互斥的统计假设:

假设类型 符号 含义(以风控通过率为例)
原假设(零假设) H₀ 新策略与旧策略的通过率无显著差异(μ新 = μ旧)
备择假设 H₁ 新策略与旧策略的通过率存在显著差异(μ新 ≠ μ旧)

检验过程遵循“反证法”思想:假设H₀为真,计算在当前样本下观察到如此极端(或更极端)差异的概率——即p值。若p值小于预先设定的显著性水平α(通常取0.05),则拒绝H₀,认为差异具有统计显著性。

风控实践提示: 在风控网关中,α的选取需权衡“误拒风险”(Type I Error)。若α=0.05,意味着即使新旧策略无差异,仍有5%的概率错误地认为新策略有效。对于高敏感场景(如资金损失),建议将α收紧至0.01。

2.3 统计显著性:不是“看起来有差异”就够了

统计显著性(Statistical Significance)回答的是:观察到的差异是否真实存在,还是由随机波动导致。它依赖于三个核心因素:

  • 效应量(Effect Size):实验组与对照组指标的绝对差值。效应量越大,越容易被检测为显著。
  • 样本量(Sample Size):进入实验的请求数量。样本量越大,统计检验的“分辨率”越高。
  • 方差(Variance):指标本身的波动程度。风控指标(如逾期率)通常方差较大,需要更大样本量。

显著性水平α与统计功效(1-β)共同决定了实验的可靠性。下表总结了关键参数:

参数 符号 典型值 含义
显著性水平 α 0.05 / 0.01 允许犯“假阳性”错误的概率(误认为有效)
统计功效 1-β 0.80 / 0.90 当真实差异存在时,能正确检测出显著性的概率
最小效应量 δ 0.1% ~ 1% 业务上认为有意义的最小指标变化(如通过率提升0.5%)

2.4 最小样本量:实验需要跑多久?

最小样本量(Minimum Sample Size)是指在给定α、功效和效应量的前提下,为了获得可靠的统计结论,每组至少需要的样本数量。对于风控网关常见的二分类指标(通过/拒绝、逾期/正常),可使用以下公式估算:

# 最小样本量估算公式(两组等样本量)
# n = (Z_α/2 + Z_β)² * [p₁(1-p₁) + p₂(1-p₂)] / (p₁ - p₂)²

# Python 示例
from scipy import stats

alpha = 0.05          # 显著性水平
beta = 0.20           # 1 - 统计功效
p_control = 0.85      # 对照组通过率
p_treatment = 0.86    # 实验组预期通过率(提升1%)

Z_alpha = stats.norm.ppf(1 - alpha/2)
Z_beta = stats.norm.ppf(1 - beta)

n = (Z_alpha + Z_beta)**2 * (p_control*(1-p_control) + p_treatment*(1-p_treatment)) / (p_control - p_treatment)**2
print(f"每组最小样本量: {int(n)}")
常见误区: 最小样本量是“每组”所需数量,而非总量。若网关日流量为100万,实验组与对照组各需5万样本,则实验仅需运行约半天即可达到统计要求。但若效应量极小(如通过率提升0.1%),样本量需求可能激增至数百万,实验需持续数天。

2.5 置信区间:给出差异的范围

置信区间(Confidence Interval, CI)比单一的p值提供更丰富的信息。它给出了真实效应量可能落入的范围,同时反映了估计的精度。95%置信区间的含义是:如果重复实验100次,其中95次计算出的区间会包含真实的效应量。

对于风控网关的通过率差异(Δ = p新 - p旧),置信区间计算如下:

# 两组率差置信区间(Wald方法)
import numpy as np

n_control = 50000
n_treatment = 50000
p_control = 0.8500
p_treatment = 0.8560

diff = p_treatment - p_control
se = np.sqrt(p_control*(1-p_control)/n_control + p_treatment*(1-p_treatment)/n_treatment)
z = 1.96  # 95%置信水平

ci_lower = diff - z * se
ci_upper = diff + z * se
print(f"通过率差异: {diff:.4f}")
print(f"95%置信区间: [{ci_lower:.4f}, {ci_upper:.4f}]")

解读置信区间时,需关注以下三种情况:

  • 区间完全大于0:新策略显著优于旧策略(通过率提升)。
  • 区间完全小于0:新策略显著劣于旧策略(通过率下降)。
  • 区间包含0:差异不显著,无法拒绝原假设。
置信区间与显著性决策 效应量 = 0(无差异) 显著正向 区间完全 > 0 不显著 区间包含 0 显著负向 区间完全 < 0 决策规则 区间不跨越零线 → 统计显著;区间跨越零线 → 统计不显著
实战要点: 在风控网关A/B测试报告中,应同时报告p值和置信区间。p值告知“是否显著”,置信区间告知“效果有多大以及精度如何”。例如:“新模型使通过率提升0.6%(95% CI: [0.3%, 0.9%], p=0.002)”,比单纯说“p<0.05”更具业务指导价值。