#55 A/B实验 中等

A/B 实验为什么不能天天偷看显著性?新奇效应和残留效应怎么处理?

偷看 p 值第一类错误新奇效应残留效应观察窗

🎯 考察意图

考察候选人会不会把实验当成「事先锁定窗口的一次决策」,而不是每天刷 p 值等到显著再全量。要讲清偷看膨胀第一类错误、新奇效应把短期当长期、残留效应污染下一轮对照。只背「p<0.05」却说不清观察窗、功效和冷却期,这题就浅了。

📐 回答框架

  1. 先锁决策契约:主指标、护栏、MDE、样本量、观察窗、通过/失败规则,开实验前写进文档。
  2. 偷看:每天看显著性等于多次检验,假阳性被抬高;到点看一次,中途只看健康度与 SRM。
  3. 新奇效应:上线新鲜感让前几天指标跳,不等于长期价值;拉长窗口或丢掉学习期再估。
  4. 残留效应:上一实验的处理还在用户身上,下一轮对照不干净;要冷却、重新随机或换新流量。
  5. 收口:锁窗口、不拿最低 p 值当结论、护栏同步看、轮次之间留冷却。

💬 参考答案(口述版)

一句话:实验是一次事先锁定的决策,不是每天刷 p 值的监控大盘。偷看会把假阳性刷出来,新奇效应会把新鲜感当成效果,残留效应会把上一轮的处理带进下一轮对照。

先把契约钉死,再谈显著。 开实验前写清:主体(用户/设备/店铺)、主指标、护栏、最小可检测效应、计划样本量、观察窗(例如 14 天)、通过规则(主指标到点显著且护栏不破)。样本量按窗口末的一次检验来算,不是按「哪天先显著」。中途看板只看健康度:分流比、SRM、延迟、客诉、空指标,不拿日更 p 值做全量决策。

为什么不能天天偷看。 每多看一次「现在显著了没有」,就多一次检验。在真实无效的实验里,连续 14 天各看一次,至少有一天 p<0.05 的概率远高于 5%。你若「看到显著就停、不显著就再等」,等于在一串检验里挑对你有利的那天,第一类错误被放大。正确做法:① 到观察窗结束看一次;② 必须提前停(事故、SRM、护栏击穿)按「作废或降级」,不当作成功;③ 真要连续监控,用序贯检验 / 始终有效的置信区间,并在设计里写好花费函数,不要用普通 t 检验天天扫。面试里一句就够:普通 p 值只对「事先说好的那一次看」负责。

新奇效应:短期跳,不等于长期值。 改了首页、加了红点、换了推荐,用户前 3~7 天会因为「变了」而多点、多逛,之后回落。若窗口只有 3 天,你可能全量了一个只能续三天的皮肤。处理:观察窗至少盖住一个完整使用周期(周产品看满 7 或 14 天);可以设学习期,估效时丢掉前 N 天;上线后用新客切片——没见过旧版的人没有新奇。新奇和「学习效应」相反:后者是用户逐渐会用,指标前期差、后期好,窗口太短会误杀。

残留效应:上一轮还没洗干净。 用户看过实验组的价格、排序、权益,回到对照也不会变回「从未曝光」。上一轮的 cookie、缓存、会员状态、推荐模型也还在。下一轮若用同一批人、同一入口,对照被污染,效应被低估或估反。处理:轮次之间留冷却(长于效果半衰期);能重新随机就重新随机,不要沿用上一轮分组;污染重的(定价、权益)优先用新流量或新用户;同一用户互斥实验要进实验平台的互斥域。

口述例子:推荐位改卡样式,第 2 天 CTR +8%、p=0.01,第 14 天只剩 +1% 且不显著,护栏里人均时长没动——这是偷看 + 新奇,不能全量。下一周又拿同一批用户测排序策略,对照组 CTR 已被上一轮样式带着走,差异被压缩,要冷却或换新用户。

收尾:面试官要听的是「锁一次决策 + 不拿最低 p 值领功 + 窗口盖过新奇 + 轮次之间冷却」。能主动把偷看、新奇、残留分开讲,这题就过了。

🔍 关键词

偷看多次检验新奇效应残留效应观察窗

💭 面试官可能的追问

追问 1:业务天天催「现在显著了吗」,你可以怎么沟通?必须提前停怎么写结论?

把日更看板改成健康度:样本量进度、SRM、护栏、事故,把 p 值藏到观察窗结束或打水印「非正式决策」。跟业务对齐的是「到点一次决策」,不是「哪天先绿」。必须提前停时分两类:护栏击穿 / SRM / 事故 → 作废或回滚,写「未完成设计、不估效」;效果极强且护栏稳、已过预注册的序贯边界 → 可以早停,但结论按序贯方法写,不能事后用普通 t 检验回看那天的 p 值。口头承诺「再看两天」而不改设计,就是偷看。

追问 2:新奇效应和学习效应怎么区分?窗口该开多久?

新奇是「变了所以点」,曲线前高后低;学习是「慢慢会用」,曲线前低后高。画日效应曲线:若前 3 天很高、后面贴回 0,按全窗平均会高估,应丢学习期或加长窗口。窗口至少覆盖一个完整周期(工作日+周末),滞后指标(留存、复购)还要再留观察尾。新客(从未见过旧版)是天然对照:新客上仍在、老客只前几天跳,基本就是新奇。窗口不是越长越好:太长会混进季节和下一轮需求,也更难互斥。

追问 3:残留洗不干净怎么办?和实验互斥、切换回滚怎么配合?

先判断残留载体:客户端缓存、券资格、价格记忆、模型特征、运营话术。能过期的设 TTL 再开下一轮;不能过期的(已购权益)把这批人从下一轮排除,或只在新用户上测。互斥域保证同一用户不同时进冲突实验,但不代替冷却——互斥结束仍可能带着旧处理。全量回滚后也要留观察:线上已是对照,但用户记忆还在,立刻反转实验会把残留当成负向效果。实在洗不掉就换入口或换新队列,不要在脏对照上硬估。

⚠️ 常见踩坑

  • 每天看 p 值,显著就全量、不显著就再等,把假阳性当成胜利
  • 窗口只有两三天,把新奇带来的 CTR 跳当成长效
  • 上一轮刚全量或刚回滚,同一批用户立刻开下一轮,对照已被污染
  • 提前停了却用普通 t 检验回写结论,不声明作废或序贯规则

🧠 记忆锚点

实验只对事先锁定的那一次看负责;不要天天刷 p 值,窗口要盖过新奇,轮次之间要冷却残留。