写点什么

【A/B 实验常见问题】实验异常值应该如何处理?

  • 2025-01-10
    北京
  • 本文字数:2734 字

    阅读完需:约 9 分钟

本文作者:数据资产与应用部 刘未名、吴柏威

欢迎与我们多交流~

背景

大家在做实验时有没有遇到过以下的问题?

实验分流不太稳定,多次分流以后,发现随机分组历史数据指标波动特别大实验结果不符合预期,在去掉几个特殊用户后结果变化较大、甚至正负反转不同的业务场景设置的指标过滤规则不同,例如 A 场景过滤掉了成单超过 100 单的用户、但 B 场景没有过滤,实验指标应该选择哪个

这里实验者大概率是遇到了实验中的异常值问题,我们接下来会讨论在互联网 AB 实验场景中,应该如何进行处理?

概念解析

从严格的学术角度来看,异常值并没有一个统一的定义和划分标准,在不同的领域会根据使用目的和数据特点有不同的定义逻辑和检验方法。即我们可以得到“在一个样本或集合中,与其余样本均有较大差异的样本点就是异常值”这样一个通用、模糊的概念,但具体差异较大的判定标准是什么,检测差异的方法有哪些,场景之间各不相同。

举个例子,很多人都听说过的 3sigma 原则指的是:如果一个样本取值超过了

均值±3∗标准差均值±3∗标准差

这个范围,那么就属于异常值。但这个标准通常假设了样本的分布属于正态分布或者近似正态分布,对于互联网公司的幂律分布指标适用性较差,我相信大家都能感受到“JD 大盘 Top1%的用户成单 GMV 都是异常值”这个结论有多么的离谱。




基于上述思考,后续研究中我们会着重研究在大样本、幂律分布等和互联网 AB 实验面临状况比较相似的情况,并参考比如调研分析、社会学等直接收集人类社会经济活动数据的学术分枝统计方法,以及新兴的算法方向的异常值检测、处理方法。



异常值产生的基本原因

•数据收集过程中的测量误差(工具误差)

•群体中个体的差异性(抽样带来的随机性)

•数据造假、作弊(刷单)

•收集的样本来源于不同的群体(比如京东 App 中有很多背后是 B 端的用户)



AB 实验中异常值剔除的作用与局限性

1.为什么 AB 实验需要进行异常值处理?

•有一小部分异常用户,由于数据分布非常异常,造成了分流时无法将这一批用户每一次都很完美的均匀分布在实验组、对照组,异常用户在哪、哪个组就会出现 AA 不均匀的情况

•由于异常用户的指标值较大,造成了整体指标的波动性较大,让实验的精度变差、样本量需求变大,原本可以观测的实验效果就会被淹没在噪音中(指标方差较大带来实验最小提升量-MDE 较大)

2.异常值剔除方案的局限性

•做不到的:无法识别业务逻辑中认定的异常值以及异常用户(比如 xx 用户命中了 xx 风控规则,所有数据不可信),无法识别指标统计错误(比如某用户 1 天内在一个页面的停留时长超过 24H)

•能做但做不好的:降低指标的波动性,但同时可能会去掉了部分有效样本和有效数据,会让样本产生偏差(bias)。此时需要用更多的样本才能进行更灵敏的实验,或使用 ANCOVA、CUPED 等方差缩减的方法。



传统统计学方法的应用——trim & winsorize 方法对于补贴实验的效果对比

1.什么是 trim 方法与 winsorize 方法,为什么选择这些方法?

这两种方法其实源自于上个世纪的调研分析方法,当年的统计学家除了会遇到样本量不足的问题外,也会遇到在样本收集、统计过程中发生错误而导致的异常值。在当年各种算法技术、算力限制的情况下,统计学家会通过观察、处理当前数据指标分布的方式,对样本进行更加稳健的估计。具体来看

◦Winsorizing(或缩尾法):当样本点的取值超过样本的特定分位数后,将取值直接替换为分位数值

◦Trimming(或去尾法):当样本点的取值超过样本的特定分位数后,将样本点直接丢弃

