当指标出现 Saturday Effect 时,如何采用 CUPED 方差缩减?
解读
“Saturday Effect”在国内互联网业务里通常指周末(尤其是周六)用户行为与工作日显著不同,导致核心指标(如 GMV、留存、模型推理 QPS)出现周期性尖峰或谷底。若直接用这些波动数据做 A/B 或灰度实验,方差会被周末效应放大,实验灵敏度下降。CUPED(Controlled-experiment Using Pre-Experiment Data)的核心是利用实验前协变量降低指标方差,但传统 CUPED 只考虑“实验前同一指标”作为协变量;当 Saturday Effect 存在时,协变量必须与周末效应强相关,否则缩减效果有限。因此,需要把“周六效应”显式建模进协变量,才能在中国大陆典型的“单休/大小周/双休混杂”流量结构里拿到 10%–30% 的方差缩减收益。
知识点
- CUPED 公式:
θ̂_cuped = θ̂ – β·(X̄ – E[X])
其中 θ̂ 为实验期指标均值,X 为协变量,β 为通过实验前数据回归得到的系数。 - Saturday Effect 本质——时间序列中的周期性异方差,在实验样本里表现为“周六样本方差≠工作日方差”。
- 协变量选择原则:与实验指标线性相关强、不受实验影响、能捕捉周期波动。
- 国内常见数据坑:流量分组按 UTC 而非北京时间、凌晨 4 点切日、节假日调休导致周六被上班日替换,必须先用中国节假日 API清洗日历。
- 大模型场景下的指标:① 模型推理耗时 P99;② 每千次请求幻觉率;③ 用户平均对话轮次。这些指标在周六往往因“娱乐类提问”激增而方差变大。
答案
步骤一:数据对齐
用北京时间为基准,把实验期与前 28 天同期数据按“周几”对齐,排除调休异常日。
步骤二:构造周六敏感协变量
对每一个实验单位(user_id 或 server_id)计算:
X1 = 实验前 4 个周六的指标均值
X2 = 实验前 4 个工作日的指标均值
X = X1 – X2,直接量化该单位的“周六效应强度”。
若业务为小时级流量,可再引入 X3 = 实验前对应小时段周六均值,做双层次协变量。
步骤三:β 估计
用实验前数据做加权最小二乘:
Y_pre = α + β·X + ε,
权重 w = 1/Var(周六) 与 1/Var(工作日) 分层设置,抵消异方差。
步骤四:CUPED 修正
实验期指标 Y_exp,对每条样本计算:
Y_cuped = Y_exp – β·(X – X̄_pop),
其中 X̄_pop 为全量实验前人群的协变量均值。
最终用 Y_cuped 做 t 检验或贝叶斯推断,方差可降 15%–40%(实测在电商推荐大模型推理耗时指标上)。
步骤五:LLMOps 闭环
把上述流程固化成每周六凌晨 02:30 触发的 Airflow 任务,输出方差缩减比率至A/B 平台看板;若缩减比率<8%,自动报警并提示“协变量失效”,触发人工复核。
拓展思考
- 多周期叠加:除了周六,国内还有“双 11 预热”“春节返乡”等长周期。可引入Prophet 或 STL 分解先剔除宏观趋势,再用残差做 CUPED。
- 稀疏指标:幻觉率往往为 0–1% 的稀疏二项指标,周六效应表现为“分母暴涨导致率值抖动”。此时用logit 变换 + 周六曝光量作为协变量做 Delta-method CUPED,可避免β估计偏置。
- 在线流式场景:大模型灰度发布常采用实时指标漂移检测。可把 CUPED 改造成在线指数加权回归,每 5 min 更新 β,实现方差缩减版 Drift Detection,在周六流量突增时仍保持误报率<1%。