个性化推荐的利器:A/B试验实践指南 (上)

这篇文章是VK CoreML团队关于A/B测试的一篇实践文章,他们团队的工作是设计和改进为音乐、视频和信息流相关的推荐系统。这涉及到大量的A/B测试,一天结束时的进展很大程度上取决于他们A/B测试的准确性和效率。

个性化推荐的利器:A/B试验实践指南 (上)

在A/B测试中最重要的两件事是实验的设计和对实验结果的准确分析。在本文中,大家将看到他们是如何坚持最常见的设计,并比较各种统计分析流程,从非常标准的t检验和曼-惠特尼U检验,到最先进的方法,如重新加权bootstrap。

阅读了这篇文章后,大家会了解到如何从众多可用的统计检验方法中选择正确的统计检验方法,并在自己的数据上运行。以下是正文上篇:

1、测试前的预热

1.1 CTR预估示例

让我们假设我们想要评估我们的广告目标的新CTR预测模型的质量,控制实验(A/B测试)是最可靠的测量方法。

第一步是定义我们想要监控的关键指标。在我们的示例中,我们使用了广告的点击次数:如果测试中新模型的数据更好,我们会选择它并显示更多相关的广告,因此,平均点击次数将增加。

个性化推荐的利器:A/B试验实践指南 (上)

在A/B测试中,我们将用户随机分为两组:对照组和试验组。对于对照组的用户,我们将使用我们现有的模型;对于试验组的用户,我们将使用新的CTR预测模型。

当实验完成时,我们将使用一种可用的统计假设检验来比较对照组和试验组中的平均值(每个用户的平均点击次数)。

1.2 假设检验

为了进行统计检验,我们首先用随机的变量表示空假设和备用假设。通常,空假设没有任何变化。在我们的示例中,应该是“对照组和试验组中的平均点击次数是相同的”。相反,备用假设认为,群体之间存在显著差异。在统计学中,通常分别表示为H0和H1:

个性化推荐的利器:A/B试验实践指南 (上)

假设形成后,我们可以使用几十种统计检验中的一种来进行分析。每一个都可以用两个数字来表征测试的“质量”:测试结果呈阴性的比率(FRP)和灵敏度。

FPR是拒绝H0的概率,而它实际为真。如果统计过程是对的(所有的假设都满足条件并且统计测试对给定的数据工作良好),这个比率由p值控制。

灵敏度是反馈H0的概率,而它实际上为假。

很容易想象一个FPR为0的统计检验。无论A/B测试的结果如何,我们都只能接受H0。通过这样做,我们永远不会得到测试结果呈阴性,因为我们永远不会拒绝H0。但这个统计检验显然是零灵敏度的,因为我们永远不会拒绝H0即使它是假的。

另一方面,很容易想象一个具有100%灵敏度的统计检验。无论A/B测试结果如何,我们都只能拒绝H0。通过这样做,我们将有100%的概率拒绝H0,而它实际上不为真。显然,这个统计测试将有100%的FPR,因为我们永远不会接受H0,即使它真的为真。

正如你可能猜到的那样,在实践中总会有权衡。更高的FPR会给你更高的灵敏度,反之亦然。让我们用非常标准的曼-惠特尼U检验来绘制FPR与灵敏度的关系图。

个性化推荐的利器:A/B试验实践指南 (上)

如果你是一个机器学习专家,你应该认识到这是一个ROC曲线。我们总是希望曲线尽可能靠近左上角。

垂直灰线对应5%的FPR,即标准的p值阈值。这条线与曲线的交点给了你测试的灵敏度,相当于5%的FPR。我们称之为5% FPR的统计检验的幂。在本例中,5% FPR时的标准曼-惠特尼U检验的功率为65%。

从这一点开始,我们将把FPR调整到5%,并比较给定这个水平的各种测试的能力。为了简洁起见,我们将5% FRP下的统计检验功率作为效能。

统计检验的威力取决于四件事:

  1. 测试本身
  2. 实验数据的分布
  3. 影响大小
  4. 测试组的大小

我们将为我们的CTR预测任务模拟一些合理的数据,以绘制各种测试的ROC曲线和功率,来了解根据数据分布应该使用哪种测试方法。

1.3 生成数据

让我们来思考一下最普通的CTR预测任务:对照组和试验组的用户数量相等。每个用户都看到了一些广告,有的进行了点击,有的没有点击。因此,每个用户的特征是展示数量和单击次数。

我们假设广告展示在用户间的分布是对数正态分布:大多数用户看到的广告数量很少,少数用户看到的广告数量很多。在实验中,我们会控制这个分布的偏态。

个性化推荐的利器:A/B试验实践指南 (上)

