#41 A/B实验 中等

A/B 实验里什么是 SRM?发现分流比例和设计不一致,你会怎么排查?

SRM分流哈希卡方检验实验可信度

🎯 考察意图

SRM 是实验可信度的保险丝。这题考的不是会背「样本比例不匹配」,而是候选人知不知道:分流一歪,随机化假设就坏了,后面的 p 值、提升、分段都不能当因果用。面试官要听你怎么验、怎么查、怎么停,而不是人数差了一点还继续讲显著。

📐 回答框架

  1. 先定义:设计分流比 vs 实际进入分析的人数比,对不上就是 SRM。
  2. 再说危害:随机化失效,组间不再期望可比,指标差可能来自分流偏差而不是策略。
  3. 检测:卡方拟合优度;第一天和结束都看;触发型实验要拆「分到」和「曝光」。
  4. 排查按链路:哈希/桶 → 过滤与触发 → 多层互斥 → 日志与 Bot;确认后停分析、修分流、重开,禁止加权硬出结论。

💬 参考答案(口述版)

一句话:SRM 就是实际人数比和设计分流比对不上。一对不上,先当实验坏了去查分流,而不是继续解读转化率。

为什么致命。 A/B 的因果靠随机化:每个用户进哪一组的概率已知,两组协变量在期望上平衡。人数比歪了,说明进组机制和你以为的不一样——某类用户(新客、某渠道、某机型、爬虫)更容易进某一组。这时「唯一差别是策略」不成立,显著可能只是人群结构差。

怎么验。 设计比例已知(如 50/50),观察到每组人数 n,总人数 N。拟合优度:
χ² = Σ (O − E)² / E,其中 E = N × 设计比例。
业界常用阈值比指标的 0.05 更严(常见 p < 0.001):分流是确定性机制,真随机不该长期偏。大样本下用 0.05 会天天误报,用得太松又放过高偏。SQL 先数「分配到的人」,不要先数曝光:

-- 按实验单元去重后看份额;设计 50/50
SELECT
  exp_group,
  COUNT(DISTINCT user_id) AS n,
  COUNT(DISTINCT user_id) * 1.0
    / SUM(COUNT(DISTINCT user_id)) OVER () AS share
FROM exp_assign
WHERE exp_id = 'pay_btn_v2'
  AND assign_dt BETWEEN '2026-09-01' AND '2026-09-14'
GROUP BY 1;

把 n 和期望丢进卡方。第一天就要看,不要跑完两周才发现整段作废。

常见根因,按链路从上游查:
1. 哈希与分桶:salt 改了、桶边界含糊、登录前后 user_id 会变、字符串哈希不均匀。
2. 进入条件 / 触发偏倚:分析过滤了「完成曝光」,而曝光本身受策略影响(实验组按钮更大更容易被看见),表观人数也会歪。
3. 多层 / 互斥域:两个实验抢同一层,或互斥把某组流量吃掉。
4. 管道与计数:客户端丢实验组日志、重定向只打一组、Bot 打满某一组、App 缓存旧分组;分子按曝光、分母按分配,实验单元不一致。

怎么处理: 报警即停解读,结论标「SRM,不可信」。修根因后开新实验。日志晚到可以等水位再验一次;第一天就歪且持续,多半是哈希或过滤,不是迟到。

口述收尾:先报「设计比 vs 实际比 + 卡方」,再说「SRM 是作废灯」,主动把分配人数和曝光人数分开。面试官要的是你会拔保险丝,不是在歪掉的天平上读数。

🔍 关键词

SRM设计分流比卡方拟合触发偏倚作废重开

💭 面试官可能的追问

追问 1:卡方怎么算?阈值为什么常用 0.001 而不是 0.05?

两组 50/50 时 E=N/2,χ² = 2*(n_A−N/2)² / (N/2) = 4*(n_A−N/2)² / N,自由度 1。N=10 万、50/50,差两三千人就已经非常不像随机。分流是工程机制,假阳性要极低,所以阈值比指标假设检验更严。反过来,实验刚启动只有几百人时不要急着判死刑,看累计是否向设计比收敛;持续偏离再停。

追问 2:分配人数 50/50 正常,但曝光人数差很多,还能分析吗?

分配 SRM 通过只说明「进组概率」没坏。曝光差可能是策略本身(按钮更大、弹窗更勤)——这是处理效应,不是分流事故;分析要用 ITT(按分配),不要按「看见了才进样本」,否则触发偏倚会把效应夸大。若业务问题就是曝光率,把它当主指标或过程指标,而不是把未曝光的人从分母里扔走。分配歪了才是作废;曝光差要解释,不一定作废。

追问 3:已经 SRM 了,能不能用倾向得分 / 逆概率加权把样本救回来?

生产结论上不要。SRM 说明你没观测到的进组机制已经和策略缠在一起,加权只能平衡你能列出来的协变量,列不出的(爬虫、某版本丢日志、某渠道跳转失败)仍然偏。加权还把方差和口径讲不清楚。正确动作是修哈希/过滤、切新 salt、重开实验。探索性分析可以标注「已 SRM、仅供找根因」,不能写进上线决策。

⚠️ 常见踩坑

  • 不做 SRM 检查,直接看转化率显著就准备全量
  • 用指标的 α=0.05 当 SRM 阈值:大样本几乎天天响,或反过来太松放过高偏
  • 把曝光人数不均当成分配 SRM,或反过来把触发偏倚当成「策略有效」
  • 发现比例不对仍做 IPW 加权,继续出上线结论

🧠 记忆锚点

分流比例对不上就先别信因果;SRM 是实验作废灯,不是加权能修的小偏差。