AB实验全面介绍
注:本文是《这就是推荐系统》的读书笔记。
概述
互联网公司想要增加活跃用户、增加收入,通常会想尽各种各样的方法、运作、策略等。有一套称作AARRR的运营方式广受欢迎:
步骤如下:
- 首先是获取用户(Acquisition),怎样使用一种比较高效的方式(App引流、网站跳转、百度或淘宝买广告曝光位)来获取新用户,增加用户数
- 接着是增加活跃(Activation),对于获取到的用户,怎么去激活他们,使得他们变得活跃
- 然后是提高留存(Retention),用户注册后不能立马就卸载App或半年才使用一次。怎么让这些用户成为产品的忠实用户
- 接着是实现收益(Revenue),公司运营需要生存,就必须要赚钱获取收益,怎样获取更多的收益?是拥有更多的订阅(VIP)用户,还是卖给用户更多的产品,又或是通过广告来获取收益?
- 最后一个是裂变传播(Referral),如果前面的过程做的好的话,用户会不会主动分享App或产品来实现做指数级传播与宣传,进而获取到更多用户。
最好的情况,就是通过上述几个步骤形成一个良性循环。
那如何验证策略的有效性呢?肯定不是说凭感觉或拍脑袋就拿出一套策略或方案。
为了验证策略,因此引入AB实验。
AB实验
AB Testing,AB实验,在生物医学上又名为双盲实验,实验中病人被随机分成两组,在不知情的情况下分别给予安慰剂和实验用药,经过一段时间的实验,再比较这两组病人的表现是否具有显著的差异,从而决定实验用药是否有效。
AB实验(桶测试或分流测试)是一个随机实验,通常有两个变量:A和B。利用控制变量法,在保持有单一变量的前提下,将A、B数据进行对比,得出实验结论。AB实验是一种科学的利用数据证明方案可行性的手段,通常在网站测试中广泛使用。
几个核心步骤:
- 分析现状:分析现在的产品有哪些问题?在哪方面可以提高?
- 设置目标:你想干什么?像爱奇艺、腾讯视频等,就是想增加VIP的数量;像淘宝的话,如何更多地增加广告收入;像抖音的话,如何增加日活,怎么样让用户每天不停地去刷抖音,这样我会有更多的广告,更多的活跃用户数,更多的收入
- 提出改进方案:提出方案,分析方案,讨论方案,优化方案等
- 小规模测试:拿出一部分测试用户,让他们去看是否满意,是不是反馈的比较好
- 数据采集分析:对测试用户得到的数据进行数据分析,如果反馈效果好,就调整流量,不断扩大规模去测试。如果反馈效果不好,就停止或是修改方案(回到前面的步骤),这是一个反复迭代的过程。
这个过程就是AB实验,借助于AB实验,通过分析数据与指标,来优化系统或产品。整个过程,采用数据驱动的方式,来分析产品优化产品。
AB实验往往具有以下三种特性:
- 先验性:AB实验用有限的资源模拟真实的环境,就是为了判断变化产生的结果是否符合预期,以便及时发现问题,科学决策减少损失。避免经验主义,减少后验成本
- 并行性:AB实验的目的是测试AB之间的变化产生的结果。实验组之间需要保证只有一个变化因素,并且要做到时间与空间的统一,这就是并行性。并行性是AB实验成败优劣的关键。避免忽视细节,控制变化因素的唯一性
- 科学性:具有科学性的AB实验需要符合理论逻辑的实验设计、严格的实验流程、客观的数据分析,以及反复的验证和不断的迭代。实验结果反映的实际情况往往比主观臆断更加科学
AB实验在互联网产品中主要有两个应用场景:一是前端(UI页面)测试;二是后端(算法)测试。
对UI页面做AB实验时,一般分为Control组和Treatment组,Control组看到的是老页面(布局、样式、颜色、UI),Treatment组看到的是新页面。
AB实验就是一个很好的进行变量控制和优化方向选取的工具,AB实验往往会让技术走入正向循环:衡量—发现—迭代—验证。
所谓精细化迭代是一种建立在数据基础上的思维方式——用较少的成本获得较好的效果。无数据,不优化,线上分流实验是进行推荐算法优化的必由之路。AB实验不仅是推荐迭代的利器,它还可以服务于所有需要逐步完善的产品迭代。
有人问,为什么需要AB实验,为什么不能前后进行实验比较?同时期测试的AB实验非常有必要的原因是,不同时间的测试无法说明B比A好。通过AB实验平台对迭代方案进行实验,并结合数据进行分析,再反向验证和驱动方案,是一个发现问题、提出假设、印证猜想、不断优化的过程。合适的推荐方法是,经过不断的实验去验证,验证的过程也是在校验数据,从而优化推荐系统策略,最终提升用户新增和留存。
分流策略
AB实验平台的建设核心是分流方案。当前业界主流的实验分流设计都源自Google在KDD 2010发表的论文Overlapping Experiment Infrastructure- More, Better, Faster Experimentation里提到的分层实验框架。总体来说,分流方案的设计要尽量满足三个核心目标:
- 高度并行可扩展,能支持更多的实验,同时保证实验的灵活性
- 确保实验结果的准确性和合理性
- 能迅速创建实验及快速获取实验分析结果
业界常见的流量划分规则有随机分流和按照用户分流两种。
统计学基础
通过AB实验观测到的数据并不一定是客观真实的参数,而只是对真实参数的估计(如极大似然估计)。这意味着,估计可能是不准确的,AB实验的结果也可能是错误的。一般而言,样本越多,可能犯错的概率越小。
中心极限定理、正态分布、$z$检验
中心极限定理,在适当的条件下,大量相互独立的随机变量的均值经适当标准化后依分布收敛于正态分布。在样本数量比较大的情况下,可以采用$z$检验。AB实验通常需要采用双样本对照的$z$检验公式。$z$检验公式如下:$$z=\frac{μ_1-μ_2}{\sqrt{\frac{σ_12}{n_1}+\frac{σ_22}{n_2}}}$$
其中$μ_1$、$μ_2$是双样本均值,$σ_1$、$σ_2$是双样本标准差,$n_1$、$n_2$是样本数目。
H0、H1假设和显著性、置信区间、统计功效
现在假设有A、B两个组,无法确定A、B两个组的差异究竟是某种误差引起的,还是客观存在的。所以假设H0=A、B没有本质差异,H1=A、B确实存在差异。
显著性:根据$z$检验算出$ρ$值,比较阈值的几个常见备选项:0.05(认为有统计学差异),0.01(有显著统计学差异),0.001(认为有极其显著的统计学差异)。一般而言,选择0.05,即如果$ρ$<0.05,就接受H0,即认为AB没有显著差异。
置信区间:用来对一个概率样本的总体参数进行区间估计的样本均值范围,它展现这个均值范围包含总体参数的概率,这个概率称为置信水平。双样本的均值差置信区间估算公式如下:$$(ρ_1-ρ_2)\pm z_{\alpha/2}·\sqrt{\frac{σ_12}{n_1}+\frac{σ_22}{n_2}}$$
$ρ_1$、$ρ_2$统计功效power:指拒绝零假设(H0)后接受正确的H1假设概率。直观上说,AB即使有差异也不一定能被观测出来,必须保证一定的条件(比如样本要充足)才能观测出统计量之间的差异;否则,结果也是不置信的。
样本量
一个AB实验计划需要多大样本量才合理?
假设双样本都有相同的标准差$σ_1=σ_2$,并已有估计值,知道$n_1$及双样本的均值差($ρ_1-ρ_2$);假设$Power=0.8$,$α=0.05$,那么可以根据公式推导出最低样本量$n_2$:$$Power=\phi(-z_{1-\alpha/2})+\frac{\Delta}{\sqrt{\frac{σ_12}{n_1}+\frac{σ_22}{n_2}}}$$
流程
基于上述流量分配策略,以及统计学知识。对于一组AB实验,通常会遵循以下流程:
- 判断是否开启独占测试,否则选择加入当前某个测试域
- 根据历史经验估算$σ_1$、$σ_2$、$ρ_1$、$ρ_2$;如果不好估算,那么就做一次抽样测试,提取出大概值再估算。假设Power=0.8,$α=0.05$,再采用前述的AB实验样本量估算方法,计算得出需要的最低样本量$n$
- 根据最低样本量$n$判断是否需要扩充当前域的流量。由于新测试将减少旧测试所得样本量,简单起见,可以直接从主流桶中分配$r$个单位的流量进入当前域,使$sum(r)==n$,从而满足新旧测试的量需求
- 完成配置,发布版本,上线新测试。
问题
AB实验往往不是万能的,如果只依赖于AB实验进行迭代决策,往往会被带入歧途。AB实验可能存在如下问题:
- 证实偏差
证实偏差:人们会倾向于寻找支持自己假设或命题的证据,而忽略否定该假设或命题的证据。这就导致了当实验的推荐策略表现出符合设计者预先设想的实验情况时,自然就会觉得此前的设计是非常正确的,得到的结果也是之前设想的,而不再继续进行深入的实验。实验者一旦对统计有了足够的信心而停止实验,可能会给整个迭代过程带来误导性,因为它不适用于较长的业务周期,也会忽略重要的流量来源与当前的特殊线上情况。因此,实验应至少运行2至4周,具体时长取决于实验设计和业务周期。
- 幸存偏差
幸存偏差:实验设计者会倾向于关注最终幸存下来的人(如重度用户或VIP用户),而忽视他们可能在某些过程中已经被影响。即便是重度用户,也不能代表他们从未遇到消极的用户体验。VIP客户可能是经济状况更好的用户,但是他们并非固定群体,并且他们的预期往往也会高于普通用户。因此,假如在登录页面的AB实验中加入重度用户,那么他们的行为与新用户行为往往截然不同,若只关注重度用户就会使得产品迭代陷入困境。因为AB实验是基于相似度比较高并且普遍的两个群体进行实验的,所以在针对现有用户的相关实验中,应该排除一些重度用户。
- 统计功效不足
在实验中,识别先验概率分布和真实概率分布之间真正差异的概率往往需要高水平的统计功效。因此,必须建立足够多的样本量。但是,在公司的商业实验中,往往急于求成以致得出错误的结论,很多时候这会破坏实验过程。在开始实验之前,应该先估计达到高水平统计功效(通常为90%)所需要的样本量,根据相关人员进行的一项关于1700次AB实验的分析,只有约10%的实验达到统计学上的显著提升。人们往往没有耐心等待实验运行1个月以上的时间,往往在两周之后工程师便停止实验。这样就使得小样本降低实验的统计功效,很可能从90%减少到30%甚至更低。在运行实验之前,实验者最好使用样本量计算器,并预估获得你需要的统计功效的时间。即使真的决定缩短实验时间,也需预估时间缩短对实验带来的影响。
- 辛普森悖论
开始实验后,不能更改设置、变量或对照组的设计,更不能在实验过程中更改已经分配到的流量。在实验期间调整变量的流量分配可能会破坏实验的结果。这就是辛普森悖论现象,即当两组数据合并时,常常会带来完全错误的结果。
微软的实验人员曾遇到过辛普森悖论的现象。某个周五,他们为实验中的变量仅分配了1%流量,到周六那天,又将流量增加到50%,这时辛普森悖论出现了。该网站每天有一百万访客。虽然在周五和周六这两天,实验组各种变量的转换率都高于对照组,但是当数据被汇总时,实验组变量得到的总体转换率相对于对照组却变低了。
发生这种现象的原因是会使用到加权平均数。周六的转换率更低,并且随着当天变量分配到的流量是周五的50倍,周六的转换率对整体结果的影响更大。如若采样不均匀,就会出现辛普森悖论问题。因此,实验者避免使用汇总数据对子组合(比如不同的流量源或设备类型)做决定。当需要为多个流量来源或用户部分运行实验时,最好也避免使用汇总数据,并且将每个来源/页面作为单独的实验变量进行处理。在实验期间更改流量分配往往也会使得结果偏离预期,因为它大概率会改变重度用户的抽样。由于流量分配只影响新用户,所以流量份额的变化将不会改变由初始流量分配引起的重度用户数量差异。
- 均值回归
实验运行几天后,实验者可能会发现实验结果中出现大的提升(或下降),但这种显著的早期提升往往会在之后的几天或几周的实验中逐渐消失,这就是均值回归现象。比如某一指标在第一次评估时出现极端结果,但在后续的观察中,该指标会逐渐趋向于平均值。小样本尤其容易生产极端结果。千万别掉入这个陷阱。
- 基于会话指标的谬误
大多数AB实验软件使用标准统计实验来确定变量的表现是否显著区别于对照组。但是,如果使用会话(Session)级别的指标(比如每个会话的转化),就会遇到问题。AB实验软件会将用户分配到A组或B组,来防止相同的访客看到两个变量,并确保用户一致。但由于用户可以拥有多个会话,用户可能会在不同的组之间横跳。
Skyscanner(全球范围内的机票、饭店、租车等服务的免费比价搜索引擎)的分析表明,假如访客有多个会话,他们的转化可能性更高。另一方面,如果用户为多会话用户,则其生成的单个会话的转换可能会比较低。随着Skyscanner模拟这一现象,他们发现,当他们随机选择用户而非会话时,方差要大于显著性计算中假定的方差。
Skyscanner发现,由于平均会话次数较高,该影响在长期实验中更明显。这意味着,基于会话转换率(即用户随机化)且持续一个月时长的实验出现的误报率是正常预期的三倍。但是,当实验基于随机化的会话而不考虑用户时,方差符合通过显著性计算所预测的方差。
当使用未经过随机化定义的概率指标时,也会出现上述问题。如果采用用户随机化方式(如每页浏览、每次点击或点击率指标等),则都会受到上述相同问题的影响。Skyscanner团队给出三种方式以避免实验结果受此统计现象的误导:
- 在随机化用户时,务必遵守用户级别指标,这样可以避免错误结果
- 当不得不使用将会增加误报倾向的指标时,可以预测真实方差并计算准确的p值
- 当计算真实方差和准确的p值使得计算复杂且十分耗时、难以实现时,只能接受更高的误报率,此时可以使用AA检验来预测指标方差的误差。
平台架构
在互联网企业的日常业务中,有大量AB实验落地场景,具体可分为以下三类:
- 算法类:算法类AB实验广泛地应用在搜索、推荐、广告等场景。算法工程师通过AB实验来验证每一个新的策略(例如召回、排序等)对业务的提升
- 产品功能类:互联网产品形态的改动是可以被用户最直观感知的部分,一个错误的产品改动会对公司带来巨大的损失。通过AB实验小流量试错,在验证效果后进行全量上线,可以降低产品迭代带来的风险
- 运营类:在提倡精细化运营的时代,运营团队需要大量的运营策略,例如用户运营(新用户免广,沉默用户召回)、会员运营(到期会员复购策略)、内容运营(重点内容位置)。这些策略均可通过AB实验来判断哪一类运营策略更有效。
国内外较大的互联网公司几乎都有自家搭建的一套AB实验平台,每家公司的平台肯定不尽相同。一般而言,平台需要包含实验管理、流量分流和效果展示等功能。
作为一个参考,一个基础的AB实验平台的整体架构图如下:
整体架构分为四层:
- Web层:提供平台UI,负责应用参数配置、实验配置、实验效果查看等功能
- 服务层:提供权限控制、实验管理、拉取实验效果等功能
- 存储层:提供数据存储功能
- 业务层:业务层结合SDK完成获取实验参数和获取应用参数的功能
AB指标
对于不同的行业,以及不同的业务场景,评价一个AB实验的结果的有效性有很多不同的指标,其中几类常见的AB指标:
- 点击率(Click Through Rate,Ctr):点击率=点击量/曝光量。Ctr是推荐系统中最常见的用于评估浅层转化效率的指标,广泛用于新闻资讯、短视频、电商等推荐场景的效果评估中。通常意义下,我们可以假设,推荐系统的效果越好,推荐内容的Ctr越高。与Ctr类似的浅层转化率指标还有播放率、点赞率、关注率、收藏率等。与浅层转化相对应的,还有以购买率为代表的深度转化指标。深度转化行为依赖于用户发生前置的浅度转化行为,比如,购买行为通常在用户发生点击物品行为并进入物品详情页后才会发生,所以深度转化目标根据行为链路的深度也被称为二跳或多跳转化目标。
- 用户点击率(User Click Through Rate,UCtr):用户点击率=有点击行为的用户/访问用户。Ctr指标是一个曝光维度等权重的指标,而UCtr是一个用户维度等权重的指标,更侧重于评估推荐效果对于全体用户的普适性。如果一个推荐策略从指标上看到Ctr提升,而UCtr却反方向降低,则大概率意味着该实验策略对部分曝光内容较多的资深用户友好,但对曝光较少的部分用户不友好,这样的推荐策略上线可能会导致低活跃的平台用户流失。
- 覆盖率:覆盖率=有曝光的内容量/总内容量。在所有依赖内容生产者和消费者构成的双边网络的推荐产品中(如抖音),如果覆盖率比较低,则对大量长尾生产者来说,他们的作品长期缺乏曝光及其他用户的反馈激励,将会直接导致生产活跃度下降,进而导致推荐内容池逐渐萎缩,最终长期影响平台全体用户的消费满意度和留存率。此外,推荐系统对于用户兴趣的学习主要依赖于曝光的数据,长尾内容缺乏曝光会使得推荐系统无法学习到用户的其他兴趣最终进入信息茧房。因此覆盖率是衡量推荐系统生态是否健康的重要指标。
- 人均时长:人均时长=总时长/用户数。目前的主流互联网产品的核心商业模式都是在做流量的生意,与其他竞品在争夺互联网用户的使用时间。互联网平台所拥有的流量可近似等价于人均时长×用户数,而人均时长的提升与用户留存率的提升又存在很强的相关性。因此人均时长也常被用作系统优化中除DAU外最重要的评估指标之一。
参考
- 这就是推荐系统:核心技术原理与企业应用