共计 1935 个字符,预计需要花费 5 分钟才能阅读完成。
传统 AB 实验的局限性
在推荐系统效果评估中,我们经常遇到这样的场景:新算法在 AB 测试中点击率提升 5%,但上线后整体收益反而下降。这种情况往往源于样本偏差(sampling bias)——比如实验组用户本身更活跃,或测试期间有季节性活动干扰。

另一个典型案例是价格敏感度测试:当对 VIP 用户和非 VIP 用户采用不同定价策略时,传统 AB 实验会错误地将用户等级差异归因于价格变动本身,这就是典型的混杂变量(confounding variable)干扰问题。
RCT 与观察性研究对比
- 随机对照实验(RCT):通过完全随机分组保证协变量平衡,如临床药物试验
- 观察性研究:利用历史数据进行分析,需处理自选择偏差,如经济学政策评估
反事实推理框架(Counterfactual Framework)的核心问题是:” 如果同一个体同时经历实验组和对照组会发生什么?” 这在现实中无法实现,因此需要因果推断方法构建近似对比。
DoWhy 实战演示
因果图构建
from dowhy import CausalModel
import networkx as nx
# 图 1:包含未观测变量 U 的因果图
dag = nx.DiGraph([('X', 'Y'), ('U', 'X'), ('U', 'Y')])
model = CausalModel(
data=df,
treatment='X',
outcome='Y',
graph=dag.to_dot())
倾向得分匹配
from sklearn.linear_model import LogisticRegression
# 数据预处理
df['ps_score'] = LogisticRegression().fit(df[['age', 'income']],
df['treatment_flag']
).predict_proba(df[['age', 'income']])[:,1]
# 计算 ATE
treated = df[df['treatment_flag']==1]
control = df[df['treatment_flag']==0]
matched_control = control.iloc[
np.argmin(np.abs(control['ps_score'].values -
treated['ps_score'].values.reshape(-1,1)),
axis=1)
]
te = treated['outcome'].mean() - matched_control['outcome'].mean()
敏感性分析
from dowhy.plotter import plot_sensitivity_analysis
# 检验未观测变量需要多大影响才能推翻结论
plot_sensitivity_analysis(
est_ate=0.15,
stderr=0.03,
sensitivity_params={'confounder_influence': 0.1}
)
工程实践关键点
样本量计算
from statsmodels.stats.power import tt_ind_solve_power
# 基于最小可检测效应 (MDE) 计算
required_n = tt_ind_solve_power(
effect_size=0.2, # 期望检测的效应大小
alpha=0.05, # 显著性水平
power=0.8, # 统计功效
ratio=1.0 # 实验组 / 对照组比例
)
多重检验校正
from statsmodels.stats.multitest import multipletests
# Bonferroni 校正
reject, pvals_corrected, _, _ = multipletests(pvals=[0.01, 0.03, 0.005],
alpha=0.05,
method='bonferroni'
)
分组泄露预防方案
- 用户级别哈希分桶(避免同一设备多次进入不同组)
- 特征编码隔离(实验组特征工程代码独立版本控制)
- 数据管道隔离(从日志采集到模型训练全链路分组标记)
避坑指南
辛普森悖论案例:某电商发现整体转化率下降,但各用户分群转化率均提升。经排查发现高价值用户占比实验组显著降低,此时需要:
- 进行分层效应分析
- 使用 CUPED 等方差缩减技术
- 增加用户画像维度监控
开放式思考题
- 当实验流量必须非随机分配时(如地理位置实验),如何设计因果评估方案?
- 在长期效应评估中,如何区分算法效果和用户行为自然变化?
- 对于小样本场景(如冷启动问题),有哪些增强因果推断可靠性的方法?
结语
因果推断不是 AB 实验的替代品,而是增强工具。在实际业务中,我通常采用 ”RCT+ 因果验证 ” 的双重保障策略:先用随机实验获得基准结论,再通过因果方法解释异常现象。这种组合拳在金融风控和内容推荐场景中都取得了不错的效果。
正文完
