注:本文是一篇英文博客的中文翻译,原文请见:https://statsig.com/blog/stratified-sampling-in-ab-tests
分层抽样是一种在抽样前将总体划分为更小、独特的子群体或层的技术。这种方法在A/B测试中至关重要,因为它确保每个子群体都得到充分代表,从而提供更准确、无偏的样本,反映整个总体的多样性。对于实践者来说,这意味着由小型高使用率用户群体驱动的随机假阳性结果的可能性更小。
分层抽样在A/B测试中如此有价值的原因归结为它对精确性和可靠性的影响。分层抽样通过强化实验中独立同分布假设中的"同分布"要素来降低假阳性率。
通过将分层抽样整合到您的A/B测试框架中,配合大多数实验平台提供的细分功能,您不仅仅是在做实验;您还将准确了解用户群体的不同细分如何响应变化,从而实现更有针对性和更有效的优化。
在设置A/B测试时,选择正确的分层是第一步。思考哪些因素可能影响结果——年龄、地理位置、使用频率?这些就是您的分层。
以下是如何确定这些关键要素的方法:
识别关键协变量:查看历史数据,了解哪些人口统计特征或行为与您正在测试的变化密切相关。
对用户进行分类:根据这些已识别的协变量对用户进行分组。这确保每个类别都得到测试。
在平衡方面会有权衡。通常,实验单位数量少但对指标贡献大的群体是最重要的平衡对象。
如果您有两个群体,每个群体贡献了50%的总价值,其中一个有100,000个用户,而另一个只有10个用户,那么10人的群体更有可能在您的实验组之间分配不均。如果其中8个在测试组,2个在对照组,即使没有处理效应,您也会报告85%的提升!分层抽样可以防止这种情况发生。
通过遵循这些步骤,您正在为A/B测试奠定一个能够产生深刻、可操作结果的基础。
有三种常见的分层方法:
在分配方案中实施。 这通常通过保持每个层的分配计数器来实现,并在实验进行过程中调整分配率以保持平衡。这适用于小型实验或离线实验,但在大规模实时平台中可能具有挑战性,因为查找这些索引和用户现有分配的成本和延迟较高。大多数平台使用哈希算法来确定性地将用户分配到同一组,而无需为后续访问进行数据库查找。
事后抽样或使用CUPED等工具。 可以在事后过滤掉某个细分中的"多余用户";在上面的例子中,我们可以从分析中随机过滤掉6个头部用户,以平衡2-2的比较。代价是失去一些关键数据点。
如果实施得当,CUPED也可以通过协变量对数据进行功能性分层。这确实需要您正确设置回归,以便完全覆盖分层协变量,并且您的算法能够无问题地处理分类回归。例如,在独热编码中,通常会删除低频组——而这些可能正是您关心的组!
实验前抽样。 这是Statsig等公司使用的技术,用于识别哈希算法中使用的"盐值",以提供平衡的结果。通过模拟不同的盐值并使用修改后的卡方技术,您可以识别出产生分层总体的平衡随机化。
建议将CUPED与其他解决方案之一结合使用,以保证公平分配。通过正确使用这些方法之一,您可以确保A/B测试既高效又有效,为用户行为和偏好提供可靠的洞察。