欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

DS 面试 A/B 测试

最编程 2024-03-10 16:23:38
...
image.png

A/B Test 题目, 往往会和 Metric Questions 放在一起出, 属于DS 业务领域内的一大重点类型。 本文分几部分拆解A/B Test 面试中会遇到的各类问题。 但是如果想深入了解 A/B Test, 还需要大家真的花费时间去了解, 可以参考 Trustworthy Online Controlled Experiments 系列文章。

什么是A/B Test

A/B Test 是一种控制实验, 在面试中, 会被问到以下一些问题

  • 你的A/B Test 的假设是什么
  • 如何设计一个 A/B Test
  • 如何评价结果
  • 根据结果,做出决定

设计一个 A/B Test

  • A/B 要运行多久?
  • 需要多少样本? 这一般取决于
    • Power (一般取 80%) (1 - TypeII error) 什么是 Power
    • Significant Level (一般取 p-value = 0.05)
    • 要能找到多精细的差异
    • 常用公式 Sample Size = \frac{16 \sigma^{2}}{\delta^{2}} (\sigma :样本方差 \delta 可识别最小差异 )

从上面的公式可以推导出

  • 样本方差越小(数据变动小), 所需要的数据越少
  • 要求的可检测差异越大(粗糙), 所需要数据越少

算出来的样本量, 是每组的样本量, 不是真整个实验需要的样本量

关于可检测差异如何设置, 这是一个经验之谈, 在Trustworthy Online Controlled Experiments 系列中, 也有专门的讨论。 一般的原则是, 这个值一定要在实验开始前定下来, 并且不能在实验中改动

关于 ** A/B 要运行多久** 也可以从样本数量推出来, 比如,需要 20000 个样本, 而每天有4000个客户, 那么就需要5 天。 但是实际运行中, 还要考虑周末效应, 因此在这个例子中, 一般会选择7天。

多重测试

有时候, 我们会有不止一个干预组, 比如, 测试一个按钮的颜色。 我们可能会同时测试 10种颜色。

比如, 在一个 A/B Test 中 ,我们实验了10中颜色, 其中一种颜色胜出, 而且p< 0.05。这时,是否要决定使用该颜色呢?

答案是否定的, 因为比对的组越多, 可能第一类错误的概率越大, 在多组对照实验中, 应该用更低的 p-value。 比如, 如果有3组, 每组对比使用 p-value 0.05, 那么整个实验犯第一类错误概率为:

P(Type \ 1 \ Error) = 1- (1 - 0.05)^{3} = 0.143

远远大于 0.05。

解决这种问题的方法

1. Bonferroni Correction:

方法也很简单, 在多组实验中, 使用
p-value = \frac{0.05}{group \ number}

就是用 0.05 除以组数。 因此, 对于有10个group 的实验, 应该使用的p-value 是 0.05。

缺点:过于保守, 要求太高

2. Control False Discovery Rate

\mathrm{FDR}=E\left[\frac{\text { false positives }}{\text { rejections }}\right]

这个一般在有很多个 Metrics 的时候, 使用, 比如有 100+ 个Metrics
比如 200个 Metrics , FDR = 0.05 这意味着

  • 5% 的假阳性率
  • 在200 个指标中, 至少有1个是假阳性

新鲜感 (Novelty) 和先入为主(Primacy) 效应

  • 先入为主(Primacy) : 用户需要时间,来适应改变。
  • 新鲜感 (Novelty): 新功能带来的新鲜感, 会慢慢消退。

这两个效应带来的问题是, 他们带来的效果都不持久。另外, 实验一开始的高增长,和低增长可能都和他们有关系。

解决方案
  1. 使用新用户做测试, 对于新用户来书, 就不存在这两种效应。
  2. 如果实验已经运行了,那么可以现在比较干预组中新用户, 和老用户的行为区别。

干预手段对实验造成的影响

A/B Test 的两个假设

  • 用户进入各个实验组完全是随机的
  • 用户之间是独立的 (SUTVA)

对于一些应用,这两条不一定成立, 比如 Facebook, 微信, Uber 等。 一方面, 社交应用会有溢出效应, 另外方面 Uber, Airbnb 这种资源共享应用会有资源挤占效应。

如果在实验中, 一个社交应用导致用户发帖数上升 1%, 那么在实际推广以后, 这个效应会超过 1% , 这是由于网络效应导致的。 而对于资源共享型应用, 比如 Airbnb, 如果一个手段让实验组叫车量提升 1% , 那么实际使用中, 效应应该低于 1%, 因为实验组叫了更多的车, 那么控制组可叫的车的数量就减少了。

如果减少干预带来的影响

隔离用户

  • 地理隔离: 比如在不同城市测试优惠券对打车的影响
  • 时间隔离: 适用于干预效果较短的应用

对于社交应用, 可以使用 Cluster, 然后以不同的社群作为 Unit 做比较。


参考视频