数据挖掘噪声数据处理综述.doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
噪声数据处理综述
摘要:噪声数据是指数据中存在着错误或异常(偏离期望值)的数据,不完整数据是指感兴趣的属性没有值.不一致数据则是数据内涵出现不一致的情况。
为了更好的论述什么是噪声数据处理,给出了两种噪声数据处理的算法:在属性级别上处理噪声数据的数据清洗算法和一种改进的应用于噪声数据中的KNN算法。
关键词:噪声数据噪声数据处理数据清洗KNN算法
1.概述
噪声数据(noisy data)就是无意义的数据(meaningless data)。这个词通常作为损坏数据(corrupt data)的同义词使用。但是,现在它的意义已经扩展到包含所有难以被机器正确理解和翻译的数据,如非结构化文本。任何不可被创造它的源程序读取和运用的数据,不管是已经接收的、存储的还是改变的,都被称为噪声。
噪声数据未必增加了需要的存储空间容量,相反地,它可能会影响所有数据挖掘(data mining)分析的结果。统计分析可以运用历史数据中收集的信息来清除噪声数据从而促进数据挖掘。
引起噪声数据(noisy data)的原因可能是硬件故障、编程错误或者语音或光学字符识别程序(OCR)中的乱码。拼写错误、行业简称和俚语也会阻碍机器读取。
噪声数据处理是数据处理的一个重要环节,在对含有噪声数据进行处理的过程中,现有的方法通常是找到这些孤立于其他数据的记录并删除掉,其缺点是事实上通常只有一个属性上的数据需要删除或修正,将整条记录删除将丢失大量有用的、干净的信息。在数据仓库技术中,通常数据处理过程应用在数据仓库之前,其目的是提高数据的质量,使后继的联机处理分析(OLAP)和数据挖掘应用得到尽可能正确的结果。然而,这个过程也可以反过来,即利用数据挖掘的一些技术来进行数据处理,提高数据质量。
2.噪声数据处理
2.1在属性级别上噪声数据处理的数据清洗算法
2.1.1 数据清洗和聚类分析介绍
数据清洗包括许多的内容,文献【l】给出了详尽的介绍,其中噪声数据(包含错误或存在偏离期望的孤立点值)的处理是其中重要的一部分。数据含噪声(包含错误或存在偏离期望的孤立点值)可能有多种原因:收集数据本身难以得到精确的数据,收集数据的设备可能出现故障, 数据输入时可能出现错误,数据传输过程中可能出现错误,存储介质有可能出现损坏等。根据决策系统中“garbage
in ,garbage out“(如果输入的分析数据是垃圾,那么输入的分析结果也将是垃圾)这条原理,必须处理这些噪声数据。去掉噪声、平滑数据的技术主要有:分箱(binning) ,聚类(clustering) ,同归(regression)等。
聚类(clustering)就是将数据对象分组成为多个类或簇(cluster) ,在同一个簇中的对象之间具有较高的相似度,而不同的簇间的对象差别较大。聚类分析可以用来进行孤立点挖掘。孤立点挖掘可以发现噪声数据,因为噪声本身就是孤立点、聚类分析发现孤立点的方法有:基于统计的孤立点检测,基于距离的孤立点检测和基于偏离的孤立点检测。
2.1.2算法介绍
下面是一个利用聚类算法来发现关系数据库中孤立点数据的例子:
输入:数据集S ,包括N条记录,属性集D:{年龄、收入};本文称一条记录为一个数据点(Data Point) ,一条记录上的每个属性上的值为一个数据单元格(Data Cel1)。S有N×D个数据单元格,其中某些数据单元格是噪声数据。输出:孤立数据点如图1所示。
图1通过聚类发现噪声数据的例子
孤立点A是一个孤立点数据,我们认为它是噪声数据,很明显它的噪声属性足收入,剩下的干净信息即年龄属性上的数据仍然可以用于预测或其他应用,同时可以利用年龄属性上的干净数据来矫正A在收入上的值。进一步,数据点B也是一个噪声数据,但是很难判定它在哪个属性上的数据出现错误。本方法试图确定噪声点B的噪声属性(即产生噪声的具体属性) ,并对其进行矫正。
算法思想:首先通过聚类识别噪声数据,并考察它们在各个属性上的值与其期望之间的距离以判定引起噪声的属性;然后,对于能够判定噪声属性的记录,寻找它所属的分类,并利用它所属分类中噪声属性上的值进行矫正;对于不能判定噪声属性的记录,因为噪声记录去除非噪声属性后的仍然是噪声记录,同样可以通过聚类判定其噪声属性并进行矫正;整个过程记录噪声记录在属性上的分布情况。。几个定义如下:
噪声数据矩阵(Noise Matrix ,NM):通过聚类算法得到的孤立数据点集合矩阵,NM(i,j)的值对应孤立点集合P中第i条记录在属性j上的值,即NM(i,j)=P 污染矩阵(Corruption Matrix ,CM):NM 对应的一个0—1布尔矩阵,NM(i,j)为噪声=>CM(ij)=1;否则,CM(i,j)=0。
基本算法描述:
输入:含噪声数据的数据集S ,S有N个数据对象,S的属性集合D={D1 ,D2 ,⋯,D k }。
输出:噪声数据矫正后的数据集合S ,污染矩阵CM
方法:
(1)P=GetNo1seByClustering(S、D);/* 属性集合D上对S进行聚类,得到孤立点数据集台P*/
(2)If (P!=Nul1)Then{
For i=O to length(P){
For j=0 to k{
NM(i ,j)=P(i ,j);/* NM(i ,j)为P中第i条,记录在属性D1上的值*/ If(Distance(NM(i,j)、E(S,D1)) > 阈值A) Then
CM(i ,j)=1:/* 替NM(i ,j)与S中D1上的期望之间的距离大于某个阈值,则判定D1上产生了噪声*/
Else CM(i ,j)=0
} } }
(3)For EachD1 (1<=i<=k){
P’=Ge tNoiseByClustering(S.D-{D} });/*在D=D{D}上对S聚类;*/
For m=1 to length(P){
if(CM (m ,i)=1)Then
NM(m ,i)用行m所对应的记录r m所在的聚集D1上的(平均)值替换;/*对于能够划定噪声属性的记录,用干净数据中D1上的(期望)值矫正*/
Else 1f(CM(m ,j)=0)(1<=j<=k)Then
If行m所对应的记录r m所在新的聚类P中不是孤立点then{ NM(m ,i)用行m所对应的纪录r m所在的聚集中D1上的(期望)值替换;/*对于不能判定噪声属性,并矫正*/
CM(m, i)=l:
} } }}
(4)For m=1 to length(P){/*矫正原始数据S;*/
Forj=0 to k{
If(CM=1)Then{
用NM(m ,j)替换S中对应的记录属性D1上的值.
} }}
(5)返回S和NM:
其中,过程GetNoiseByCIustering(S,D)是对数据求S在属性集D上进行聚类返回的噪声数据集合。它可以通过聚类算法如k-means(k-平均值) ,k-medoids(k-中心点)实现,这里不作具体介绍。这个算法在判定噪声属性的时候采用与其期望值进行比较的方法。
这个算法能在属性的级别上发现噪声数据,并且根据剩余的干净数据来矫正噪声而无需事先了解数据的结构。它还能为噪声的产生过程建模,即得到了噪声在属性上的分布规律统计。它的时间复杂度为O(kf) ,其中k为数据集合的属性数,f所选的聚类算法的时间复杂度.