AB 实验与埋点:从一个假设到一条结论
掌握 AB 实验五件套与样本量直觉,学会设计埋点方案,并能对实验结果下出负责任的结论
- 记住 AB 实验五件套:假设、主指标、护栏指标、时长、不偷看
- 理解为什么小流量看不出差别
- 会设计埋点:埋什么节点、什么字段、能回答什么业务问题
- 拿到结果能判断显著不显著、能不能放量、有什么风险
一个生活化的比方
AB 实验就像同一道菜请两拨人尝:一拨用老菜谱(对照组),一拨用新菜谱(实验组),最后比哪拨人说更好吃、复购意愿更高。关键是两拨人要差不多多、要随机分、要等足够多人尝完再下结论——不能尝了三五个就喊新菜必胜。
AB 实验五件套
任何一个 AB 实验,开跑前这五件事必须写清楚,缺一件结论就不可信。
假设:我相信改了 X,会让主指标 Y 变好。
主指标:实验成败只看这一个数字,别同时盯十个。
护栏指标:万一主指标涨了但出了副作用,要盯着的红线(如崩溃率、客诉率、成本)。
实验多久:按预估样本量定好跑几天,到了再停。
不偷看结果:中途看到显著就提前全量,是新手最常犯的错,会把噪声当成真相。
样本量直觉:为什么小流量看不出差别
两组差 1% 的转化,若每组只有几百人,随机波动就能轻松盖过这 1%,你看不出差别不是没效果,是样本太少。要先按“想检出多大差异”反推需要多少人,再决定开多少流量、跑多久。流量太小的实验,做了等于白做。
每偷看一次、每提前停一次,都在放大“假阳性”。常见翻车剧本:跑到第 3 天实验组略高,赶紧全量,结果上线后一回落——那 3 天的“显著”只是随机波动。
样本量怎么估:抛硬币的直觉
高中搭桥:抛硬币。你抛 10 次,可能 7 次正面,你敢说这枚硬币不公平吗?不敢,因为次数太少。抛 10000 次,正面比例稳定在 50% 附近,你才敢下结论。AB 实验一模一样:想检出的差异越小,需要的样本越大;每组几百人,1% 的差异根本测不出来。开实验前先按「想检出多大提升」反推需要多少人,算出来要跑两周,就别开一周的实验。
差异越大越好测:想从 10% 提到 20%,每组几百人就够差异越小越难测:想从 10% 提到 11%,每组要上万人样本不够就别开实验,开了也是白开。
辛普森悖论:分组看和整体看结论相反
一个经典陷阱:整体看,实验组转化率比对照组高;但拆成新用户、老用户两组看,每组都是实验组更低。为什么?因为实验组恰好分来了更多高转化的老用户,分组不均把整体结果带偏了。教训:实验结果出来先看两组用户分布是不是均衡,别被一个总数骗了。
整体:实验组 12% > 对照组 10%拆新用户:实验组 5% < 对照组 6%拆老用户:实验组 20% < 对照组 22%→ 结论相反!多半是分桶不均,实验组老用户占比畸高。下次先查分桶。
实验周期与新奇效应
新功能上线头几天,老用户因为新鲜会猛点一下,数据特别好看;一两周后新鲜感退去,数据回落。这叫新奇效应。所以实验不能只跑三天——至少跑满一个完整周期(通常一到两周),覆盖工作日和周末,让新奇效应退潮后再看真实效果。
埋点方案:埋完要能回答业务问题
埋点不是越多越好,而是“先想好要回答什么问题,再反推埋哪些点”。通用做法:在关键路径的每个节点埋事件,带上能区分来源和行为的字段。
节点:曝光、点击、进入、提交、结果反馈、转人工。
字段:用户分群、渠道、实验组别、耗时、是否成功。
目标:埋完之后,能回答“哪一步流失最多、哪类用户转化最好、实验到底有没有用”。
事件名:统一用「对象_动作」,如 chat_send、feedback_click,别用中文口语base 属性:每个事件都带上 user_id、dt、ab_group、channel触发时机:曝光=页面真的露出时,点击=用户真的按下时,别在数据返回后才补发命名一旦定下,后面改一次全链路都要跟着改,所以前期规范最重要。
拿到结果怎么下结论
三步:先看护栏指标有没有被破坏;再看主指标是否在样本量足够后依然显著;最后判断“显著不等于业务上值得放量”——收益盖得过成本和风险才放。
# 示例口径:两组模拟转化率(教学数据,手算比例,不引入 scipy)
group_a = {"曝光": 1000, "转化": 120} # 对照组
group_b = {"曝光": 1000, "转化": 145} # 实验组
rate_a = group_a["转化"] / group_a["曝光"] * 100
rate_b = group_b["转化"] / group_b["曝光"] * 100
print(f"对照组转化率: {rate_a:.1f}%")
print(f"实验组转化率: {rate_b:.1f}%")
print(f"提升: {rate_b - rate_a:.1f} 个百分点")
# 预期输出:
# 对照组转化率: 12.0%
# 实验组转化率: 14.5%
# 提升: 2.5 个百分点
# 提示:差 2.5 个百分点在每组 1000 人时未必显著,
# 需达到预估样本量并看波动区间,统计显著性的深入内容见 stage11-m3 概率统计下面哪项 AB 实验设计是错的?
某实验整体看实验组转化更高,但拆新/老用户两组都是实验组更低。最可能是什么问题?
资深工程师加餐
底层原理 · 大厂视角 · 工程经验,点卡片展开
除常规需求外,必须定义:能力边界(做什么、明确不做什么)、输入输出 schema、各类失败的兜底策略、评测标准与目标指标、数据来源与合规要求、单次成本预算、灰度方案与回滚开关。核心思维是把「模型可能会错」当成默认前提,围绕出错去设计,而不是假设理想路径。