你的AB实验还是用户分流吗?群分流也可以解决你的一些问题

为什么群随机化A/B Test具有挑战&群配对可能无法工作?
前言

当我们进行A/B测试时,我们需要选择随机单元[1]。例如,如果我们想评估一个产品功能是否会增加用户粘性,我们就会进行A/B测试,并根据用户粒度随机化。通常情况下,网站、手机应用或面向消费者的产品的A/B测试使用用户或其代理(例如基于浏览器cookie的匿名id)作为随机单元。然而, 对于企业使用的应用程序来说,将组织内的用户暴露给不同的实验是不切实际的。 假设我们有一个协作功能,允许用户在窗口中聊天。如果一个群组中有的人可以发起聊天,而其他人却不能,这很可能会引起混乱,并以对产品的不满告终。 通常,企业客户希望组织内的所有用户都能获得一致的体验。 在这种情况下,用户随机化不再有效。 那么,我们如何将A/B测试的优势带到有这样约束的环境中呢? 我们需要另一种随机单元 群随机化的A/B测试。

在本文中,我们将讨论:

  • 什么是群随机化的A/B测试?
  • 为什么群随机化的A/B测试在方差计算、指标power和实验平衡方面会有挑战?
  • delta方法、CUPED方差缩减和SeedFinder如何帮助解决这些挑战?
  • 在开始群随机化的A/B测试之前,我们应该考虑哪些事情?
  • 为什么 群配对 对群随机化的A/B测试可能没有帮助?
  • 我们从微软的案例中学到了什么
什么是群随机化的A/B Test?

群随机化的A/B测试,顾名思义,是一种A/B测试,它将群使用的软件产品实例随机划分为实验和对照组。群是一组需要与产品保持一致体验的用户,例如属于同一组织(如公司、政府机构或学校等)的用户,或者位于同一服务器或同一数据中心的用户。有时,群随机化的A/B测试也称为企业级受控实验[2],或基于集群的随机实验[3]。同一个群中的所有用户都被分配给同一个,来自不同群的用户可能会看到不同的实验。虽然这似乎是一个简单的随机化单元的改变,群随机化的A/B测试在分析和执行方面都有自己的挑战。picture.image

群随机化的A/B Test的挑战是什么?

方差计算。 在群中,产品的用户活动不是独立的、同分布的(i.i.d)[4]。金融机构的用户可能有类似的行为,科技公司的用户往往有类似的产品使用模式。对于群随机化的A/B测试中的用户级指标(即每个用户特定活动的平均数量,等等),i.i.d假设不再成立,naïve方差计算 可能会低估方差 ,导致错误检测变化,实际上是在正常变化内[6]。我们需要对方差计算使用一些替代方法,我们将在下面的解决方案一节中讨论。

指标power。 由群进行的随机化极大地减少了样本容量。假设您的产品有50万用户,平均每个群有大约100个用户。您的实验最终将只有5000个群。这会影响你的指标power。在我们最近对微软产品的研究中,我们在群随机化的A/B测试中观察到显著的power loss(power降低,指标不敏感),他们只能检测到比用户随机化的A/B测试大10倍或更多的实验效果。

实验平衡。 随着样本量的减少,实验更容易受到异常值的影响[5]。如果群的用户与产品的交互与其他群用户非常不同,那么群就是一个异常值。群内的用户数量也可能与其他用户有很大的不同。在许多情况下,我们观察到群不成比例地分布在小群和大群之间,并且存在群大小的长尾分布。如果这些群没有在实验组和对照组之间得到平衡,它们可能导致对实验效果的有偏的估计。

可能的解决方案?

在ExP,我们已经开发了解决方案来解决 指标power,方差估计和实验平衡问题 。这些解决方案有助于解决群随机化的A/B测试中的挑战,也可以用于其他实验场景。

Delta Method

当随机化和分析单元不配对时,Delta方法是一种修正方差估计的简单技术。它利用了这样一个事实:用户级别的指标(例如每个用户的平均会话数)可以直接根据使用数据或用户级别的总和计算。假设有两个群,每个群有两个用户:

累计用户:picture.image

