与Cuped一起提高A / B测试的灵敏度。Yandex中的报告

CUPED(使用实验前数据进行对照实验)是一种A / B实验技术,相对较新的技术已在生产中使用。它允许您通过使用先前获得的数据来提高指标的敏感性。灵敏度越高,在实验中可以注意到并考虑到的变化就越细微。最早引入CUPED的公司是Microsoft。现在,许多国际公司都在使用这种技术。Valery Babushkin在他的报告中Venheads 解释了CUPED的含义是什么以及可以实现什么结果,在此之前,他研究了分层方法,该方法也提高了灵敏度。


-我叫Valery Babushkin,我是X5 Retail Group的建模和数据分析主管以及Yandex.Market的顾问。在业余时间,我在高等经济学校任教,并经常飞往哈萨克斯坦,在哈萨克斯坦国家银行任教。

此外,我以前喜欢竞争性的机器学习。在Kaggle平台上,我曾经获得“竞赛大师”的头衔,在全球12万的排名中名列23。Kaggle的设计非常简单:如果您没有表现出色,那么您的排名就会下降。因此,我尽量不再去那里,以免看到这些数字。



我的演讲将分为两个阶段:分层和控制变量。您很可能知道A / B测试是什么以及为什么需要它们。但是我们不会跳过这个公式。



