数据中异常值的检测与处理方法 一、数据中的异常值 各种类型的异常值: • 数据输入错误:数据收集,记录或输入过程中出现的人为错误可能导致数据异常。例如:一个客户的年收入是$ 100,000。数据输入运算符偶然会在图中增加一个零。现在收入是100万美元,是现在的10倍。显然,与其他人口相比,这将是异常值。 • 测量误差: 这是最常见的异常值来源。这是在使用的测量仪器出现故障时引起的。例如:有10台称重机。其中9个是正确的,1个是错误的。有问题的机器上的人测量的重量将比组中其他人的更高/更低。在错误的机器上测量的重量可能导致异常值。 • 实验错误:异常值的另一个原因是实验错误。举例来说:在七名跑步者的100米短跑中,一名跑步者错过了专注于“出发”的信号,导致他迟到。因此,这导致跑步者的跑步时间比其他跑步者多。他的总运行时间可能是一个离群值。 • 故意的异常值: 这在涉及敏感数据的自我报告的度量中通常被发现。例如:青少年通常会假报他们消耗的酒精量。只有一小部分会报告实际价值。这里的实际值可能看起来像异常值,因为其余的青少年正在假报消费量。 • 数据处理错误:当我们进行数据挖掘时,我们从多个来源提取数据。某些操作或提取错误可能会导致数据集中的异常值。 • 抽样错误: 例如,我们必须测量运动员的身高。错误地,我们在样本中包括一些篮球运动员。这个包含可能会导致数据集中的异常值。
• 自然异常值: 当异常值不是人为的(由于错误),这是一个自然的异常值。例如:保险公司的前50名理财顾问的表现远远高于其他人。令人惊讶的是,这不是由于任何错误。因此,进行任何数据挖掘时,我们会分别处理这个细分的数据。 在以上的异常值类型中,对于房地产数据,可能出现的异常值类型主要有:(1)数据输入错误,例如房产经纪人在发布房源信息时由于输入错误,而导致房价、面积等相关信息的异常;在数据的提取过程中也可能会出现异常值,比如在提取出售二手房单价时,遇到“1室7800元/m2”,提取其中的数字结果为“17800”,这样就造成了该条案例的单价远远异常于同一小区的其他房源价格,如果没有去掉这个异常值,将会导致整个小区的房屋单价均值偏高,与实际不符。(2)故意的异常值,可能会存在一些人,为了吸引别人来电询问房源,故意把价格压低,比如房屋单价为1元等等;(3)自然异常值。房价中也会有一些实际就是比普通住宅价格高很多的真实价格,这个就需要根据实际请况进行判断,或在有需求时单独分析。 二、数据中异常值的检测 各种类型的异常值检测:
1、四分位数展布法 方法[1]:大于下四分位数加1.5倍四分位距或小于上四分位数减1.5倍。 把数据按照从小到大排序,其中25%为下四分位用FL表示,75%处为上四 分位用FU表示。 计算展布为:LUFFFd,展布(间距)为上四分位数减去下四分位数。
最小估计值(下截断点):FLdF5.1
最大估计值(上截断点):FUdF5.1
数据集中任意数用X表示,FUFLdFXdF5.15.1,
上面的参数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个样品,其中1212(,,...,),(,,...,)pkkknkXXXXXmeanxxx
则样品X(i)到重心12(,,...,)pXXX的马氏平方距离定义为
1211221122(,,...,)'(,,...,)iiiippiiippDxxxxxxxxxxxx
其中可由样本协方差阵来估计 '()()11(,()())1niiiSSxxxxn
容易证明,当n较大时,2iD近似服从2px其临界值trueD可由2
x分布表来查
出、当2
itrueDD时,将第i个样品判为异常。
稳健马氏距离: 由于异常值的存在会显著影响中心值和协方差矩阵的估计,使一般马氏距离不能正确反映各个观测的偏离程度。对于这类数据,需要通过稳健统计的方法,构建稳定的均值和协方差矩阵统计量。 具体算法: 设数据集为一个n行p列的矩阵Xn×p,从中随机抽取h个样本数据,并
计算这个样本数据的样本均值T1和协方差矩阵S1。 然后通过
)()()(d111'11TxSTxiii计算这 n个样本数据到中心T1的马氏距离,选出这n个距离中最小的h个,再通过这个h个样本计算样本均值T2和协方差矩阵S2。根据Rousseeuw,Van Driessen(1999)可以证明 det(S2)≤ det(S1),仅当T1=T2时候等号成立。这样子不断迭代下去,当 det(Sm)≤ det(Sm-1)停止迭代。这时再通
过Sm进行加权计算就能求出稳健的协方差矩阵估计量。
(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值较小(小于600)时,直接从T0、S0计算得到T1、S1并开始迭代,
迭代两次得到S3。重复 500 次这个过程,得到500个 S3,从中选取最小的10
个继续迭代直到收敛,返回最小行列式值的T和S,记为 T mcd和Smcd。. (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,记为 Tmcd和Smcd。
(6)根据 Tmcd和Smcd计算每个样本的稳定马氏距离d(i)。因为计算出来的距离值近似服从一个自由度为p的卡方分布,假设置信度为97.5%时,当2975.0,)(Pid时,记 W
i=0否则Wi=1.然后根据 Wi
再 重 新 计 算。这时<
就是最后所求的稳定协方差矩阵。在此稳健协方差矩阵和稳健样本均值基础上,便能得出稳健的马氏距离。
3、Cook‘s D Cook‘s D:在你的数据资料中,如果某一条数据记录被排除在外,那么由此造成的回归系数变化有多大.显然,如果这个值过大,那么就表明这条数据对回归系数的计算产生了明显的影响,这条数据就是异常数据.
4、覆盖法 方法:将所有不在5%到95%范围的值当作异常值。 5、标准偏差 方法:偏离平均值三个或以上标准差的数据点。 6、因子 方法:单变量或多变量异常值通常是用影响因子、水平因子、距离因子其中的一个指标来判断是否是异常值。
回归系数的影响力。陈强,《高级计量经济学及Stata应用》,高等教育出版社。
7、简单规则库 |-从正常的行为中学习规则,测试数据若是没有被任何规则包括则认为是异常
利用规则学习算法学习规则,例如重复增量修枝( RIPPER )、决策树( Decision Trees )
8、聚类 一种利用聚类检测离群点的方法是丢弃原理其他簇的小簇。这种方法可以与任何聚类技术一起使用,但是需要最小簇大小和小簇与其他簇之间距离的阈值,通常,该过程可以简化为丢弃小于某个最小尺寸的所有簇。 一种更系统的方法是,首先聚类所有对象,然后评估对象属于簇的程度。对于基于原型的簇类,可以用对象到它的簇中心的距离来度量对象属于簇的程度。更一般地,对于基于目标函数的聚类技术,可以使用该目标函数来评估对象属