【A/B实验常见问题】实验异常值应该如何处理?
大家在做实验时有没有遇到过以下的问题?
实验分流不太稳定,多次分流以后,发现随机分组历史数据指标波动特别大 实验结果不符合预期,在去掉几个特殊用户后结果变化较大、甚至正负反转 不同的业务场景设置的指标过滤规则不同,例如A场景过滤掉了成单超过100单的用户、但B场景没有过滤,实验指标应该选择哪个?
这里实验者大概率是遇到了实验中的异常值问题,我们接下来会讨论在互联网AB实验场景中,应该如何进行处理?
从严格的学术角度来看,异常值并没有一个统一的定义和划分标准,在不同的领域会根据使用目的和数据特点有不同的定义逻辑和检验方法。即我们可以得到“在一个样本或集合中,与其余样本均有较大差异的样本点就是异常值”这样一个通用、模糊的概念,但具体差异较大的判定标准是什么,检测差异的方法有哪些,场景之间各不相同。
基于上述思考,后续研究中我们会着重研究在大样本、幂律分布等和互联网AB实验面临状况比较相似的情况,并参考比如调研分析、社会学等直接收集人类社会经济活动数据的学术分支统计方法,以及新兴的算法方向的异常值检测、处理方法。
数据收集过程中的测量误差(工具误差)
群体中个体的差异性(抽样带来的随机性)
数据造假、作弊(刷单)
收集的样本来源于不同的群体(比如京东App中有很多背后是B端的用户)
1.为什么AB实验需要进行异常值处理?
有一小部分异常用户,由于数据分布非常异常,造成了分流时无法将这一批用户每一次都很完美的均匀分布在实验组、对照组,异常用户在哪、哪个组就会出现AA不均匀的情况 由于异常用户的指标值较大,造成了整体指标的波动性较大,让实验的精度变差、样本量需求变大,原本可以观测的实验效果就会被淹没在噪音中(指标方差较大带来实验最小提升量-MDE较大)
2.异常值剔除方案的局限性
做不到的:无法识别业务逻辑中认定的异常值以及异常用户(比如xx用户命中了xx风控规则,所有数据不可信),无法识别指标统计错误(比如某用户1天内在一个页面的停留时长超过24H) 能做但做不好的:降低指标的波动性,但同时可能会去掉了部分有效样本和有效数据,会让样本产生偏差(bias)。此时需要用更多的样本才能进行更灵敏的实验,或使用ANCOVA、CUPED等方差缩减的方法。
1.什么是trim方法与winsorize方法,为什么选择这些方法?
这两种方法其实源自于上个世纪的调研分析方法,当年的统计学家除了会遇到样本量不足的问题外,也会遇到在样本收集、统计过程中发生错误而导致的异常值。在当年各种算法技术、算力限制的情况下,统计学家会通过观察、处理当前数据指标分布的方式,对样本进行更加稳健的估计。具体来看:
Winsorizing(或缩尾法):当样本点的取值超过样本的特定分位数后,将取值直接替换为分位数值 Trimming(或去尾法):当样本点的取值超过样本的特定分位数后,将样本点直接丢弃
2.数据表现
我们使用异常值处理后对样本均值、标准差的影响作对比,可以发现在同样的分位数下,trimming方法通常会有更大的效果。
但如果我们忽略掉具体的分位数选择,直接对比方法的损失(横轴,均值估计偏差)与收益(纵轴,方差缩减效果),可以发现winsorize方法更具有优势,即在相同的均值估计偏差下,有更大的方差缩减效果(即下图中,左下角更好)。
方法对于实验的一类、二类错误影响如下
3.方案原理、效果对比
在我们认为实验收集到的样本基本都是正常数据,只是分布比较分散时,不要轻易丢弃样本点,以防止损失样本对应的信息,此时Winsorizing(或缩尾法)相对是一个更加稳健的做法。 当样本中包含了很多脏数据和异常用户时(例如作弊、刷单用户),他们带来的信息会将会影响到样本的分布状态,那么使用trimming方法去掉他们会尽可能减弱此类影响。 在没有很多的业务输入情况下,可以根据数据的分布特征,并用winsorizing方法进行相对保守的异常值处理。
对于不同场景、不同类型的指标,业务需要根据自身场景特点,尽量排除脏数据、刷单作弊数据等异常情况。
对于本场景的重点指标,可以由分析人员进行一次性的分析,在得到合理的处理方案后可以尝试固化在实验平台。
风控模型在内容时长指标异常值处理的应用
通过排查发现若干异常用户的作弊行为,反馈风控团队进行剔刷。剔刷后,作弊用户数据有效减少。另一方面,从实验信息上报的角度,采用服务端上报也可以从一定程度避免异常用户进入实验,减少异常值,让实验数据更可靠。
从实验平台功能建设上,往往采用计算量较小的较为通用的方案;一种适用于实验平台的异常值检测方法:当峰度大于某个阈值时,取 top x%极大值作为异常样本。其核心思想是根据数据分布判断是否需要进行异常值处理,然后通过分位数划定异常样本范围。
峰度:对实值随机变量的概率分布的尾部的度量,峰度高就意味着方差增大是由低频度的大于或小于平均值的极端差值引起的。峰度计算公式如下:
附录
推荐阅读