在A / B测试中,有多种方法。原则上,这是统计中的两种主要方法。其中之一称为频率,第二个称为贝叶斯。例如,在一些书籍中,在埃夫隆(Efron)中,第三种方法是费舍尔(Fisher's),但我们不会谈论它,也不会谈论贝叶斯方法。让我们谈谈频率法。

频率法中有一个简单的公式。它们有两种,但是一种考虑离散分布,另一种考虑连续分布,因此我们将其视为一个公式。

这个公式告诉我们需要多少个观测值。如果我们有能力收集无限数量的数据,我们将获得每个分布的真实值,然后简单地比较它们的点估计。尽管我们可以比较无限数量数据的点估计-这是一个问题,但是仍然如此。我们将得到一个真实的分布,比较它们并说哪个更好。

不幸的是,我们无法做到这一点;我们始终对可收集的数据量有限制。原因可能是由于我们的用户数量,或者是我们可以收集这些数据的时间,或者是因为他们只是想尽快从我们这里获取结果。

我们在这里看到n的一个非常简单的公式,其中n是每个组中必需的观测数。在分子中z2哪里 z2-置信区间,即我们要给出结果的可靠性程度。

似乎很明显z我们只修复了一次,无法进一步更改。当然,我们可以说我们给结果的可信度为零,然后我们需要零观测值。那会很方便,但我们通常不会。

进一步在分子中,如果我们看一下离散公式,则是p^(1p^),等于二项式分布的方差。在连续情况下,同样的事情,σ 2,即,方差。从逻辑上讲,方差越大,我们需要的观察就越多。

分母包含m 2或误差范围-这是我们要捕捉的最小差,在这里情况恰好相反。我们想要捕捉的差异越小,我们需要的观察就越多。也就是说,这有点像错误。

如果我们需要0.01的误差,那么与需要0.1的误差相比,我们需要的观测值要多100倍。它们相差十倍,但是存在二次依赖关系,因此需要更多的观测值一百倍。

我曾经有一份关于线性化的报告。今天我将告诉我们如何减小方差,并在适当的时候告诉我们如何增大m。增加m似乎是一个更好的策略,因为将m增加一半会使计算所需的数据量减少4。增加意味着我们可以犯的错误。

而且,如果我们将方差减少一半,那么我们只需要两倍的观测值即可。因此,在分母中减少四倍可以使增益增加16倍,在分子中减少四倍-仅获得四倍。

但是,每种方法都有其优点和缺点。然后,我可以更详细地说明哪些。现在我们转向减少方差。

分层。顺便说一句,最后我将在每个部分获得实验结果,这是我们在真实环境中获得的真实数据的结果。



因此,让我们谈谈分层。我们知道什么?我们知道减少方差会减少观察次数。假设我们可以通过分组将期望的度量标准分解为某些区域。已经提出了一个很好的问题:如何分解?按国家?还是在浏览器上?也许去操作系统?也许使用Mac,Windows和Linux登录的用户是三种不同类型的用户。

如果找到这样的值或符号可以将其划分为组,则可以执行以下操作:划分为K个组,其中K是唯一数量的数量等于我们拥有的组的数量。对于操作系统(三个国家)(国家)等国家/地区的数量。

此外,落入每个组的概率等于分母中所有观察值的数量和分子中每个组中观察值的数量。也就是说,我们可以预先估算大约的权重,如果有总数的用户,那么有这么多的用户来自Mac,那么多的Windows用户,那么多的Linux用户,我们可以立即计算权重和新用户来自的权重此操作系统。

然后,我们的指标的平均分层将由一个非常简单的公式表示。这是层中度量的值乘以层的权重,因此我们对所有层进行求和。该公式非常明显,我认为不需要对其进行专门分析。



此外,它可能更加复杂。我们将花费几分钟来解析这些公式,但是如果您突然不了解某些内容-不用担心,我一次要花费三个小时来解析它们。

我们在这里看到什么?分层指标的平均值与随机抽样的平均值没有区别。证明这一点并不难,它只是加权的余额,最终等于整个组的加权。

但是差异更有趣。实际上,我们还知道一个非常简单的公式,即方差之和(两个量的方差)是其方差之和加上协变量(如果它们不是独立的),具有某种系数。这些方差之和本身也具有系数。

实际上,如果您注意的话,正是在这里显示了这些系数,这就是进入层的可能性。因此,整个分层的方差是每个层次中具有一定权重的方差。体重就是进入这个阶层的可能性。

到目前为止,一切似乎都很合理。最后,整个分层的方差将等于此公式。如果您现在不知道为什么,也没关系。最主要的是要记住。



现在让我们谈谈随机抽样的平均值和方差。 SRS是简单的随机抽样,即随机抽样。

您可能会猜到,随机采样的平均值等于平均值​​。我认为,在这里,尤其是不必深入研究某些东西。但是,如果您查看经典公式,则随机抽样的方差非常清楚。这是σ 2倍一个除以n。如果我们回想起标准误​​差公式,则将其除以n的根。这是平均值的方差。

但我想将其分解为各个部分。



因此,如果我们将其分解为几个组成部分,然后看下面一系列简单的计算,我们将看到(您必须相信我,我们不会经历所有这些行,但是在这里它们并不很复杂)它由两个成员组成。



记住这一点。相信我,这是分层情况下的差异。



如果我们注意随机抽样的方差是由什么组成的,则它由两个成员组成:第一个成员等于分层的方差,第二个成员。

有什么意义?如果简要考虑一下,则随机抽样的方差可以表示为分层组内以及分层组之间的方差之和。有n个基团,在组内存在a的分散,b是组之间的分散。如果有人记得,它与分析大致相同。组内存在分散,组之间存在分散。是合乎逻辑的。

事实证明,在最佳情况下,随机抽样的离散度可以等于分层的方差,或者更大。为什么?因为如果此成员等于零(并且由于存在平方并且概率不能为负,所以不能小于零),那么显然存在大于或等于零的值。在这里,它等于您在分层中看到的内容。事实证明,至少对于这个成员,我们赢了,减少了方差。



这和我现在说的一样,所以我们跳过它。但是您可能会对我讲的内容感兴趣。顺便说一句,每张幻灯片的底部是采用该公式的文章的名称。本演讲中有三篇文章,您可以阅读*

我们读了一些文章,说了一些话,但这不是很有趣。有趣的是,在现实生活中事物如何运作。关于此-下一张幻灯片。



我获取了数据,开始观察它在现实生活中的工作方式。在现实生活中,我的差异下降了多达百分之一。

有人怀疑增长如此之小,仅是因为我们拥有大量数据,并且各层之间通常没有很大的分散。他们已经被解决,并且很有代表性。但是,似乎如果数据不够多,或者样本中存在某种违规行为,或者它不是完全随机的(顺便说一下,这种情况经常发生),则增加的幅度可能更大。

而且这种方法很容易实现。注意,没什么复杂的。也就是说,您从每个层次中抽样一些与整个样本中进入该层次的概率成比例的量。一切都很合理。

让我们继续第二部分。杯形的我不知道该如何正确发音,实际上这是协变量,我们使用实验数据。



重点也很简单。在没有对变量X产生实验效果的意义上,我们采用独立于Y的随机变量X。

如何实现呢?最简单的方法是采用变量X,该变量是在实验开始之前获得的。然后,我们可以确定该实验不会对其产生影响。

更远。我们可以引入一个新的度量,作为Y和θX之差来计算。这在公式中表示:新度量标准,我们称其为Ycuped,是我们所需的度量标准减去θ乘以X。

这就是我们已经讨论的内容。一个简单的公式,使我们能够计算两个量之差的方差。这是第一量值的方差。由于它的单位系数为1 2,我们将其删除。另外,第二个量的系数是X2的方差θ2。但是,由于这是一个减法,因此减去2θ,即Y和X之间的协方差。

如果它们是独立的量,那将是什么?零。独立数量之间的协方差为零。看来,如果我们采取独立的价值观,那么我们绝对不会变得更好。



然后,我们需要取一些相关量,然后又有一个超参数,我们称它为θ。什么时候可以使方差最小化?当θ等于Y和X的协方差除以X的方差时。



我现在不详细研究为什么会这样,但是如果您看一下这个简单的方程式,您也可以推论得出。



如果这样做,我们将得到一个非常方便的简单转换,结果方差将表示为方差Y,乘以1减去度量Y和度量X之间的相关平方。这很好。

为什么这样做?我们假设由于两个因素或两个原因,我们的度量Y有方差。这是由于一些协变量X和其他所有因素。我们可以做到,对吧?我们说:伙计们,由于X而我们拥有什么,我们删除了,仅由于所有其他原因而离开了。



从下一张幻灯片上的图表中,可以清楚地知道为什么这样做。有什么想法为什么可行?除了我写的公式,在此之前,还有公式。原来那行不通。最终,我们没有看到最终结果,也证明它不起作用。

当我们进行A / B测试时,首先让我们感兴趣的是什么?差异是平均值。在绝大多数情况下,我们不会考虑任何分位数。顺便说一下,虽然Uber非常喜欢看四分位数,有时看它们很重要,但平均值可以保持不变,分位数可以发生巨大变化,而增加了某种99%分位数的用户将逐渐减少。优步有这个等待时间。这是女主人的便条。

但是我们经常对手段上的差异感兴趣。我们希望使用不会改变均值差异的方法。因为如果我们谈论线性化,那么我们正在进入一个新的属性空间。是的,一切都很棒。我们可以将某些A / B测试的速度提高64倍。是的,它是成比例的,但我们不能说这种均值差异实际上是多少。

要计算均值之差并得出所有结论,您需要使θ对所有组均相同。组是A1,A2,B,C,依此类推。这些是测试单元或A / B测试的变体。

如何选择指标X?指标X的逻辑选择是相同的指标Y,但在实验周期之前的周期。例如,如果这是您的用户平均会话时长,那么您可以计算出实验前一段时间内用户会话的平均时长,在实验过程中,彼此减去一个,仅查看它们之间的偏差。它可能会让您更感兴趣。

顺便说一句,这里出现了一个有趣的问题-我们应在什么时期采用指标X?一天,一周,两周?没有理论上的答案,但实际的答案表明两周是最佳的正负。原则上,可以取并绘制实验数据,取决于减少多少色散以及测试收敛多少,具体取决于我们花费X的时间。



为什么它起作用?看,这是一个非常简单的图形,非常简单的图片。它显示了X值和Y值,即我们在实验之前和之后的一段时间内为用户提供的指标值。

我们在做什么?我们选择θ。我们同样可以使用最小二乘法选择它。也就是说,这是一条特定的中间线,它给出了最少的余额。剩下的就是在线上什么和在线之间的区别。

因此,我们正在以某种方式尝试求平均并仍然获得度量的平均值。指标的平均值不变。在我看来,我自己并不完全理解我现在所说的话,您可能不得不加倍努力,因为我已经看到了这一点。让我们再试一次。我们有X轴和Y轴。我们可以在X轴上标记实验之前的值,并在Y轴上标记实验期间的相应值。也就是说,我们在XY坐标中得到了某个点。我们可以在图表上标记它。

如果没有发生任何变化,那么这些观点将与我们一致。这将是我们的二等分。因为X等于Y。但是实际上这不会发生,同意吗?在某些情况下,指标Y的值会更大,在某些情况下会更小。

我们想了解并获得这种差异。因为其他事情对我们来说并不那么有趣。例如,如果我们没有差异,那么我们进行一个实验,并且X等于Y-这意味着我们的实验极有可能没有影响。如果我们进行了实验,发现在任何地方Y都稳定地位于X之上,那么这是一个认为我们可能影响了某些情况的机会。如果我们在X以下有稳定的Y,也不会很好。最有可能的是,我们产生了负面影响。

事实证明,我们试图绘制一条描述X和Y之间关系的线,以最大程度地减少这种差异。线性回归也完成了。同意存在线性回归,请考虑一个自变量和一个因变量。您想要尽可能准确地描述。

这是我们的产品线,这是我们的新杯形度量标准,这正是平均杯形值不变的原因。 Ycuped值将与平均值的Y值保持不变。为什么?因为。有必要立即说明这一点。 :)顺便说一下,原始文章这样说:请注意,搜索θ与回归之间有一个非常有趣的联系。就是这个。