等同于累计群相加:picture.image

而且因为第二个版本只依赖于(i.i.d)群聚合数据,所以可以准确估计方差(需要泰勒展开)[6]。

CUPED方差缩减

CUPED表示使用预实验数据进行对照实验。这是一种定义方差缩减(Variance Reduction, VR)指标的方法,在我们在微软运行的A/B测试中发现了有效和广泛的应用[1]。方差缩减的核心思想是用一个替代的指标代替指标,满足,但是,使用代替可以提升指标power。

CUPED VR利用蒙特卡罗模拟的方差缩减技术,并通过基于线性的模型使用预实验数据来消除可解释的方差[7]。方差缩减指标也被称为回归调整指标。它解释了实验前的数值和实验中的数值之间的关系,并检测出改变这一关系的实验效果。使用VR指标可以检测到原始指标未检测到的差异,并防止从预实验阶段解释表面差异时出现 假阳性。

顾名思义,CUPED VR在实验前需要收集和保存数据。当 实验前和实验中随机单元存在显著重叠时,该方法有效。 通常,我们建议进行1-2周的预试期,以减少方差。由于实验前和实验中的周期配对依赖于随机化单元随时间的稳定性,周期过短会导致配对不佳,而周期过长会降低与实验期间结果指标的相关性。

分析单元与随机化单元不同 时,需要结合Delta方法制定CUPED VR方法。

SeedFinder

SeedFinder解决了实验组和对照组之间可能不平衡的问题。它尝试了数百种随机化的种子,基于实验前数据评估指标,并找到导致最小偏差的种子。试验过程中采用最优种子进行随机选取。为SeedFinder选择合适的指标,例如指标指示群特征,可以帮助在实验组和对照组之间建立平衡的分割,并帮助我们从实验结果中得出可靠的结论[1]。

在开始群随机化A/B测试之前需要考虑什么?

使用上述解决方案,运行群随机化的A/B测试仍然具有挑战性。部分原因是,即使在应用了这些解决方案之后,指标值也受到限制,另外还有 基础设施和数据日志的固有问题。 为了确定运行群随机化的A/B测试是否可行,我们建议检查下面几个点。

**重新考虑群随机化的A/B测试是否有必要

  • 要测试的特性是什么? 它是否要求群内的所有用户具有一致的体验?(如果不是,那么最好是进行用户随机化的A/B测试。)

提前了解探测任务

  • 哪个字段标识了群?
  • 是否有空的群标识符? 如果是,原因是什么? 他们应该被排除在A/B测试之外吗?
  • 有多少不同的群和用户?
  • 群只有一个用户吗? 只有一个用户或只有少量用户的群的比例是多少?他们是否应该被考虑参加A/B测试?
  • 是否有与多个群关联的用户? 如果是,原因是什么? 与这些用户相关的产品应该被排除在分析之外吗?
  • 我们是否进行AA测试来确认均衡,保证每个群只被分配到一个单位中?

指标设计

  • 应该建立哪些指标来评估功能?
  • 这些指标中哪些是群级指标,哪些是用户级指标?(用户级/单平均指标主要反映对大型群的影响,而群级/双平均指标主要反映对小型群的影响。)
  • 实验平台是否支持指标方差估计的Delta方法? 如果没有,则只能应用群级别的指标。
  • 每个指标的最小可检测的实验效果是什么?

提高指标敏感度

  • 在实验前和实验中, 群是否有明显的重叠? 如果答案是肯定的,CUPED VR就可以应用。
  • 应用方差缩减后可能有哪些改进? 是否大到可以检测到特征效应?

有效检验

  • 有“异常”群吗?如果在A/A测试中不能平衡实验组和对照组,它们是否会导致指标发生变化?
  • 实验平台是否支持SeedFinder方法来寻找随机化的好种子?
了解群配对?

方法。 理想情况下,我们希望比较具有相似属性的群。我们要确保对照组中的群混合与实验组中的群混合相似。一种选择是考虑使用 配对 对来提高平衡感。在群配对中,我们 将所有群分组,同一对中的两个群彼此相似。 相似度可以通过一组有选择的属性来定义,如地理、工业等,或者基于机器学习的结果, 在这些结果中应用编码、聚类和近似最近邻方法。 当进行变量分配时,我们从每一对中随机选择一个群将其分配给实验组,将另一个群分配给对照组。