每个用户用他们自己的平均转化率来评定(ground truth user CTR)。我们假设ground truthuser CTR遵循beta分布。这是概率分布的常见选择,因为它的边界是0和1。在我们的实验中,我们将固定分布的均值不变(均值=成功率)并改变方差。0方差意味着每个用户拥有相同的平均CTR,增加平均CTR,就会有更多不同的用户。具有固定均值的beta分布的方差由beta参数控制。

个性化推荐的利器:A/B试验实践指南 (上)

每个印象都可以转换为概率=ground truth user CTR的点击次数,因此我们从二项分布中对每个用户的点击次数进行抽样,试验次数为展示次数,成功概率等于ground truth user CTR。

个性化推荐的利器:A/B试验实践指南 (上)

对照组和试验组的成功率(beta分布的平均值)在增量上将有所不同。

个性化推荐的利器:A/B试验实践指南 (上)

总结一下,我们的数据生成是这样的:

为对照组初始化N个用户,同样也为试验组初始化N个用户。

从相同的对数正态分布为对照组和试验组中的每个用户生成看到广告的数量。

从beta分布中为每个用户生成ground truth user CTR,对照组为success_rate_control,处理组为success_rate_control*(1+uplift)。

通过二项分布为每个用户生成广告点击次数,试验次数等于浏览量,成功率等于ground truth user CTR。

整个管道重复一次,我们得到了一个“综合A/B测试”的结果。我们将对其进行多次重复,得到NN次的综合A/B测试的结果。对于每个A/B检验,我们将运行一些统计检验,并通过绘制ROC曲线来比较性能。

1.4灵敏度和p值CDF

从我们的数据生成管道,我们获得了NN人工实验,其中H0实际上是假的,应该被拒绝。我们使用统计检验来获得NN的p值,每个实验只有一个p值。在理想情况下,我们希望所有的p值都等于0,因为我们知道实际的对照组和试验组会因为因增量而不同。在实际情况下,p值会以某种方式分布。让我们看看p值的累积密度函数(CDF)。

个性化推荐的利器:A/B试验实践指南 (上)

注意,p值越小,p值的密度越大。p值大多集中在一个小的值区域,如果当我们知道H0是错的(我们在处理组有非0的增量),这就这是好的。

更复杂的是,这里的p值CDF实际上等于统计检验灵敏度。如果我们在p值=0.05处取CDF的值,这实际上就是p值<= 0.05时的实验分数。CDF(0.05)为拒绝H0时的实验分数。我们知道H0在所有的实验中都为真,而CDF(0.05)是当H0实际上不为真(灵敏度)时我们拒绝H0的实验比例。所以我们在这里看到的图正是用于统计检验的ROC曲线(灵敏度vs FPR)。我们将使用此方法绘制ROC曲线,用于各种统计检验方法并进行比较。

1.5p值的完整性检验

在进行统计检验时,我们总是声称FPR是由p值控制的。如果这是真的,那么一切都很好。但不幸的是,它也可能为假。最常见的可能出错的情况是违反统计检验假设(例如违反了t检验的正态性)。需要注意的重要一点是,违反假设是必要的,但并不足以破坏统计检验的结果。如果p-value合理地控制了FPR,那么尽管违反了假设,测试还是会给我们正确的结果。所以对于每个统计检验,我们应该能够检查p值是否控制了我们的数据的FPR。

为此,我们需要做A/A测试。让我们使用相同的数据生成管道,但增值为0。通过这样做,我们将从完全相同的分布中抽取对照组和试验组,因此这里H0为真。当且仅当A/A检验的p值均匀分布于[0,1]时,p值才能一致地控制FPR。

为了理解这一事实,让我们考虑p值阈值为0.05。当实际p值低于这个阈值时,我们拒绝H0并得到假阳性(如前所述,只要我们做A/A测试,H0就是真的)。我们认为,在这种情况下,FPR=p值。例如,在A/A测试中,只有5%的情况下p值< 0.05。这就是均匀性要求。只有当A/A检验的p值分布是均匀的,我们才能对给定的数据使用统计检验。我们会在每次统计测试中检查它大多数时候我们会看到这个漂亮的对角线CDF这意味着一切正常。

个性化推荐的利器:A/B试验实践指南 (上)

下面的章节会介绍十几个具有不同性能、数据分布假设和计算效率的统计测试方法。每个测试都以类似的方式呈现:给出测试方法的简介、数据假设、源引用,以及对其在不同数据分布上性能的分析。

2. 点击量测试

2.1 点击量的t检验

附加假设:无假设(正态性、组间方差相等)

让我们从最基本的方法开始,第一个是关于平均点击量的t检验。我们想让试验组的平均点击量高于对照组,于是将测试出这一差异的显著性。

t检验涉及到对数据的强假设,如检验组之间的正态性和方差相等。然而根据经验,t检验很容易推翻假:我们可以看到,对于大范围的数据分布参数,p值在H0情况下的CDF是均匀的。这页是为什么在括号中给出假设的原因。

让我们设置增量为20%并绘制t检验的结果。

