一个Outlier的江湖 -- 经典统计观

有江湖的地方就有奇异值, 有时候奇值(outlier)和异值(anomaly)会咬文嚼字的区分一下:
outlier是合理的(explainable)小概率事件(rare), 而anomaly是不合理的小概率事件。 因为都是小概率事件,
有时候就不区分了, 统称奇异值。 所以奇异值检测(outlier and anomaly detection)有时候之间叫 anomaly
detection。 在进一步扩展还有一个叫奇值的, 新奇值(Novelty), 这是合理但是还没遇到过的小概率事件。 其实可以统称叫小概率事件检测。


什么是outlier?


根据前面提到的小概率事件, 那么怎么看小概率事件呢? 一般要可视化的看数据分布,主要有两种。一种可视化是看概率分布, 而频率直方图(Frequency Histogram)是一个最直观的根据样本生成的分布图, 如果部分数据远离高频中心(3倍标准差之外), 而且是频率很低,很可能outlier。 另一种可视化是直接看空间分布, 点分布图(Points Plot)是最直观的空间分布图, 如果数据远离聚集(Cluster)中心,而且很稀疏, 那么很可能是outlier。







当然任何可视化都是对人工发现outlier有很大帮助的。 这在算法设计和测试中经验和测试集的准备,有着极大的帮助。


既然outlier这么直观, 那么为什么还要outlier detection技术呢?

  1. 自动化需求, 长期的人工参与永远是最高的成本之一。
  2. 高维大数据, 对于高维的数据可视化成本很高。
  3. 在线实时需求, 人工或者可视化都是有时间成本的。




统计概率的检测


单变量的偏差(Bias)为主的假设检验


1. Box-n-Whisker Plot


前面,我们提到小概率转化成了分布的中心偏移和稀疏。也看到正态分布情况下3倍标准差标准。 那么更为一般的分布的判断呢?一般会用到Box-n-Whisker Plot方法来可视化。 BWP一般把最大最小值区间分成4段(quartile division), 怎么4分的呢? 先按median(50%的值)一分为2, 然后再按25%的值和75%的值定义出来Q1(1分位)和Q3(3分位)点。 这样min, Q1, median, Q3, max把分布区间标记成4段。 这样:


IQR (inter quartile range) = Q3 - Q1 ; 占据中心值周围50%数量的范围

LQR (lower quartile range) = median - Q1 ; IQR的下半部分

UQR (upper quartile range) = Q3 - median ; IQR的上半部分




有了BWP图,那么怎么定义outlier呢? 根据前面高手分布类比:


1) 1个标准差(1σ x 2)范围内68%。

2) 50%(1 IQR)大概为0.7个标准差(0.7σ x 2) 。

3) 因此按50%的比例(percentile), 1 IQR = 2 * 0.7 σ = 1.4 σ。

4) 那么大约 3 σ = 2.1 IQR, 5 σ = 3.6 IQR, 1.5 IQR = 2.1σ 。


这样的话小概率在均值的3 σ之外, 类比就是在median的2 IQR之外,因此在Q1或者Q3再延伸1.5 IQR (3σ 之外)的点定义为inner fence点, 之外就是疑似outlier点(suspected outlier), 如果再过去1.5 IQR (5σ 之外),有一个outer fence点, 过去就是肯定是outlier了。 同样的划分, 另外一种说法是(outlier -> extreme outlier)。





总结有如下规则 (下图所示):


如果 P > Q3 + 1.5 IQR 或者 P < Q1 - 1.5 IQR


P 是 Outlier / Suspected Outlier。


如果 P > Q3 + 3 IQR 或者 P < Q1 - 3 IQR

P 是 Extreme Outlier / Outlier 。







2. Grubb's Test 或者 extreme studentized deviate (ESD) test


这是Frank
E. Grubbs博士在1950年提出的outlier的测试, Grubbs是美国军方研究机构US Army Ballistics
Research Laboratory的Weapons Systems Laboratory实验室的前负责人。



Grubbs测试的原理很简单,和BWP方法一致, 要判断有没有outlier。 那么提出如下测试:


H0: 没有outlier。

Ha: 至少有1个outlier。


那么利用样本的均值和标准差来计算最大 bias / standard deviation 比值。




然后基于t-student分布Upper
critical values: t (a/2n, N-2)的值来定义是否拒绝。 譬如我们去N=9,那么alpha=0.1,
自由度为N-2=7, alpha / 2n = 0.0056
可以查到(mathcracker.com/t_criti 或者
yuppal.people.ysu.edu/e) t = 3.4。 那么得到:

G > 2的时候, 认为Ha成立。





所以, Grubb‘s Test 是基于bias/deviation 比值的思想, 利用t-student分布给出的一个测试。


前面我们提到Gubb’s Test主要判断有没有outlier, 如果要判断是不是有几个outlier, 就要用到Bernade Rosner在1983年改进的 Generalized Extreme Studentized Deviate (GESD) test, 简单来说,可以看成把ESD重复K次。 Rosner教授是Harvard Univ.的生物统计学教授。






3. Dixon's Q test


