数据中异常值地处理方法-总

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据中异常值的检测与处理方法
一、数据中的异常值
各种类型的异常值:
数据输入错误:数据收集,记录或输入过程中出现的人为错误可能导致数
据异常。

例如:一个客户的年收入是$ 100,000。

数据输入运算符偶然会在
图中增加一个零。

现在收入是100 万美元,是现在的10 倍。

显然,与其他
人口相比,这将是异常值。

测量误差:这是最常见的异常值来源。

这是在使用的测量仪器出现故障
时引起的。

例如:有10 台称重机。

其中9 个是正确的, 1 个是错误的。

有问题的机器上的人测量的重量将比组中其他人的更高/更低。

在错误的机
器上测量的重量可能导致异常值。

实验错误:异常值的另一个原因是实验错误。

举例来说:在七名跑步者的
100 米短跑中,一名跑步者错过了专注于“出发”的信号,导致他迟到。

因此,这导致跑步者的跑步时间比其他跑步者多。

他的总运行时间可能是
一个离群值。

故意的异常值:这在涉及敏感数据的自我报告的度量中通常被发现。

例如:青少年通常会假报他们消耗的酒精量。

只有一小部分会报告实际价值。


里的实际值可能看起来像异常值,因为其余的青少年正在假报消费量。

数据处理错误:当我们进行数据挖掘时,我们从多个来源提取数据。

某些
操作或提取错误可能会导致数据集中的异常值。

抽样错误:例如,我们必须测量运动员的身高。

错误地,我们在样本中
包括一些篮球运动员。

这个包含可能会导致数据集中的异常值。

自然异常值:当异常值不是人为的(由于错误),这是一个自然的异常值。

例如:保险公司的前 50 名理财顾问的表现远远高于其他人。

令人惊讶的
是,这不是由于任何错误。

因此,进行任何数据挖掘时,我们会分别处理
这个细分的数据。

在以上的异常值类型中,对于房地产数据,可能出现的异常值类型主要有:(1)数据输入错误,例如房产经纪人在发布房源信息时由于输入错误,而
导致房价、面积等相关信息的异常;在数据的提取过程中也可能会出现异
常值,比如在提取出售二手房单价时,遇到“1室 7800 元/m 2
”,提取其中的
数字结果为“17800,”这样就造成了该条案例的单价远远异常于同一小区的其他房源价格,如果没有去掉这个异常值,将会导致整个小区的房屋单价均值偏高,与实际不符。

(2)故意的异常值,可能会存在一些人,为了吸引别人来电询问房源,故意把价格压低,比如房屋单价为 1 元等等; (3)自然异常值。

房价中也会有一些实际就是比普通住宅价格高很多的真实价格,这个就需要根
据实际请况进行判断,或在有需求时单独分析。

二、数据中异常值的检测
各种类型的异常值检测:
1、四分位数展布法
方法[1]
:大于下四分位数加 1.5 倍四分位距或小于上四分位数减1.5 倍。

把数据按照从小到大排序,其中25%为下四分位用 FL 表示, 75%处为上四分位用 FU 表示。

计算展布为: d F F U F L,展布(间距)为上四分位数减去下四分位数。

最小估计值(下截断点):F L 1.5d F
最大估计值(上截断点):F U 1.5d F
数据集中任意数用X 表示,F L 1.5d F X F U 1.5d F,
上面的参数1.5 不是绝对的,而是根据经验,但是效果很好。

计算的是中度异常,参数等于3 时,计算的是极度异常。

我们把异常值定义为小于下截断点,或者大于上截断点的数据称为异常值。

优点:与方差和极差相比,更加不容易受极端值的影响,且处理大规模数据效果很好。

缺点:小规模处理略显粗糙。

而且只适合单个属相的检测。

2、识别不遵守分布或回归方程的值
方法:双变量和多变量离群值通常使用影响力或杠杆指数或距离来衡量,像Mahalanobis 的距离和 Cook‘ s D这样的流行指数经常被用来检测异常值。

在SAS 中,我们可以使用PROC Univariate, PROC SGPLOT,为了识别异常值和有影响
力的观测,我们还研究了STUDENT 、COOKD 、RSTUDENT 等统计指标。

马氏距离法[1]
:假设两个变量 Xi 和 Xj 具有较高的正相关关系,某样本 Xk 在
这两个变量上的取值为( Xki ,Xkj ),若 Xki 远远大于 Xi 的平均值,而 Xkj 却远小于 Xj 的平均值,则这个样品就很可能是异常的。

