加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

数据预处理-异常数据检测处理

(2016-03-01 18:30:41)
标签:

异常点检测

分类: 数据分析
异常值检测是数据挖掘中数据准备的重要环节 ,也 是学界探讨和研究的内容 。目前主要有3种策略 : 
(1)统计法:对样本总体分布作出假设的基础上,构造如四分位点、标准差等统计量进行检测,主要适用于单属性值的情况。 
(2)距离法:将两个样本视为维空间的两点,计算两点间的Minkowski,Chebyshev或Mahalanobis距离来度量,此方法 能够应用 于多元 数值 ,但 没有综合考虑总体分布的因素,导致 太依赖于参数的选择。
(3)分类法: 建立分类模 型判断数据类别,以认定其是否与总体偏 离 ,一般 需要有大量样本集 以训练分类模型,并且此方法判断的颗粒度较大,相对于精细的数据要求显得误判率较高。
  剔除异常值
一、基本思想:
规定一个置信水平,确定一个置信限度,凡是超过该限度的误差,就认为它是异常值,从而予以剔除。
二、常用方法:拉依达方法、肖维勒方法、一阶差分法。
注意:这些方法都是假设数据依正态分布为前提的。
1.拉依达方法(非等置信概率)
如果某测量值与平均值之差大于标准偏差的三倍,则予以剔除。
其中,http://s4/small/002EBwmJzy6ZMg4OZx123&690为样本的标准偏差。
注:适合大样本数据,建议测量次数≥50次。
代码实例(略)。
2.肖维勒方法(等置信概率)
在 n 次测量结果中,如果某误差可能出现的次数小于半次时,就予以剔除。
这实质上是规定了置信概率为1-1/2n,根据这一置信概率,可计算出肖维勒系数,也可从表中查出,当要求不很严格时,还可按下列近似公式计算:
Tab1. 肖维勒系数表
n 3 4 5 6 7 8 9 10 11 12
ωn 1.38 1.53 1.65 1.73 1.80 1.86 1.92 1.96 2.00 2.03
n 13 14 15 20 30 40 50 100 200 500
ωn 2.07 2.10 2.13 2.24 2.39 2.49 2.58 2.81 3.02 3.20
如果某测量值与平均值之差的绝对值大于标准偏差与肖维勒系数之积,则该测量值被剔除。
例1.利用肖维勒方法对下列数据的异常值(2.5000)进行剔除:
1.5034  1.5062  1.5034  1.5024  1.4985   2.5000   1.5007   1.5067  1.4993   1.4969
上述数据保存于文件erro.dat
代码:
x=load('error.dat');
n=length(x);
subplot(2,1,1);
plot(x,'o');
title('原始数据')
axis([0,n+1,min(x)-1,max(x)+1]);
w=1+0.4*log(n);
yichang = abs(x-mean(x)) > w*std(x);
% 若用拉依达方法,把w改成3即可,但本组数据将不能成功剔除异常值。
x(yichang)=[];
save errornew.dat x -ASCII
subplot(2,1,2);
plot(x,'rs');
title('异常值剔除后数据');
axis([0,n+1,min(x)-1,max(x)+1]);
运行结果:x =
1.5034    1.5062    1.5034    1.5024    1.4985    2.5000    1.5007    1.5067    1.4993  1.4969

y =
    1.5034    1.5062    1.5034    1.5024    1.4985    1.5007    1.5067    1.4993    1.4969
3.一阶差分法(预估比较法)
用前两个测量值来预估新的测量值,然后用预估值与实际测量值比较,若大于事先给定的允许差限值,则剔除该测量值。
预估值
比较判别:
注:该方法的特点是
(1)适合于实时数据采集与处理过程;
(2)精度除了与允许误差限的大小有关外,还与前两点测量值的精确度有关;
(3)若被测物理量的变化规律不是单调递增或单调递减函数,这一方法将在函数的拐点处产生较大的误差,严重时将无法使用。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有