我再说一遍,我们很感兴趣看到实验本身如何影响用户行为,相对于基本行为而言,变化有多大。假设始终进行该操作,并且有两个用户:一个用户始终进行10分钟的会话,另一个用户进行100分钟。进行了一些更改,第一个用户仍然花费100分钟,第二个用户仍然花费12分钟。在一种情况下,差异为零;在另一种情况下,差异为零。但是简单地将数字12和100进行比较可能不是很合理。我们要另一个。我们称其为“规范化”。当然,这是不正确的,但是。

现在让我们继续进行实验。



我们看到了什么?这是我真的不喜欢Jupyter笔记本电脑的屏幕截图(我更喜欢PyCharm),但我还是做到了。杯形度量的方差和标准度量的方差已在此处给出。看到它们有多少不同? Ycup的大小要小得多,并且平均值没有不同。

更确切地说,它们没有区别。在小数点后15位的某个地方,它们可能有所不同,但是我们将假定这是与舍入相关的错误。

我们在这里看到什么?分散度下降了45%。这是在线数据。我们在X5中观察到的是方差下降了四倍。在X5中,我们在商店内有某种行为,可以是星期几,小时,星期几和星期几的平均值。看,我们可以选择越来越相关的协变量。似乎周一的有条件人数应与下周一的人数相关。如果我们看起来更深一点,那么晚上六点的星期一应该与晚上六点的星期一更加紧密地关联。周日下午三点,另一个周日下午三点。

