6.5了解什么是A/B测试
为什么需要 A/B 测试
在互联网产品开发中,经常面临多种方案的选择。有些选择轻而易举:面向大众的产品,主色调定成蓝色,最权威、最稳重而且广为接受;强调安全的服务,绿色是不二之选。但还有些时候,备选方案是模棱两可的,甚至看起来完全无关紧要:某个按钮用橙色还是红色?位置是偏左还是偏右?
面对这种情况,传统解决方式要么根据设计师的审美来定,要么一群人共同表决,要么由某位领导拍板决定。无论哪种方式都免不了受个人主观因素的制约,未必代表广大真实用户在实际使用场景中的认知——正所谓"不识庐山真面目,只缘身在此山中"。
还有一种情况:一个改动背后利益方的诉求不同、想法很多很分散。比如一个电商网站的购买转化率很低,团队内部就会出现各种不同的声音:产品经理认为是市场推广人员广告投放不精准,而不是购物车流程复杂冗长导致的交互问题;设计师抱怨程序员擅自修改了酷炫的视觉特效;程序员却觉得优先确保兼容性才是提升转化率的方法;老板要求页面文案充分体现技术的首创性;销售团队则认为顾客只关心给自己带去什么利益,根本不管技术是怎么个首创法。这时到底谁更对——产品负责人的感觉、老板的意见,还是刚好路过的扫地阿姨看了一眼屏幕后发表的看法?怎样进行科学的判断?答案是:直接做一次 A/B 测试。
什么是 A/B 测试
A/B 测试也叫做随机实验或对照实验,是一种比较流行的产品优化方法,一般在 Web 网页版产品里用得较多,可以用来提升转化率、注册率等指标。简单说,就是为同一个目标制定两个方案,将产品的用户流量分割成 A、B 两组(一组实验组、一组对照组),两组用户特点类似且同时跑实验;实验运行一段时间后,分别统计两组用户的表现,再将数据结果进行对比,就可以科学地帮助决策。
比如让 50% 的用户看到 A 页面、50% 的用户看到 B 页面,结果 A 版本带来 50 个注册,B 版本带来 75 个注册,相当于 B 版本比 A 高出 50%。在试验流量足够大的情况下,就可以判定 B 版本最终胜出,然后把 B 版本推送给所有用户。A/B 测试是一种先验的实验体系,属于预测型的结论,与一些后验型的归纳性结论差别比较大。
这个方法曾在很多领域产生过深远影响,包括医药、农业、制造业和广告等。其中西医算是比较早引入 A/B 测试来验证新药疗效的:
新药验证一般是这样一个流程:有一百名患者参与测试,医生悄悄分成 A、B 两组——注意患者自己并不知道被分了组,且两组患者的健康情况比较接近一致。A 组患者将得到试验的新药,B 组患者得到长得和新药一模一样的安慰剂,也就是没什么效果的药。如果最终 A 组患者比 B 组疗效更好,就能证明这个新药的疗效是有用的。
可见,A/B 测试的目的在于:通过科学的实验设计(采样样本要有代表性)、流量分割与小流量测试等方法,获得具有代表性的实验结论,并且确信这个结论推广到全部流量时是可信的——这又涉及到数据化驱动决策与确定性的优化提升等概念。
自然界中也存在类似 A/B 测试的事件。达尔文在《物种起源》的编定过程中,发现了一类体型很小、羽毛颜色很暗淡的雀鸟:其中一支大约有十三个种,分布在加拉帕戈斯群岛;另一种则生活在科科斯群岛。这些鸟几乎有同样的体型(差不多都在十到二十厘米),但生活环境的细微不同,让它们进化出了尺寸和形状差别很大的嘴型,以此适应不同的食物。这一发现对达尔文推导出大自然物竞天择的演化理论起到了贡献。这种通过环境影响个体形态、从而筛选出最适合存活下来的物种的例子,其实就包含了 A/B 测试的基本思想:提供多个方案并行测试,不同方案之间只存在一个变量,并以某种标准来判定结果、筛选出最优的方案。
其中"只存在一个变量"这个单变量原则需要重点关注:
- 某种方案的优劣不光与方案本身有关,也可能与方案所适配的环境密不可分。比如同样一段文案涂成黑色,在浅色底上清楚醒目,在深色底上看起来就很费眼力;涂成白色,在深浅不同的底色上视觉效果恰恰相反。不能简单得出黑色和白色哪种绝对好,只能说在深色或浅色底的确定条件下,使用白色或黑色的配色方案,才能取得最佳视觉效果、最大程度上吸引眼球。
- 被比较的两个变量本身也不能是复杂变量,而应该是单一变量。比如拿红烧茄子跟干拌土豆拼个高下,哪种美味只能靠评判者主观的味蕾偏好。解决办法是:要么都改成红烧,要么都换成土豆,确保基于单一的烹制方法或单一的食材,最终做出的评价才更客观。
硅谷基石与成功案例
硅谷的明星科技公司都将 A/B 测试看作稳步增长的基石。Google 从 2004 年到 2007 年历时三年,逐步构建并打磨出一套很强大的内部 A/B 测试系统,每个月会跑几百次实验(有一张 2007 年到 2010 年期间 Google 进行 A/B 测试数量的统计图)。Facebook 也是高频测试的笃行者:据一位名叫卡斯卡特的项目经理介绍,每当工程师对某个算法进行一次微调,Facebook 都会单独针对这次调整筛选出一组用户来进行测试,且每次的测试对象不相同;他还透露,最多的时候甚至有差不多一千种不同版本的 Facebook 面向不同的用户群运行。Facebook 从所有测试对象中提取信息,了解哪些优化算法真正改善了情况、哪些没有产生效果。此外,Facebook 移动版在每次上线时,都会提前把未来六个月想要测试的实验集成到代码里。
再看几个现实中的成功应用:
- 微软 Bing——页面配色:Bing 曾通过 A/B 测试反复调整页面的配色方案。两个测试版本肉眼只能看出细微的差别:右边的蓝色稍微深一点,黑色稍微淡一点(中间三个色块的对比比较明显)。不要小看这简单的配色——对 Bing 这样流量很大的搜索引擎,最右边获胜的方案最终每年带来一千万美金的营收增长。
- 亚马逊——信用卡广告位:亚马逊最早试着销售自己推出的信用卡服务时,曾把信用卡广告放在商品页面的侧边栏广告位,结果无人问津,还浪费了宝贵的广告展示空间。后来运营人员提出把推销信用卡的广告放到购物车结算时,A/B 测试对比下来佐证了这个想法:改动大幅提升了信用卡的申请率,给亚马逊带来了上亿美元的营收增长。
- Netflix——海报测试:Netflix 是笃行 A/B 测试、靠海量测试成就伟大产品的公司。早在 2013 年,它就尝试通过 A/B 测试验证不同版本的海报风格对观看点击的影响。
- 电影《Short Game》(中文名译作《人小志气高》,讲述几个小朋友如何在高尔夫运动中击败其他竞争者的励志故事):在默认海报(default artwork)之外,又测试了另两种不同设计的海报。结果发现,有一张小朋友打球剪影的海报,点击转化率比原海报提升了 6%;效果更好的版本是小朋友的背影、同时家长陪伴在后——既能体现打高尔夫球的电影主题,又体现出父子关系——这样的海报更吸引注意力,转化率比原海报提升了 14%。
- 《驯龙高手:飞跃边界》:Netflix 测试了六个版本的海报,结果很有意思:画绿色箭头的方案二和方案三最终胜出,而这两个方案放的都是反派人物(坏人或邪龙),反而比放主人公的海报更容易吸引人。仔细想想也有道理:看动漫作品时,高大全的正派主角固然讨喜,但混进一些亦正亦邪、有点坏坏的角色,观众反而会很喜欢——就像《七龙珠》里的贝吉塔、《名侦探柯南》里的怪盗基德,有些反派角色比主角更吸引人。
- 美剧《我本坚强》:也尝试放不同版本的海报,实验证明最后一组效果最好。其他几组放一个美女、放一个标题或放一些物件,第五组稍微诙谐,但都太平庸了;获胜的一组不但放了两个人物,还用很夸张的造型、很有戏剧冲突的面部表情演绎,体现了这部剧荒诞诙谐的特征,更容易引发网友点击。
- 《超感猎杀》:通过 A/B 测试甚至发现,不同国家点击效果最好的海报也不一样。第一张在德国点击率最高——很符合德国人四平八稳、严谨古板的感觉:前面一个标题、后面的一个"8"体现了四张人脸;第二张人物剪影在巴西效果更好;第三张在美国点击转化率表现最好——可能美国人对华裔的功夫元素天生感兴趣,背景上呈现了华裔女性和很有亚洲特点的建筑,容易吸引美国用户注意;第四张在英国点击转化率最好——很像英国人最喜欢的传统 007 式特工角色:一个硬派男士拿着一把枪,在英国深入人心。剩下两张测试下来效果反馈就很一般。可见 A/B 测试不但能测同一个国家地区不同海报的效果,还能测出世界上不同地方、不同人群的口味。
一个失败案例:Sam 的"点赞给钱"
前两年有个很火的小众社交应用 Sam,有点像轻量级的百度贴吧,有很多小而美的频道供匿名社交,一度成为资本追捧的宠儿,曾拿到知名投资机构两千万美金的投资。大约 2015 年,Sam 上线了一个"点赞给钱"的功能:每次收到他人点赞(在 Sam 里叫"同感"),用户就能从对方那边收到一毛钱;换句话说,给别人点赞就要付一毛钱。
功能上线后,Sam 的点赞数量急剧下降,后来只在一些很少的福利向频道(比如轻性感频道)里保留,再后来连这些频道也都去掉了,功能被彻底关闭。“点赞给钱"最终成了 Sam 由盛转衰的滑铁卢:活跃用户数量大幅下降,日活大概在二十万上下就再也上不去了,如今这款产品在市场上也没什么声音了。
归根到底:点赞对用户来说是一个比较随性的互动方式,跟打赏有着本质区别——随手点赞可能只是觉得有点意思,并不代表认同感强烈到愿意花钱;原本 Sam 上用户的互动没有太多维护关系的负担,一旦点赞给钱,这种社交关系就不再那么单纯。何况 Sam 的用户很单纯而且低龄化,对这种赤裸裸、充满铜臭的商业变现很抵触,Sam 团队当时遭到大量用户批评。如果 Sam 先通过 A/B 测试,找两个差不多量级和活跃度的频道小规模测试一番,等验证成功后再上全站,可能就不会出现这种问题了。说到底还是盲目决策拍脑袋、不听信数据,把一手好牌打烂了。
A/B 测试的价值与置信区间
通过这几个例子,可以说 A/B 测试具有下面这些价值:
- 帮助建立数据驱动、持续不断优化的闭环过程。
- 消除用户体验设计中不同意见的纷争,根据实际效果确定最佳方案。
- 通过对比实验找到问题的真正原因,提高产品设计和运营的水平。
- 降低新产品或新特性发布的风险,为产品创新提供保障。
进行 A/B 测试时,有时会看到一个词语叫置信区间。比如在 Google Play 应用商店发布一款安卓应用时,Google 允许针对产品文案和营收做不同版本的 A/B 测试,但这个测试看起来不太一样:通常会说 B 版本相比 A 版本提高了多少个百分点,而谷歌后台的这项测试并不能直接从图中得到版本 C 的转化率比原版本提高了多少,而是给出一段区间,同时提供一个有点陌生的指标,叫做"90% 置信区间”。维基百科上有一段不带任何字母公式的纯文字定义:
在统计学中,一个概率样本的置信区间,是对这个样本的某个总体参数的区间估计。置信区间展现的是:这个总体参数的真实值,有一定概率落在与该测量结果有关的某对应区间。举例来说,如果在一次大选中,某人的支持率为 55%,而置信水平 0.95 上的置信区间是从 50% 到 60%,那么他的真实支持率有 95% 的几率落在 50% 和 60% 之间。
初次接触容易越听越糊涂,梳理一下置信区间这个概念的由来,可能就相对容易理解:
二十世纪二十年代,剑桥有位统计学家叫 Ronald Fisher,正悠闲地和朋友一起喝下午茶。英国人喝的是奶茶(牛奶和茶的混合物),但先倒奶还是先倒茶,基本没什么讲究。喝茶过程中,有一位女士突然说自己可以分辨一杯奶茶究竟是先倒的奶还是先倒的茶。Fisher 和其他人都不相信,就让她分辨自己杯子里的奶茶,结果那位女士居然说对了。但 Fisher 还是不相信——她随口一说,都有 50% 的正确率。于是他们做了一个实验:冲了八杯配方完全一致的奶茶,其中四杯先倒奶、四杯先倒茶,请女士分辨,结果她依然完全正确。这种情况下,她仍有可能碰巧蒙对,但八杯茶比一杯茶有说服力得多。八杯茶的说服力有多少?Fisher 算了一下:八杯全蒙对的概率是 0.5 的 8 次方,即 0.00390625,差不多是 0.39%;也就是说,有 100% 减去 0.39%、即差不多 96.1% 的概率她真的能分辨,而不是瞎蒙。这个 96.1% 的概率就是传说中的置信度。若是 90% 的置信度,就表示有九成把握相信她真的能分辨一杯奶茶,而她碰巧蒙对的概率只有 10%。
所以,前述案例中第三行"从 -6.2% 到 +11%“处在 90% 置信区间,就可以说:采用这个方案有 90% 的可行性,数据会在下降 6.2% 到提升 11% 之间不等,平均值落在提升 2.4%。
再看一个留存率实验的例子。假设做了一个产品,想测试以下三种情况对留存率的影响:某功能 X 有可能降低留存率——第一种情况,功能 X 默认打开开关,允许所有用户都看到并使用;第二种情况,还是功能 X,只是默认关闭开关,用户感兴趣可以到设置里手动打开;第三种情况,功能 X 默认关闭,且设置里不提供开关入口,相当于永久隐藏。对次日留存率的影响,用 90% 置信区间图可以读出三个结论:
- 关闭并隐藏开关,至少有 90% 的概率,最后的留存率在 69.97% 以上,而且有比较大的概率落在区间均值 77.17% 上,甚至有一定的小概率最高提升到 84.19%。
- 默认开启功能 X 对留存的影响很大:拿它 90% 置信区间里最好的结果 57.86%,与"关闭并隐藏开关"最差的结果 69.97% 比较,留存率至少降低 12%,最多甚至可以降到 38%。
- 默认关闭功能 X 时,X 的设置开关是否可见,对留存的影响并没有很大:虽然均值的差距在 10% 左右,但两组留存区间有将近一半重叠。所以如果只是说"关闭并隐藏 X 功能,会比仅关闭 X 功能的留存率高 10%",是不太准确的。
置信区间要足够窄,才能说明得出了一个比较好的结论。如果得出一个置信区间说"95% 的可能性,最后的结果在降低 100% 到提升 100% 之间”,那就等于什么都没说。
样本量、实验周期与业务权衡
积攒多少样本才能得出结论,这件事和置信区间也是相关的,主要取决于几个方面:一个是试验的流量本身,一个是转化率本身。比如通过 A/B 测试看到的某个转化率,变化值很低、只有百分之零点零几,无法判断是 A/B 测试带来的影响,还是数据本身正常波动的范围,这时可能需要非常多的样本才能做出有效的测试、看出比较明显的变化;但如果目标是转化率提升 50%,那么可能一千个样本做完就达到了目标——这么明显的提升足以说明问题,一千个样本就够了。
A/B 测试该选多大的样本?这里提供一个现成的线上工具(网址见配图)。用法:先设置一个 Baseline Conversion Rate(基准转化率),即要测试的某个指标原本的基准转化率或对照组的值,比如原本的留存率是 20%;再写一个最小可侦测的结果(百分数),意思是实验后如果基准转化率上下波动达到或超过这个百分数,实验才被视作有效、确实是因为改动对产品产生了实际影响。比如填 5%,那么上线实验后,留存率从 20% 提升到 25% 以上或降到 15% 以下,实验就算达到了能得出结论的阶段。这个工具会用统计概率的算法结合置信区间,给出一个比较合适的实验样本量,比如 1030——也就是说至少要针对 1030 人进行 A/B 测试,得出的结果才比较可靠;样本少于这个数字,试验的置信度就比较低。
A/B 测试要持续多少天?一般要持续 7 天或 14 天。因为在其他条件都不变的情况下,试验时间需要覆盖用户周中(周一到周五)和周末(周六、周日)的行为——两者可能不一样,所以 7 天是比较理想的时间;想更准确最好跑 14 天;如果流量比较少,可能要跑更长时间。怎么得出结论?等置信区间收窄到一定程度,就可以决定上线或下线了。
Airbnb 的教训:Airbnb 的工程师曾尝试改进价格过滤器功能,允许用户筛选房源价格时,把过滤器的上限从原本的 300 美金提升到 1000 美金。实验跑了 7 天,对产品转化率的影响幅度一开始还比较明显,但 Airbnb 的测试工程师比较有经验,没有就此下定结论,而是继续把实验跑了 30 天以上。最后发现大概从两周之后开始,变化幅度就没那么明显了;到一个月整个实验跑完,新设计的价格过滤器跟老版本相比,对转化率的影响基本上没有任何区别。于是 Airbnb 最后果断放弃了这个多余的方案。
另外,做 A/B 测试不要只盲目看测试的数据结论,有时还要跟具体的业务结合,最后敲定选择什么方案。
百姓网的权衡:百姓网是上海的一家公司,业务很像五八同城,或有点像大众点评里的二手频道,允许用户在上面买卖二手车、租赁房屋等。有一次,百姓网广告部的同事提出需求:希望把付费购买增值服务的广告主信息,在列表页面置顶。产品团队就此展开两派很激烈的讨论:一派认为,增值服务的信息在为期一个月的展示期内会始终存在,而手机屏幕空间就这么大,用户每次进来看到的置顶都是同一批信息,就会觉得没有新鲜感——为什么这里的信息总是不更新?另一方认为,用户一定会往下滚屏,滚下去就能看到更多信息,操作很简单。双方各自都很有道理,一时间谁也说服不了谁。如果大动干戈直接改交互——比如按免费与付费的区别改成标签分栏,或提供很强大但很复杂的高级筛选工具——开发起来很复杂,而且广告销售部等不起,希望尽快上线,因为这是对广告主的捆绑销售,丝毫不能怠慢。经过一番权衡,团队决定跑一次 A/B 测试:通过服务器控制下发信息,将用户按 UDID 分成两组,一组下发带固定付费信息的列表(右边方案),另一组下发付费信息不固定的列表(左边方案)。考核两个指标:一个是从列表页到付费信息详情页的转化率,另一个是下拉获取下一屏列表的事件数。测试跑了几天,结果让产品同事大跌眼镜:固定展示付费信息的改动,虽然对用户体验有些影响、不如左边方案,但对核心数据的影响差值只在千分位之后(百分之零点几),对整个产品而言完全可接受;而从商业角度考量,右边方案虽然 A/B 测试数据稍微差了一点,却能为广告主带来更多增值服务的收入,从而提高营收。最终百姓网拍板敲定了右边这个方案。
由此可见,进行 A/B 测试时,除了用高效的手段进行验证,也要结合现有的业务,探究哪种方案最终能取得一个平衡。
数据分析本身是一门精深的学问,需要在实践中不断摸索、总结。既要充分相信数据,用事实和逻辑打败主观臆断;同时也要保持一颗清醒的头脑,不被数据蒙蔽,更不盲目偏信数据而忘记具体问题具体分析。最后用一句话概括:敬畏数据,但时刻保持怀疑精神。