2.数据表现

•我们使用异常值处理后对样本均值、标准差的影响作对比,可以发现在同样的分位数下,trimming 方法通常会有更大的效果。





•但如果我们忽略掉具体的分位数选择,直接对比方法的损失(横轴,均值估计偏差)与收益(纵轴,方差缩减效果),可以发现 winsorize 方法更具有优势,即在相同的均值估计偏差下,有更大的方差缩减效果(即下图中,左下角更好)。





•方法对于实验的一类、二类错误影响如下👇





3.方案原理、效果对比

•在我们认为实验收集到的样本基本都是正常数据,只是分布比较分散时,不要轻易丢弃样本点,以防止损失样本对应的信息,此时 Winsorizing(或缩尾法)相对是一个更加稳健的做法

•当样本中包含了很多脏数据和异常用户时(例如作弊、刷单用户),他们带来的信息会将会影响到样本的分布状态,那么使用 trimming 方法去掉他们会尽可能减弱此类影响

•在没有很多的业务输入情况下,可以根据数据的分布特征,并用 winsorizing 方法进行相对保守的异常值处理。

4.业务落地建议

•对于不同场景、不同类型的指标,业务需要根据自身场景特点,尽量排除脏数据、刷单作弊数据等异常情况

•对于本场景的重点指标,可以由分析人员进行一次性的分析,在得到合理的处理方案后可以尝试固化在实验平台



风控模型的应用

风控模型在内容时长指标异常值处理的应用👇

例:某实验在 2024-09-30 对照组出现人均时长指标异常增加的情况,影响实验观测。





注:数据已经做脱敏处理

通过排查发现若干异常用户的作弊行为,反馈风控团队进行剔刷。剔刷后,作弊用户数据有效减少。另一方面,从实验信息上报的角度,采用服务端上报也可以从一定程度避免异常用户进入实验,减少异常值,让实验数据更可靠。



一些异常值检测方法的介绍

从实验平台功能建设上,往往采用计算量较小的较为通用的方案;一种适用于实验平台的异常值检测方法:当峰度大于某个阈值时,取 top x%极大值作为异常样本。其核心思想是根据数据分布判断是否需要进行异常值处理,然后通过分位数划定异常样本范围。

峰度:对实值随机变量的概率分布的尾部的度量,峰度高就意味着方差增大是由低频度的大于或小于平均值的极端差值引起的。峰度计算公式如下:γ2=μ4/σ4−3γ2​=μ4​/σ4−3,其中μ4μ4​表示四阶矩。

对于特定的数据,Z-score 等简单方法效果不佳时,我们也可以使用较为复杂的方法进行处理。下面是一些异常值检测方法的简单



附录

实验波动性和实验精确度的关系:在计算实验效果时,利用实验组、对照组的均值、方差、样本量可以进行实验效果的假设检验,公式如下:



T=E(ATE)σATET=σATEE(ATE)​



其中,



E(ATE)=μT−μCvar(ATE)=σATE2=σT2nT+σC2nCE(ATE)=μT​−μCvar(ATE)=σATE2​=nTσT2​​+nCσC2​​



可以看到,如果实验的波动性(var(ATE))越大,在实验效果(E(ATE))不变的情况下,那 T 统计量就越小,实验就越不容易显著(精度较差);此时就需要减小 var(ATE),即通过改变样本方差和样本量来减小样本波动性。



关于我们

试金石作为京东零售统一的 AB 实验平台,致力于通过数据驱动的 AB 测试方法,进行科学的实验设计和数据分析,为业务提供客观、可靠的实验结果,帮助业务持续优化产品和服务;让业务能够自助、高效的运行实验,科学的进行业务决策,赋能业务持续迭代。

发布于: 刚刚阅读数: 3
用户头像

还未添加个人签名 2024-01-12 加入

京东零售那些事,有品、有调又有料的研发资讯,带你深入了解程序猿的生活和工作。

评论

发布
暂无评论
【A/B实验常见问题】实验异常值应该如何处理?_京东零售技术_InfoQ写作社区