AB测试介绍
什么是AB测试?
A/B Test 是一个用于在线测试的常规方法,用于测试新产品或新功能。
如何操作
我们需要设置两组用户,一组设置为对照组,采用已有的产品或功能,另一组为实验组,采用新版产品或功能。
然后,找到上述两组用户做出的不同响应,确认哪个版本的功能更好。
A/B Test 适用情况
存在明确的对照组和实验组,能够选择合适的指标评估此类改变,适合使用A/B Test。
- 我们可以通过A/B Test 对很大范围的事情进行测试,比如增加一些新功能,或界面中增加的内容,网站的不同外观等。
- 我们还可以将A/B Test用于十分复杂的改变,例如排名变动。
- 我们也可以针对不确定用户是否会注意到的改变进行测试,例如页面加载时间。
A/B Test 案例如下:
Amazon首次开始做个性化推荐时,他们想看一下用户是否真的会购买更多商品,他们发现,由于个性化推荐,他们的收益有了显著增加。
Linkedin测试了一个改变,尝试确定他们是否应显示新文章还是鼓励大家增加新联系人,这就是排名变动。
100ms的页面加载时间不是很多,但是 Google 和 Amazon 都运行了测试。Amazon 在2007年证实,每个页面增加 100ms 的延时,会导致收入降低 1%。对于Google,也得到了相似的结果。 你可以发现,平均来看,100ms 看起来并不多,但每增加 100ms 的延迟,人们查询的数量真的降低了。
这就是可以从 A/B Test中学到的东西。
A/B Test 不适用的情况
-
A/B Test 无法真实的告诉你是否遗漏了什么东西。
例如:亚马逊想知道页面上是否有用户需要,但是他们还没有提供的商品。这种情况没办法用 A/B Test 来寻找答案。 -
A/B Test 不适用与测试新的体验。
例如:某 SaaS 公司已经有了免费服务,例如有待办事项列表。他们想提供带有其他功能的高级服务,如需使用高级服务,用户需要升级,创建登录账户,并探索新的功能。
这种情况下,也不适合用 A/B Test 来寻找答案。 -
A/B 不适用与需要很长时间才能验证的测试。
例如:某租房网站,想测试促进用户推荐页面给好友有没有效果,但是这个效果检验需要很长时间,可能是一周,可能是半年,一年。因为租房并不是经常发生的。这种情况也不适合。
另外,当你测试新的体验时,你当前已有的那些用户,可能会觉得改变了他们的体验,这被称为改变厌恶症;
另一种情况是,他们觉得这些都是新的,然后尝试所有东西,这被称为新奇效应。
对于不适用情况,补充技术
用户在你的网站上进行操作的日志,可以通过检查或观察分析日志,得出结论,是什么原因造成其行为的改变。
然后可能要沿着这个方向努力,然后设计实验,完成随机化和试验,进行前瞻性分析。
可以把两种技术结合来使用:
查看操作日志得出假设,运行A/B Test验证你的理论是否合理。
还有一些其他技术:
- 用户体验研究
- 焦点小组
- 调查
- 人为评价
A/B Test 可以给我们大量宽泛的定量数据,而上述技术可以给我们非常深入的定性数据作为A/B Test 的补充。
这些技术可以告诉我们该爬哪座山,也就是得出假设。
设计A/B 测试
在网络世界中,当你做 A/B 测试时,要谨记的一件事是,确定用户是否会喜欢这个新产品或新功能;
所以在进行 A/B 测试时,你的目标是设计一个合理且能够给到你可复验的结果,让你能够很好地决定是否要发布一款产品或功能。
A/B 测试的方法
一般来说,在科学领域,假设检验是确定创新的关键方法。
在A/B测试中,我们最想看到的是对照组和实验组返回一致的响应,让你能真正地决定试验的结构,确定实验组和对照组是否有很明显的行为改变。
选择和测量指标
指标的作用
选择一个或多个指标是因为我们需要,明确如何判断实验组比对照组的好坏。
在决定如何定义指标之前,我们要考虑会用这些指标来做什么。
有两种指标:
- 不变指标
- 评估指标
不变指标
用于不变量检查:这些指标在实验组和对照组中都不会更改。
例如:
- 如果运行一个实验组和一个对照组,对比项目总体是否相同。例如两组中用户数量是否相同;分布是否相同;是否具有可比较的各个国家的用户数量;或各个语言的用户数量;
- 目的:需要进行这些完整性检查,确保实验能够顺利实施。
- 通过这些不变指标,我们可以看到实验是否受到其他非需要因素的影响,是否会对于我们判断结果造成影响。
评估指标
用来评估实验效果的指标。通过该指标,比较实验组和对照组是否存在显著性差异,从而判断新功能是否最终被采纳。
如何对指标进行定义?
- 要为一个指标想出一个高级概念,也就是一句话总结,让每个人都能理解这个指标。例如“活跃用户”或“点击概率”。
- 确定各个细节。例如你想测定活跃用户,那你如何定义活跃?哪些事件可以算为活跃?
- 进行单独数据测量之后,你需要将它们总结为一个指标,有点像概括或计数,可能是一个平均值,中位数等
- 总结后,就得到了一个完整的指标定义,可以进行完整性检验。
- 最后使用一个指标时,需要考虑这个指标是否普遍适用
- 对于评估指标,可以没有那么完美,但是适用于整套测试,能够用来对比;
困难指标
- 不能直接访问他们想要的数据,不知道怎么计算;
- 需要太长时间
需要避免。
指标定义
定义 1(Cookie 概率):对于每个 <时间间隔>,点击的 Cookie 数量除以 Cookie 总数
定义 2(网页流量概率):<时间间隔> 内点击的网页浏览量除以网页浏览量总数
定义 3(比例):点击数除以网页浏览量总数
关于数据采集和指标定义:
- 在进行差异性计算之前,我们需要先弄清楚,数据采集和指标定义有没有问题;
- 需要将定义标准化
- 由于收集数据的技术很多,所以要确认使用了什么技术
需要考虑指标的敏感性和稳健性
敏感性和稳健性
- 能够捕捉到你所关心的更改的指标,这就是稳健性的概念。当不发生任何有趣的事情时,它不会发生太大改变
- 如何测量敏感性和稳健性?
- 使用实验或使用你已经有的实验;
例如,在视频延迟示例中,我们可以实施一些简单的实验,我们可以提高视频的质量,在理论上,我们可以增加用户加载时间,我们可以看看你感兴趣的指标是否对这种情况做出响应 - 也可以使用A/A实验,看它们是否太敏感
- 在这个实验中,你不需要改变任何指标,只将能看到相同信息的人们进行比较,看看你的指标是否显示两者之间的差别
- 通过这个关键元素,你可以确保不会将一些实际上没有任何意义的东西认为是重要的
- 对你记录的回顾性分析
- 如果你没有数据,或做不了新的实验,回头看看你对你的网站做过的更改,看看你感兴趣的这些指标是否和这些更改一同发生了变化;
- 或者你可以只看指标历史,看看你是否能够找出主要更改的原因
- 使用实验或使用你已经有的实验;
如何计算指标差异性
我们需要弄清楚,是客观因素导致指标有了变化,还是改变以后让指标有了变化。例如,学习平台节假日流量会增加。
为了更严谨,我们需要为指标计算置信区间。
- 需要了解其分布情况
- 需要了解指标的方差和标准偏差
对于二项分布
- 标准偏差SE = sqrt(β(1-β)/ N)
- 置信区间宽度(误差范围)m = z*SE
- N越大,越趋近于正态分布
案例
对于你选择作为评估指标的每个度量,假设有5000个cookie样本访问课程概述页面的情况下,分析估计一下其标准偏差(保留4位小数)
(注:请确保搞清楚每个对应5000次页面浏览的度量需要多少分析单位。)
基准值如下:
指标 | 基准值 |
---|---|
每天访问课程概述页面的独立cookie | 40000 |
每天点击“开始试用”的独立cookie | 3200 |
报名参加免费试用的用户数量 | 660 |
点进概率 | 0.08 |
总转化率 | 0.20625 |
留存率 | 0.53 |
净转化率 | 0.1093125 |
从上面的表格可以看出,点进概率为0.08
故5000个样本的中,每天点击“开始试用”的独立cookie为 $50000.08 = 400.0 , 5000660/40000 = 82.5 $
则总转化率的标准偏差为:
$\sqrt{(0.2063*(1-0.2063)/400)} = 0.0202324189112424 $
净转化率的标准偏差为:
$\sqrt{(0.1093*(1-0.1093)/400)} = 0.0156007620006204 $
留存率的标准偏差为:
$\sqrt{(0.53*0.47/82.5)} = 0.0549490121785091 $
计算经验方差
分析变异性和经验变异性匹配的条件是 unit of analysis = unit of diversion。(分析单元 = 转移单元)
例如参照上述数据:
- 总转化率的分析单位是cookie,转移单位也是cookie,故总转化率的分析变异性和经验变异性匹配;
- 净转化率的分析单位是cookie,转移单位也是cookie,故净转化率的分析变异性和经验变异性也匹配;
- 留存率的分析单位是user-id,转移单位是cookie,故留存率的分析变异性和经验变异性不匹配,根据经验计算的变异性可能会远大于分析变异性。在这种情况下,应该为留存率收集变异的经验估计。
如果分析单元和转移单元不相等的情况下,在条件允许的情况下,我们可以为指标收集变异的经验估计。
经验方差的计算方法:
- 使用A/A实验
- 一个对照组A对比另外一个对照组A,实际上用户看到的东西是没有什么改变的,意味着你观察到的所有差异,都是潜在的差异性
- 可以使用A/A实验实际测试指标的敏感性和合理性,如果在A/A实验中,指标的差异性较大,可能在A/B测试时,敏感性太高
- 所以可以用A/A实验来测试差异性
- 运行更多的A/A测试,会有明显的边际效益递减
- 一个关键的经验法则就是:标准偏差与样本量的平方根成正比
- 做一个规模很大的A/A实验,在统计学中有种方法叫 bootstrap(自助法),你可以将很多的样本随机地划分为一堆小样本群,然后可以对这些随机地子集进行对比
计算经验分布的好处:
-
健全性检查
- 如果你已经对置信区间完成的分析计算,你可以检查A/A测试结果是否符合你的预期,这是一种完整性检查功能
- 如果你检查出不符合你的预期,表明你的计算出了错,可能你对数据分布的假设是无效的
-
计算置信区间
- 如果你想要对指标分布进行假设,但是不能分析估计方差,你可以通过实证预计方差,然后用你关于分布的假设,按照之前的方式计算置信区间
- 如果你不想对数据做出任何假设,你可以直接从A/A测试的结果中估计置信区间
- 假设置信区间为95%,实际有40组值,这去掉最小值和最大值,所得的范围即为置信区间
未完待续,请查看下一篇。