又简称Q test,是 Wilfrid Joseph Dixon博士提出的outlier测试。Dixon博士曾在关岛服役, 发明过BMDP的生物化学统计软件。




Q test 利用邻居思想进行测试。 就是测试一个值和他最近的邻值之间的距离与最大最小范围的比值。




有定义好的Qcritical可以进行比较 , 如果过大(Q > Qcritical), 就认为有outlier。





而在计算过程中, 这个表会存成一个待查表(lookup table)。


举个简单例子, 例如有5个数据: 0.142, 0.153, 0.135, 0.002, 0.175

1) 先将排序 x1≤x2≤...≤xN

得到0.002, 0.135, 0.142, 0.153, 0.175

2)计算

得到



3) 我们查表n=5,以及 confidence level 95% 的 Q-table =≥0.71。因此可以判断0.002这个是outlier。



多变量的偏差(Bias)为主的假设检验


4. Cochran's Q test

是前Harvard Univ. 统计学的教授William G. Cochran提出的outlier的测试。这是一个无参数(non-parameteric) 的检测。




Cochran 基于行的均值和列的均值变换后的比值来和chi-square分布。 例如有个K组值, 每组值有b个变量。 注意这里每个表里的数据为0 或 1。



这样我们用通配符点来表示求和, 分布对列和对行求和, N=bk是总数和。



如果这个T值和Chi-squared 分布的Critical Value 相比较来确认是否存在不一致的组。




举例的话,
有三组数据, 我们可以计算到一个Q值, 然后根据alpha设置得到Chi-squared 的 critical value,
这样我们可以比较这个Q值是大于critical value, 来判断是否这三组Task具有一致性。 可以看到这三组数据根据Q
test是不一致的。











其实, Cochran‘s Q test 是 McNema‘s test的一个扩展, McNema's test 是Quinn McNemar 创造的比较边缘分布的检测。 Quinn McNemar是Stanford心理学, 教育学教授,是Stanford统计系的创始人之一, 他除了发明了McNema‘s test还对人类IQ测试做出了很大贡献。






对于两个测试Test1
和 Test2的参考, 写成Confusion matrix的样子比较。 要比较他们之间的边缘差异b和c之间相似性。也就是说概率
pa + pb = pa + pc 和 pc + pd = pb + pd. 应该成立, 如果Test1和Test2是相似的。


这种情况下, McNemar给出如下测试, 利用chi-squared测试来判断b和c的相关性。


但是对于连续值的情况的话, Allen L. Edwards提出了修正,修正后的表示如下:





McNema基于类似的思想, 计算多组数据行和列和均值的变换得到如下式子。 (K 组数, R 行之和, C 列之和, and T 总和) 这个式子和上面的式子是等价的(每个元素为0/1)。







多变量的方差(Variance)为主的假设检验


因为方差Variance不是一个值的特征, 而是一组值得特征, 所以基于方差的方式, 都是需要多变量多组数据的情况。


5. Cochran's C test


也是William G. Cochran提出的基于方差的outlier的测试。 是基于方差的占比得到C值, 然后根据F分布的Critical Value计算出对应的critical acceptance。






如果C值大于对应critical value, 那么就是测试显著, 证明一组数据不一致是outlier。


举个4 Labs的数据的例子, 在进行C test的时候, 只要计算方差,然后给定alpha计算critical value进行比较。









6. Ruben's G test


Ruben 't Lam 基于Cochran的C test提出了G test, 就是对C test进行了简单的修正。 Ruben来自荷兰的Dow Chemical Company。



就是利用每组数据自身自由度Vi,进行加权, 使得不同自由度的数据之间能够进行比较。






同时把N计算成自由度占比的倒数来修正计算critical value。











7. Multivariate Normal Distribution Test


直接利用多变量的正态分布来进行假设检验, 测试是否满足多变量的正态分布。 譬如下面有个2维正态分布的情况, 可以测试每个点的critical acceptance。




对于更多维的数据, 也可以利用两两之间的2维正态分布投影或者检测。




在做假设检验的时候, 对于可能的数据量不过的情况下会用Hotelling's T-squared distribution (T^2), 相当于T-student的2变量扩展分布。 这是由Harold Hotelling提出来的。




但是由于T^2分布经常没有实现。 所以会有F-分布来代替, 因为F分布和T^2有个换算关系。



所以对于n个样本的

的情况下,


的分布一致, 那么我们这要检验F分布就好了。





小结, 这里简单说了outlier, anomaly和novelty之间的关系, 并且给出了小概率情况下outlier的说明, 以及经典统计里面用来判断outlier的常用方法。


后续,会讲述机器学习发展带来什么新的outlier判断的方法? 我们知道机器学习根据是否有监督一般可以分为三类: supervised, unsupervised, semi-supervised. 着重说明, 这三类方法对于outlier判断有什么帮助呢?



参考:

polystat.blogspot.sg/20

staff.argyll.epsb.ca/jr

goordnance.army.mil/hof

stat.unipg.it/iasc/IASC

sebastianraschka.com/Ar

hsph.harvard.edu/bernar

help.xlstat.com/custome

statistics.stanford.edu

rtlam.blogspot.sg/

nap.edu/read/11522/chap

文章被以下专栏收录