分析。 这种配对变量分配可以被视为约束随机化,这与群随机化不同,是一种纯随机化。因此,我们将 无法使用标准的双样本t检验来衡量度量移动的显著性。 相反,我们必须使用 配对t检验。 其思想是计算每一对实验组和对照组之间的指标值的差异,并对该差异样本与零进行单样本t检验。

问题。 我们在研究中尝试过这种方法;然而,我们发现, 与常规的基于群的变量分配相比,群配对始终不能提供更好的分配平衡或指标敏感性。 主要问题是群配对带来的数据丢失。群配对依赖于历史数据,结果只包含历史时期使用过产品的群。 如果在实验期间有新的群来使用该产品,那么他们不会被包含在配对结果中,因此不会被随机化。 此外,如果一对中的一个群没有出现在实验中,则必须将其对应的租户排除在分析之外。事实上,在我们分析的测试中,使用群配对会导致50%以上的数据丢失。

其他限制。 基于配对的随机化还受到其他限制。naïve配对t检验不能应用于任何随机分组水平。此外,基于配对的随机化在进行分段分析时需要额外的努力,分段分析是根据特定的维度(如平台、区域等)对数据进行切片,以确定对人群亚组的实验效果。在进行分段分析时,同一对中的两个群必须属于同一段。否则,它们将不得不在段级别上被抛弃,从而导致进一步的数据丢失。

在基础设施方面,群配对需要大量的工程工作和维护。如果群配对是 基于机器学习算法,那么模型参数需要定期调整和刷新 ,因为随着时间的推移,它们可能会变得陈旧。此外,支持群配对需要在现有实验平台上更改基础设施,例如除了标准t-test之外还支持配对t-test,等等。

建议。 为了评估真实产品的这些因素,在群随机化的A/B测试中,我们目前推荐随机分配,而不是配对随机分配。

其他考虑

在我们的研究中,我们使用了delta方法、CUPED VR和SeedFinder来解决上述挑战。我们发现使用CUPED VR(结合用户级指标的Delta方法)极大地提高了群级和用户级指标的敏感性。然而,改进后的指标灵敏度仍然低于我们在用户随机实验中所能达到的水平。我们扩大了研究范围,寻找可能提供进一步改善的不同方法。这包括截断基于计数的指标 (基于7天数据排除第99百分位数的值) ,排除1个用户的群,并结合上述方法使用CUPED VR。

结果表明,使用截断和模拟现实的组合提供了最大的指标灵敏度的提升,无论是群级别和用户级别的指标。 大多数基于计数的参数(e.g.如每个用户会话次数)都有80%以上的改进,而用户级参数的改进幅度高达97%。但是,排除1用户租户后,效果并不一致。对于某些产品,它提高了指标灵敏度。对于其他人来说,指标的变化主要是由大群驱动的,而不是小群。在这些场景中,删除1个用户的群实际上加剧了问题。

结论

总的来说,用户随机化的A/B测试比群随机化的A/B测试具有更好的指标敏感性。在群随机化的A/B测试中,我们可以使用多种方法来缩小差距,其中,指标限制和回归调整的常见方差控制技术被观察到是最有效的。然而,群随机化仍然会导致有限的指标power。因此,我们不建议广泛采用群随机化的A/B测试。它应该只在必要的时候使用,实验者应该遵循最佳的指标设计实践,并确保使用方差缩减的指标来检测指标的变化。一次只测试一个变量,而不是同时测试多个变量,以产生尽可能大的样本容量来进行实验分析也是明智的。

参考文献

一些优秀的参考文献链接请参考:https://zhuanlan.zhihu.com/p/364455658

如果你感觉这对你的工作学习有帮助,请点赞关注一键三连,支持我的工作。

扫码加我好友进微信群|QQ群

picture.image picture.image

点击阅读原文,获取更多内容。

0
0
0
0
评论
未登录
暂无评论