[TOCE] 35 P5-C19-S1 A/A 测试
Trustworthy Online Controlled Experiments Part 5 Chap 19
如果一切似乎都在掌控之中,那么就说明步伐不够快
– Mario Andretti
如果一切都在控制之下,那说明正你在运行A / A测试
– Ronny Kohavi
为什么重要
运行A / A测试是在实验平台中建立信任的关键部分。这个想法非常有用,因为在实践中, 我们曾经多次遇到测试失败, 然后重新评估假设并最终发现错误
A / A测试的想法很简单:与常规A / B测试一样,将用户分为两组,但使B与A相同(因此称为A / A测试)。如果系统运行正常,则在重复试验中,大约有5%的时间,给定指标应具有统计显着性,p值小于0.05。在进行t检验以计算p值时,重复试验的p值分布应接近均匀分布。
为什么是 A/A Test
受控实验的理论已广为人知,但实际的实现存在许多陷阱。 A / A测试(Kohavi,Longbotham等人,2009)有时也称为Null测试(Peterson,2004),对于建立对实验平台的可信度非常有用。
A / A测试与A / B测试相同,但是“治疗”和“控制”用户会获得相同的体验。可以将A / A测试用于多种目的,例如:
-
确保将I类错误控制在预期范围内(例如5%)。例如,如本章稍后的示例1所示,对于某些度量标准标准方差的计算可能是不正确的,这将导致常用假设不成立。 A / A测试将很快的失败,从而指出必须解决的问题。
-
评估指标的可变性。我们可以检查来自A / A测试的数据,以确定随着更多用户被纳入实验,指标的方差如何随时间变化,预期中的均值方差的减少可能不会实现(Kohavi等,2012)。
-
确保干预和对照组者之间不存在偏误,尤其是在重复使用先前实验中的人群时。 A / A测试对于识别偏误非常有效,尤其是在平台级别引入的偏见。例如,Bing使用连续的A / A测试来确定残留效应(或残留效应)。残留效应指的是先前的实验会影响在同一用户上进行的后续实验(Kohavi等,2012)。
-
将数据与记录系统进行比较。在组织中开始使用受控实验之前,通常将A / A测试用作第一步。如果数据是使用单独的日志记录系统收集的,则好的验证步骤是确保关键指标(例如,用户数,收入,点击率(CTR))与记录系统相匹配。
-
如果记录系统显示有X位用户在实验期间访问了该网站,并且分别以20%的比例运行了“控制和干预”,那么实际上控制和干预组都有20% 的用户么?这中间没有发生泄漏?
-
估计方差以进行Power计算。 A / A测试提供的指标,可以帮助确定在给定的最小可检测效果下需要运行A / B测试多长时间。
我们强烈建议与其他实验同时进行连续的A / A测试,以发现问题,包括分布不匹配和平台异常。
以下示例重点介绍了为什么以及如何运行A / A测试。
示例1:分析单位与随机单位不同
如第14章所述,可能需要按用户进行随机分组和按页面进行分析。例如,警报系统通常通过近乎实时地汇总每个页面来查看页面加载时间(PLT和CTR),因此经常需要按页面估算处理效果。
现在,我们讨论点击率,并讨论两种常见的计算方法,每种方法都有不同的分析单位。第一种是计算点击次数,然后除以浏览量。第二种是平均每个用户的点击率,然后平均所有点击率。如果由用户完成随机化,则第一种机制使用的是与随机化单元不同的分析单元,这违反了独立性假设,并使方差计算更加复杂。
在本示例中,我们将两者进行分析并进行比较。
在此,是用户数,是用户的浏览量。 是总浏览量: 。 是用户i在其第j页上的点击次数。
现在,我们来看一下有关点击率的两个合理定义:
1.计算所有点击次数,然后除以总的浏览量,如公式19.1所示:
(19.1)
如果我们有两个用户,一个没有点击和一个页面浏览量,另一个有两次点击,一个用户在两个页面浏览量中各占一个,则(请参见公式19.2):
image.png2.对每个用户的点击率求平均,然后对所有点击率求平均,本质上得到的是两倍的平均值(请参见公式19.3):
image.png要在定义1中应用示例(请参见公式19.4):
image.png这些定义没有对与错,对于CTR而言都是有用的定义,但是使用不同的用户平均值会得出不同的结果。实际上,通常会在报告中同时公开这两个指标,尽管我们通常建议使用定义2,因为我们发现定义2对异常值(例如具有许多网页浏览或经常点击的漫游器)更为鲁棒。
计算方差时很容易出错。如果A / B测试是由用户随机分配的,则在计算第一个定义的方差时会得到此结果(请参见公式19.5):
image.png这是不正确的,因为它假定Xijs是独立的(请参见第14章和第18章)。要计算方差的无偏估计,请使用增量法或自举法(Tang等人2010,Deng等人2011,Deng,Lu和Litz 2017)。
我们最初进行此观察的原因不是因为它明显违反了独立性假设,而是因为在我们的A / A测试中,CTR1的统计显着性远远高于预期的5%。
示例2:正确的停止实验(不要过早的停止)
《 A / B测试:将点击转化为客户的最有力方法》(Siroker和Koomen,2013年)建议了一种不正确的程序来结束实验:“一旦测试达到统计意义,就会得到答案,”和“测试得出了具有统计意义的结论……”(Kohavi,2014年)。常用的统计数据假设是在实验结束时将进行一次测试,但是,这种“偷看”行为违反了该假设,从而导致比传统测试的误报要多得多。
早期版本的 A / B测试 鼓励“偷看” 行为,并因此提前结束实验,最终导致许多错误的实验。当一些实验人员开始进行A / A测试时,他们意识到了这一点,并撰写了诸如“如何(几乎)使我被解雇”(Borden,2014年)之类的文章。值得赞扬的是,Optimizely与该领域的专家(例如Ramesh Johari,Leo Pekelis和David Walsh)合作,并更新了评估结果,将其称为“ Optimizely的新统计引擎”(Pekelis 2015,Pekelis,Walsh和Johari 2015)。他们在其词汇表中介绍了A / A测试(最佳2018a)。
示例3:浏览器重定向
假设你正在构建网站的新版本,并且希望对旧版本与新版本进行A / B测试。B中的用户将重定向到新网站。剧透警报:B很有可能输掉。像许多想法一样,它既简单又优雅,但是有缺陷。
这种方法存在三个问题(Kohavi和Longbotham,2010,第2节):
-
性能差异。重定向的用户会花费额外的时间在重定向上。在实验室中,这似乎很快,但是其他地区的用户可能会看到1-2秒的等待时间。
-
机器人。机器人对重定向的处理方式有所不同:某些机器人可能无法重定向;有些人可能会将其视为一个新的看不见的领域,并且深入地爬网,从而产生大量可能影响关键指标的非人为流量。通常,删除所有小的bot并不是至关重要的,因为它们在所有变体中都是均匀分布的,但是新站点或更新的站点可能会触发不同的行为。
-
书签和共享链接会造成污染。使用书签或共享链接进入网站(例如,进入产品详细信息页面)的用户仍必须重定向。这些重定向必须是对称的,因此必须将Control中的用户重定向到站点A。
我们的经验是重定向通常不会通过A / A测试。要么重新构建软件,以便不进行任何重定向(例如,服务器端返回两个主页之一),要么对“控制”和“处理”都执行一次重定向(这会使控制组降级)。
示例4:不相等的百分比
共享资源可能会不平等的划分(例如10%/ 90%),从而为流量更大的版本提供明显的好处(Kohavi和Longbotham,2010年,第4节)。具体来说,“控制”和“干预”之间共享的 least recently used(LRU )缓存中, 保存了更多的大流量部分的内容(请注意,实验ID必须始终是可能会受到实验影响的任何缓存系统的一部分,因为实验可能会缓存不同的值对于相同的哈希键)。另请参阅第18章。
在某些情况下,进行10%/ 10%的实验(不利另外的80%的数据)来避免LRU缓存问题比较容易,但是这必须在运行时完成。将无法运行10%/ 90%并丢弃数据。的50/50%A / A测试可能会通过,但是如果要以90%/ 10%进行实验,请在先运行A / A测试。
百分比不相等的另一个问题是收敛到正态分布的速率不同。如果度量的分布高度偏斜,则中心极限定理指出,平均值将收敛为正态,但是当百分比不相等时,比率将有所不同。在A / B测试中,控制和干预指标的差异很重要,如果两种成分的分布相同(甚至不是正态),那么他们的差异可能会更正态。有关详细信息,请参见第17章。
示例5:硬件差异
Facebook在一组机器上运行着一项服务。他们构建了该服务的新V2,并希望对其进行A / B测试。他们在新旧服务器之间进行了A / A测试,虽然他们认为硬件相同,但是还是未能通过A / A测试。较小的硬件差异可能会导致意想不到的结果差异(Bakshy和Frachtenberg,2015年)。
如何进行A / A测试
在使用A / B测试系统之前,请务必先进行一系列A / A测试。理想情况下,模拟一千个A / A测试并绘制p值的分布。如果分布远非均匀,那么就会遇到问题。解决此问题之前,请不要信任该A / B测试系统。
当关注的指标是连续的并且有一个简单的零假设时,例如我们的A / A测试示例中的均值相等,则零值下p值的分布应该是均匀的(Dickhaus 2014,Blocker et al.2006) 。
图19.1是真实的直方图,显示出分布远非均匀。
image.png由于分析单位不等于随机单位而导致方差未正确计算的指标的A / A测试的p值分布不均匀
图19.2显示,应用增量法后,分布更加均匀。
image.png应用delta方法计算方差后,分布接近均匀
运行上千次A / A测试可能会很昂贵,但是可以使用以下小技巧:重复上周的内容。当然,这假定存储了相关的原始数据。这就是为什么我们说要存储的数据以运行将来的测试并应用新开发的度量标准的一个示例。当然,这种方法有局限性:无法捕获性能问题或共享资源,例如上面提到的LRU缓存,但这是一个非常有价值的尝试,它可以识别许多问题。
因为并没有真正对产品进行更改,并且被测试的两个变体是相同的,所以可以模拟A / A测试。对于每次迭代,请为用户分配选择一个新的随机散列种子,然后重复上周的数据,将用户分为两组。然后为每个感兴趣的指标(通常是数十到数百个指标)生成p值,并将它们累加到直方图中,每个指标一个。
现在运行拟合优度测试,例如Anderson-Darling或Kolmogorov Smirnoff(维基百科贡献者,Perverse Incentive 2019,拟合优度)以评估分布是否接近均匀。
When the A/A Test Fails
有几种常见的p值场景,其中测试未能通过均匀分布的拟合优度(Mitchell等人2018):
1.分布偏斜,显然不接近均匀分布。一个常见的问题是度量的方差估计问题(请参阅第18章)。检查以下内容:
a. 是否因为随机化单元与分析单元不同而违反了独立性假设(如CTR示例中所示)?如果是这样,请部署增量方法或 bootstrapping 程序(请参见第15章)。
b. 指标是否具有高度偏斜的分布?少数用户可能无法正常近似。在某些情况下,最小样本量可能需要超过100,000个用户(Kohavi等,2014)。上限指标或设置最小样本量可能是必要的(请参阅第17章)。
2.在0.32的p值附近有一个很大的量,表明有离群值问题。例如,假设数据中有一个非常大的异常值o。在计算t统计量时(见公式19.6):
image.png异常值将落入这两个变量之一,且均值的差值将接近(或其负值),因为所有其他数字都将被该异常值淹没。该变量的均值方差也将接近,因此T值将接近1或接近-1,这对应于约0.32的p值。
如果看到此情况,则需要调查异常值的原因或限制数据。由于存在如此大的离群值,因此t检验很少会产生统计学上显着的结果(请参阅第18章)。
3.分布中的点较少,间隙较大。当数据是单值(例如0)且有少数非零值实例时,就会发生这种情况。在这种情况下,均值的增量只能采用几个离散值,因此p值取值空间就是几个值。再次,t检验不准确,但是并不像以前的情况那么严重,因为如果新的方法导致罕见事件频繁发生,则方法效果将是巨大的,并且具有统计意义。
即使在A / A测试通过之后,我们仍建议定期的,与A / B测试同时运行A / A测试,以识别系统中的回归或新指标,防止他们由于分布的变化或异常值的出现而失败。