检验这种异常品可以采
用马氏平方距离法。

主要思想是:把 n 个 P 维样品看作 p 维空间中的 n 个点,则第i 个样品所对应的坐标为( Xi1 , Xi2 ,, Xip )。

样品在空间中的相对位置可通过各样品与总体重心(以各变量均值( X1 ,X2 ,, Xp)为坐标的点)之间的距离来求得。

设X(1) , X(2) ,,X(p) (其中( Xi1 ,Xi2 ,,Xip )为来自 Np 中的 n 个样品,其中 X (X1 , X 2 ,..., X p ), X k mean(x1k , x2k ,..., x nk )
则样品 X(i) 到重心 (X1, X 2,..., X p ) 的马氏平方距离定义为
D i2( x i1 x1 , x i 2 x2 ,..., x ip x p ) '
1
( x i1 x1, x i 2 x2 ,..., x ip x p )
其中可由样本协方差阵来估计
1n
(S, S(x(i) x)( x(i ) x)' )
n1i 1
容易证明,当 n 较大时, D i2近似服从 x2p其临界值D
true
可由 x2分布表来查出、当 D i2 D true时,将第 i 个样品判为异常。

稳健马氏距离:
由于异常值的存在会显著影响中心值和协方差矩阵的估计,使一般马氏距
离不能正确反映各个观测的偏离程度。

对于这类数据,需要通过稳健统计的方法,
构建稳定的均值和协方差矩阵统计量。

具体算法:
设数据集为一个n 行 p 列的矩阵 X n×p,从中随机抽取 h 个样本数据,并计
算这个样本数据的样本均值T1和协方差矩阵S1。

然后通过
d1 (i )( x i T1 )' S11 ( x i T1 ) 计算这n 个样本数据到中心T1的马氏距离,选出这 n
个距离中最小的 h 个,再通过这个 h 个样本计算样本均值 T2和协方差矩阵 S2。

根据Rousseeuw,Van Driessen(1999)可以证明 det(S2) ≤ det(S1),仅当 T1=T2时候等号成立。

这样子不断迭代下去,当 det(S m) ≤det(S m-1)停止迭代。

这时再通过 S m
进行加权计算就能求出稳健的协方差矩阵估计量。

(1)确定 h 的值。

h 值在 0.5n 和 n 之间,一般来说 h 越小,它的抵抗异常值能
力越强,但是最小不能少于50%,因为少于50%已经不能分辨哪些是正常值哪些
是异常值,所以作为一种折中, h 默认是取 h=0.75*n,而当样本数量比较少时, h
一般取 0.9n。

(2)如果 h=n,这时计算的是整个样本数据的均值向量和协方差矩阵,返回计
算结果并停止。

(3)从 n 个样本中随机抽取 p+1 个样本构造协方差矩阵,并计算其行列式,如
果行列式为 0,再随机加入一个样本直到行列式不为 0,这时这个协方差矩阵
为初始协方差矩阵S0,并利用随机选择出来的样本计算初始样本均值T0。

(4)当 n 值较小小于时,直接从
T
0、S0 计算得到T1、S1 并开始迭代,
(600)
迭代两次得到 S3。

重复 500 次这个过程,得到500 个 S3,从中选取最小的 10个继续迭代直到收敛,返回最小行列式值的T 和 S,记为 T mcd和 S mcd。


(5)当 n 值较大时,由于每次迭代都要把n 个样本的距离计算一次,非常耗时。

所以把 n 个样本分成几个部分,例如当n 等于 900 时,可以把 n 分成 3个子样本,每个子样本包含300 个样本。

每个子样本也是从各自 T0、S0计算得到 T1、S1并开始迭代,迭代两次得到S3,每个子样本重复500/3=167 次,各自
得到 167 个 S3。

每个子样本从中选取最小的 10 个 S3。

然后把子样本合并重新合成一个整体样本,并也把子样本中的 10 个 S3合并,得到 30 个 S3。

从这 30 个 S3迭代两次,保留最小的 10 个结果并继续迭代下去直到收敛,返回最小行列式值的 T 和S,记为 T mcd和 S mcd。

(6)根据 T mcd和 S mcd计算每个样本的稳定马氏距离d(i)。

因为计算出来的距离值近似服从一个自由度为p 的卡方分布,假设置信度为97.5%时,当
d (i )2时,记 W i =0否则 W i =1.然后根据 W i再重新计算。

这时 < 就
P ,0.97 5
是最后所求的稳定协方差矩阵。

在此稳健协方差矩阵和稳健样本均值基础上,便能得出稳健的马氏距离。

3、Cook‘s D
Cook‘s :D在你的数据资料中,如果某一条数据记录被排除在外,那么由此
造成的回归系数变化有多大 .显然 ,如果这个值过大 ,那么就表明这条数据对回归系
数的计算产生了明显的影响 ,这条数据就是异常数据 .
4、覆盖法
方法:将所有不在5%到 95%范围的值当作异常值。

5、标准偏差
方法:偏离平均值三个或以上标准差的数据点。

6、因子
方法:单变量或多变量异常值通常是用影响因子、水平因子、距离因子其中的一个指标来判断是否是异常值。

回归系数的影响力。

陈强,《高级计量经济学及 Stata 应用》,高等教育出
版社。

7、简单规则库
|-从正常的行为中学习规则,测试数据若是没有被任何规则包括则认为是异常
利用规则学习算法学习规则,例如重复增量修枝(RIPPER )、决策树(Decision Trees)
8、聚类
一种利用聚类检测离群点的方法是丢弃原理其他簇的小簇。

这种方法可以与任何聚类技术一起使用,但是需要最小簇大小和小簇与其他簇之间距离的阈值,通常,该过程可以简化为丢弃小于某个最小尺寸的所有簇。

一种更系统的方法是,首先聚类所有对象,然后评估对象属于簇的程度。

对于基于原型的簇类,可以用对象到它的簇中心的距离来度量对象属于簇的程度。

更一
般地,对于基于目标函数的聚类技术,可以使用该目标函数来评估对象属于任意簇的程度。

特殊情况下,如果删除一个对象导致该目标的显著改进,则我们可以将
该对象分类为离群点。

优点与缺点:有些聚类技术 (如 K 均值 )的时间和空间复杂度是线性或接近线性的,因而基于这种算法的离群点检测技术可能是高度有效的。

此外,簇的定义通常是离群点的补,因此可能同时发现簇和离群点。

缺点方面,产生的离群点集和它们的得分可能非常依赖所用的簇的个数和数据总离群点的存在性。

例如,
基于原型的算法产生的簇可能因数据中存在离群点而扭曲。

聚类算法产生的簇的质量对该算法产生的离群点的质量影响非常大。

每种聚类算法只适合特定的数据类型;因此,应当小心地选择聚类算法。

9、贝叶斯
依据已有的数据,然后建立模型,得到正常的模型的特征库,然后对新来的数据点进行判断。

从而认定其是否与整体偏离,如果偏离,那么这个就是异常值。

10、降维:主成分分析法
基于矩阵分解的异常点检测方法的关键思想是利用主成分分析去寻找那些
违背了数据之间相关性的异常点。

为了发现这些异常点,基于主成分分析(PCA)的算法会把原始数据从原始的空间投影到主成分空间,然后再把投影拉回到原始
的空间。

如果只使用第一主成分来进行投影和重构,对于大多数的数据而言,重
构之后的误差是小的;但是对于异常点而言,重构之后的误差依然相对大。

这是
因为第一主成分反映了正常值的方差,最后一个主成分反映了异常点的方差。

网址: /19836.html
11、模型
许多异常检测技术首先建立一个数据模型。

异常是那些同模型不能完美拟合的对象。

三、数据中异常值的处理
1、删除
输入错误,数据处理错误或异常值数目少,修剪两端删除异常值。

2、数据转换或聚类
转换数据取对数,减少极端值的变化。

用决策树直接处理带有异常值的数据,(决策树不受异常和缺失的影响)或是对不同观测值分配权重。

3、替换
类似替换缺失值,我们可以替换异常值。

我们可以使用均值,中位数,众数
替换方法。

但需分析它是人工造成的还是自然造成的,人工可以替换,也可以用统计模型预测异常值,然后替换它。

4、分离对待
如果异常值得数目比较多,在统计模型中我们应该对它们分别处理,一个处理方法是异常值一组,正常值一组,然后分别建立模型,最后对结果合并。

四、缺失值
常用的处理方法:列表明智删除和配对明智删除、均值(估计、中值)、预测模型、 KNN 插补。

五、参考文献
1、程鹏,数据挖掘中孤立点的探测方法[J] ,福建电脑, 2006 年第 8 期。

相关文档
最新文档