我在现实生活中看到的最大方差下降是19倍。有什么好处?这样做也非常简单,您必须承认根本不需要思考。发现协变量,发现θ。顺便说一下,θ是根据一个非常简单的公式求出的,一切都已经完成。



减去后,得出转换后的指标。她的平均水平没有改变,这非常好。用一种普通的语言向企业解释,为什么会发生这种情况。您说的是,我们不仅对用户的平均行为方式感兴趣,而且对他们的行为与平均值之间的变化感兴趣。就是这样。

在某些情况下,选择正确的协变量可能会有困难,但这通常不是问题。总是有可能(很少,如果不可能的话)采用上一个实验期的值。有用。方差减少19倍意味着A / B测试所需的数据量也减少了19倍。也就是说,您可以由此更快地获得结果,从而提高了测试的灵敏度。

如果您已经具有一定数量的A / B测试,则可以以相同的追溯方式运行此杯状测试,并计算第一类和第二类的误差。如果您进行AA测试,则可以算出第一种错误。在杯状咖啡上,您将以相同的方式花费-并以相同的方式可以评估您的灵敏度提高了多少。


* :
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-Experiment Data
Improving the Sensitivity of Online Controlled Experiments: Case Studies at Netflix
How Booking.com increases the power of online experiments with CUPED

All Articles