个性化推荐的利器:A/B试验实践指南 (上)

我们使用相同的dashboard来比较所有测试的表现。左上角的大图是灵敏度曲线。左下角是一个条形图,显示给定 p值=0.05时的效能。您可以在灵敏度图中找到相同的值,即蓝色曲线与灰色垂线相交的地方。最强大的测试将有最长的条。
右上角有一个FPR曲线,我们将使用它来监视测试的运行状况,这个曲线应该尽可能接近对角线。最后,有两个直方图反映了数据生成过程:展示量和ground truth user CTR分布。它们会随着我们展示量偏度和ground truth user CTR方差的改变而改变。

正如我们所看到的,标准t检验是非常有效的。给定 p值=0.05的检验效能基本都是0.7,与在H0下的CDF非常一致。

但这可能被认为是一种欺骗。你可能已经注意到,本例中点击量和ground truth user CTRs的分布对于t检验而言非常“准确”。点击量没有严重倾斜,并且ground truth user CTR的标准偏差很小。那让我们改变展示量分布的偏态。

个性化推荐的利器:A/B试验实践指南 (上)

你可以看到,越高的偏度会显著降低t检验的效能。此外,对于偏态较高的分布,t检验的p值在H0显然不服从均匀分布。在值比较小的区域下,p值高估了FPR(图在该区域超过对角线),它变成了对FPR的保守估计。用这个测试方法是可以的,因为我们仍然可以确定FPR<=p-value,但是检验的效能很低。

出现这种情况的主要原因是严重违反了高偏态分布的正态假设。如果展示量分布严重倾斜,点击分布也会倾斜。偏差越大,需要恢复样本均值正态性的样本(用户)就越多。

2.2曼-惠特尼U检验测成功的次数

附加假设:没有假设(度量的单个值不能占度量的大多数)

难点:假设较复杂,计算较复杂

曼-惠特尼U检验是比较平均点击量的另一种基本方法。这个检验对于偏态分布是有效的,原因如下:

它不需要任何数据分布的额外假设

因为它更倾向于点击的排名而不是单击本身,所以它的异常值更多。

括号中给出的假设是对数据中的关系(等度量值)的温和条件。如果99.9%的用户点击了2次,MW测试就不能正常工作。在我们的模拟测试中没有这样的情况,这就是为什么MW测试对我们来说没有问题。但是如果你的大多数用户都进行了0次单击,那么你应该注意了,因为MW测试可能会在你的数据上失败。

曼-惠特尼U检验要注意的是它不比较测试组的样本均值。尽管它的H0非常直观,但它既不等同于中位数比较,也不等同于均值比较。但从大量的数据结果上看,它是运行良好的,并且被广泛使用。

曼-惠特尼U检验的另一个限制是它的计算很复杂。在t检验中,我们只需要样本均值、方差和计数,这些可以在分布式环境中有效地计算。相反的,MW测试需要对指标进行全局排序,这在某些场景中可能造成破坏。

让我们比较一下曼-惠特尼U检验和t检验。

个性化推荐的利器:A/B试验实践指南 (上)

可以看到,当偏度较低时,曼-惠特尼U检验与t检验的功效大致相同(t检验有时甚至更好,因为MW检验中的秩运算会导致一些信息丢失)。但是当分布严重倾斜,t检验的效能下降时,MW检验的功效下降得慢得多。

此外,展示率的偏斜,曼-惠特尼U检验的p值在H0下也遵循均匀分布,这意味着p值总是会得出正确的FPR。但是MW检验开始优于t检验,即使这两种检验在H0下都遵循均匀分布。正如你所看到的,t检验不喜欢数据的偏态。

除了展示量的偏态,点击量偏态的另一个来源是ground truth user CTRs的分布。如果所有用户的CTR大致相同,那么点击的偏斜度将大致与展示量的偏斜度相同。如果CTR在不同用户之间变化很大,点击的偏斜度可能比展示量偏斜度更高。让我们改变groundtruth user CTRs的分布并观察会发生什么。

个性化推荐的利器:A/B试验实践指南 (上)

你可以看到,当ground truth user CTR的方差增加时,曼-惠特尼U检验的表现开始优于t测试。H0下的分布对两种检验都是好的,但t检验再次出现了偏态。

因此,如果您的数据呈严重偏态,可以考虑使用曼-惠特尼U检验而不是t检验。但当偏度较低时,t检验可能是更好的选择。如果您正在处理大数据,那么曼-惠特尼U检验的计算就会很复杂,也很难处理。

下一篇中,我们继续会谈谈:全局CTR检验、用户点击率检验、试验检验方案比较、点击分布和CUPED等话题。

本文由 新媒体之家 作者: DTalks 发表,其版权均为原作者所有,文章内容系作者个人观点,不代表 新媒体之家 对观点赞同或支持,未经许可,请勿转载,题图来自Unsplash,基于CC0协议。
1

发表评论