数据预处理
由于所要进行分析的数据量的迅速膨胀(已达G或T数量级),同时由于各种原因导致了现实世界数据集中常常包含许多含有噪声、不完整、甚至是不一致的数据,对数据挖掘所涉及的数据对象必须进行预处理。数据预处理主要包括:数据清洗,数据集成、数据转换、数据归约。预处理是数据挖掘(知识发现)过程中的一个重要步骤,,尤其是在对包含噪声、不完整,甚至是不一致数据挖掘时,更需要进行数据的预处理,以提高数据挖掘对象的质量,并最终达到提高数据挖掘所获模式的质量的目的。
所谓噪声数据是指数据中存在错误、或异常的数据,;不完整数据是指感兴趣的属性没有值;而不一致数据则是指数据内涵出现不一致情况。而数据清洗是指消除数据中所存在的噪声,以及纠正其不一致的错误;数据集成则是指将来自多个数据源的数据合并到一个构成一个完整的数据集;数据转换是指将一种格式的数据转换为另一种格式的数据;最后数据归约是指通过删除冗余特征来消除多余数据。包含不完整,有噪声,和不一致的数据对大规模数据库来讲是非常普遍的情况。不完整数据的产生有以下几个原因,:(1)有些属性的内容有时没有;(2)有些数据当时被认为是不必要的,;(3)由于误解或检测设备失灵导致相关数据没有记录下来;(4)与其它记录的内容不一致而被删除;(5)历史记录或对数据的修改被忽略了。遗失数据,尤其是一些关键属性的遗失数据或许需要推导出来。噪声数据的产生原因有:(1)数据采集设备有问题;(2)数数据录入过程中发生了人为或计算机错误;(3)数据传输过程中发生错误;(4)由于命名规则和数据代码不同而引起的不一致。数据清洗还将删去重复记录行。
数据集成,就是将来自多个数据源(如:数据库文件等,)数据合并到一起,。由于描述同一个概念的属性在不同数据库取不同的名字,在进行数据集成时就常常会引起数据的不一致和冗余。命名的不一致常常也会导致同一属性值的内容不同。同样大量的数据用于不仅会降低挖掘速度,而且也会误导挖掘进程。因此除了进行数据清洗之外,在数据集成中还需要注意消除数据的冗余。此外在完成数据集成之后,有时还需要进行数据清洗以便消除可能存在的数据冗余。
数据转换主要是对数据进行规范化操作。在正式进行数据挖掘之前,尤其是使用基于对象距离的挖掘算法时,如:神经网络、最近邻分类等,必须进行数据规格化。也就是将其缩至特定的范围之内。数据转换也可以是属性的生成,,也就是利用当前存在的一个或多个属性生成另外一个有意义的属性。
数据规约的目的就是缩小所挖掘数据的规模,但却不会影响(或基本不影响)最终的挖掘结果。现有的数据归约方法包括:(1)数据聚合;(2),消减维数,如:通过相关分析,消除多余属性;(3)数据压缩,如:利用聚类或参数模型替代原有数据。此外利用基于概念树的泛化也可以实现对数据规模的消减。
这里需要强调的是以上所提及的各种数据预处理方法,并不是相互独立的,而是相互关联的。由于所要分析的数据是含有噪声、不完全和不一致性的,数据预处理能够帮助改善数据的质量,进而帮助提高数据挖掘进程的有效性和准确性。高质量的决策来自高质量的数据。因此数据预处理是整个数据挖掘与知识发现过程中的一个重要步骤。
一、案例分析
1.1桥梁监测数据的预处理
经营分析的数据是马桑溪大桥桥梁监测系统从2005年5月到2006年4月期间采集的几十万条监测数据,记录了大量主梁挠度、主塔变形、应变、温度、索力加速度和湿度等桥梁结构和环境参数的历史记录。由于各种原因导致了桥梁监测系统所采集的数据很有噪声,不完整,不一致和不规范,这些原始数据是不符合建立数据挖掘模型的要求,为了改善数据质量,为了完善最终的数据挖掘模型,对数据挖掘所涉及的数据必须进行预处理。
桥梁监测数据具有以下特点:
1)数据量大,桥梁监测系统通常采集了几年,甚至几十年的数据,这些历史数据可能拥有几百万条记录。
2)数据的维数多,数据集中将会有上百个字段,。
3)数据集中每一个字段的数值与采集的位置有关。这就决定了同一个桥梁的参数的值不同,比如不同位置采集的应变值是不同的。
这些特点决定了需要针对桥梁监测数据的特点进行预处理。
1.1.1数据合并
桥梁监测系统是按某种时间频度对数据进行采集,比如湿度和温度数据是十分钟采集一次,而桥梁的挠度和应变三分钟或十分钟采集一次;另外,每类数据的采集的开始结束时间一般是不一样的,这就造成了在相同时间间隔内的各参数的记录数不同;采集后的数据按应变,挠度,温度,湿度,分类存放在不同的数据集中。这些都增加了数据合并的难度,但必须把这些数据合并到一起,这样才能更好的对数据进行分析(比如利于参数间的横向关系,利于进行时间序列分析),分析的结果会更有意义(只分析单个参数没有较大意义,只有同时分析不同的桥梁结构和环境参数才会使结果更有意义)。合并,的方法是按时间进行合并,也就是把时间最接近的各个参数的记录合并到一起,当参数的采集时间间隔有较大差距时,可以按多种时间间隔进行合并。
1.1.2噪声数据
噪声是一个测量变量中的随机错误或偏差,它是变量的一种异常值。桥梁监测数据可能出现的噪声的值为空、为零,一定范围内的值恒定不变,或者值超出正常范围。但必须注意,有些数据看似异常,但实际是正常值,这时就必须认真加以区分。比如对马桑溪大桥的健康监测数据进行检测,发现有58条记录中有零值的情况,分以下三种情况:
1)有29条记录中有五个字段的值全为0,在分析时去掉这些记录。
2)有几条记录中的零值为正常值,即恰好为零。
3)剩下的记录记录中的零值为异常值,采用相邻两个值的平均值替换。
对于出现的其它异常值,比如为空,一定放下的值恒定不变,值超出正常范围,都可以采用相邻两个数的平均值替代或最近的值代替。为了发现一些参数的值局部,不变的异常情况,可以利用相邻记录的差值来检测,如果相邻记录的差值为零的记录较多,就必须加以注意。,为了检测出超出某参数值正常范围内的记录,可以为每个参数设定一定取值范围,不在该范围内的值均为异常值。
1.1.3最大值,最小值
求出各个桥梁监测参数的最大值和最小值,可以查看数据是否有异常值,对马桑溪大桥监测数据进行分析,发现温度330和温度33o的最大值为100,说明该参数的数值存在错误可能性较大(因为马桑溪大桥的桥梁检测系统采集的温度数据是桥梁外部的数据),也可以发现那些数据有正负之分(比如应变数据最大值为正,最小值为负),如果该变量没有方向性,就说明这些为负的数据是错误的。通过分析每个桥梁参数值的局部最大值和局部最小值的变化趋势,可以部分反映桥梁结构的变化,如从图4.1可以看出,挠度n10最大值有变小的趋势。
图4.2可以看出加速度1和加速度2的最小值有变大的趋势。求出最大值和最小值,方便后面的数据分析,在以后分析中,也要使用这些数据。
1.1.4平均值,标准方差
桥梁监测系统所获得的数据值受很多方面的因素的影响(比如受天气,桥梁的荷载,监测系统的运行情况等的影响),有时单个的变量的值不能反映桥梁当时的状况,于是以桥梁结构参数或环境参数在不同的时间单位的平均值作为研究对象,这样就可以平滑数据,减小各种因素的影响。平均值有很多条记录计算而来,更符合统计规律。数据的标准方差是数据的一个重要数字特征,它反映了数据的离散程度。像最大值和最小值一样,通过分析每个桥梁参数值的局部方差的变化趋势,可以部分反映桥梁结构的变化,进行健康状况的检测。在后面进行的数据规范化处理的过程中,要利用标准方差和平均值来计算数据的规范值。
1.1.5数据变换
数据变换主要包括:数据概化,,规范化,离散化。
1)数据概化
使用概念分层,,可以用高层次概念替换低层次“原始”数据。许多桥梁监测数据是每十分钟采集一次,但一般情况下不能以这个时间间隔为单位进行分析。为了使每个时间单位拥有更多的数据(使其更符合统计规律),为了平滑数据,获得更有意义的结果,需要把数据采集时间概化到天、周、月、季度和年份,这样就更能反映出数据隐含的正确的模式。
2)规范化
不同的桥梁参数其取值范围是不同的,甚至同一种参数在不同的位置所采集的值的范围也是不同的(比如对于马桑溪大桥,它上面安装的几十个应变传感器,由于每个传感器所放置的位置不同,这些传感器所采集的数据值大小的范围区别很大)。在正式进行数据挖掘之前,必须进行数据规范化,也就是将变量的值落入一致的范围之内。
本文中采用,Z-score(零均值)规范化的方法,属性A的值数基于A的平均值和标准差规范化。A的值v被规范化为
,由下式计算:
(1)
其中,
和
分别为属性A的平均值和标准差。该方法特别适合A的最大值和最小值未知的情况,并且这种方法受异常值的影响较小。
3)离散化
为了方便数据分析,特别是一些数据挖掘算法只处理符号数据,需要对数据进行离散化处理,也就是将数值属性域划分为多个区间,用一些标号来代替一个数值区间。本文采用分相技术来离散化数据,分箱技术通过考察邻近的值来平滑数据。分箱划分规则有等宽(每个离散值之间的距离是一个常数)、等深(每个离散值数包含的记录数一样)和指定离散值的个数。
1.1.6 主成分分析(PCA)
主成分分析是一种对数据进行压缩和降维的方法。它能创建一个替换的、较小的变量集来组合原有属性的精华,它能够建立一个较好的规约数值数据的模型,用于减少桥梁监测数据。
假设需要压缩或降维的数据是由N个数据行(记录)组成,共有k个维度(属性或特征)。PCA从k个维度中寻找出c个共轭向量,c小于等于k。从而实现对初始数据进行有效的数据降维和压缩。PCA方法主要处理步骤说明如下:
1)首先对输入数据进行规格化,以确保各属性的数据取值均落入相同的数值范围。
2)根据已规格化的数据计算c个共轭向量,这个共轭向量就是主要成分。而所输入的数据均可以表示为这c个共轭向量的线性组合。
3)对c个共轭向量按其重要性(计算所得变化量,)进行递减排序。
4)根据所给定的用户阈值,消去重要性较低的共轭向量,以便最终获得消尽后的数据集合。
1.1.7 小结
通过对数据进行预处理使数据得到平滑,消除了一些异常值,除了本节介绍的一些数据预处理过程,我们还采用了其它方法,事实上数据的预处理过程贯穿数据挖掘的每一个阶段,甚至一些数据挖掘的算法也可以用于数据的预处理(比如聚类可用于数据的维规约,时序分析也可以进行数据规约。)
《来源科技文献,经本人分析整理,以技术会友,广交天下朋友》