由于数据库系统所获数据量的迅速膨胀(已达 或 数量级),从而导致了现实世界数据库中常常包含许多含有噪声、不完整( )、甚至是不一致( )的数据。
显然对数据挖掘所涉及的数据对象必须进行预处理。
那么如何对数据进行预处理以改善数据质量,并最终达到完善最终的数据挖掘结果之目的呢?数据预处理主要包括:数据清洗( )、数据集成( )、数据转换( )和数据消减( )。
本章将介绍这四种数据预处理的基本处理方法。
数据预处理是数据挖掘(知识发现)过程中的一个重要步骤,尤其是在对包含有噪声、不完整,甚至是不一致数据进行数据挖掘时,更需要进行数据的预处理,以提高数据挖掘对象的质量,并最终达到提高数据挖掘所获模式知识质量的目的。
例如:对于一个负责进行公司销售数据分析的商场主管,他会仔细检查公司数据库或数据仓库内容,精心挑选与挖掘任务相关数据对象的描述特征或数据仓库的维度( ),这包括:商品类型、价格、销售量等,但这时他或许会发现有数据库中有几条记录的一些特征值没有被记录下来;甚至数据库中的数据记录还存在着一些错误、不寻常( )、甚至是不一致情况,对于这样的数据对象进行数据挖掘,显然就首先必须进行数据的预处理,然后才能进行正式的数据挖掘工作。
所谓噪声数据是指数据中存在着错误、或异常(偏离期望值)的数据;不完整( )数据是指感兴趣的属性没有值;而不一致数据则是指数据内涵出现不一致情况(如:作为关键字的同一部门编码出现不同值)。
而数据清洗是指消除数据中所存在的噪声以及纠正其不一致的错误;数据集成则是指将来自多个数据源的数据合并到一起构成一个完整的数据集;数据转换是指将一种格式的数据转换为另一种格式的数据;最后数据消减是指通过删除冗余特征或聚类消除多余数据。
不完整、有噪声和不一致对大规模现实世界的数据库来讲是非常普遍的情况。
不完整数据的产生有以下几个原因:( )有些属性的内容有时没有,如:参与销售事务数据中的顾客信息;( )有些数据当时被认为是不必要的;( )由于误解或检测设备失灵导致相关数据没有记录下来;( )与其它记录内容不一致而被删除;( )历史记录或对数据的修改被忽略了。
遗失数据( ),尤其是一些关键属性的遗失数据或许需要推导出来。
噪声数据的产生原因有:( )数据采集设备有问题;( )在数据录入过程发生了人为或计算机错误;( )数据传输过程中发生错误;如:由于技术限制(有限通讯缓冲区);( )由于命名规则( )或数据代码不同而引起的不一致。
数据清洗还将删去重复的记录行数据清洗( )处理例程通常包括:填补遗漏的数据值、平滑有噪声数据、识别或除去异常值( ),以及解决不一致问题。
有问题的数据将会误导数据挖掘的搜索过程。
尽管大多数数据挖掘过程均包含有对不完全( )或噪声数据的处理,但它们并不鲁棒且常常将处理的重点放在如何避免所挖掘出的模式对数据过分准确( )的描述上。
因此使用一些数据清洗例程对待挖掘的数据进行预处理是十分必要的。
稍后我们将详细介绍数据清洗有关具体方法。
数据集成( )就是将来自多个数据源(如:数据库、文件等)数据合并到一起。
由于描述同一个概念的属性在不同数据库取不同的名字,在进行数据集成时就常常会引起数据的不一致或冗余。
例如:在一个数据库中一个顾客的身份编码为“ ”,而在另一个数据库则为“ ”。
命名的不一致常常也会导致同一属性值的内容不同,如:在一个数据库中一个人的姓取“ ”,而在另一个数据库中则取“ ”。
同样大量的数据冗余不仅会降低挖掘速度,而且也会误导挖掘进程。
因此除了进行数据清洗之外,在数据集成中还需要注意消除数据的冗余。
此外在完成数据集成之后,有时还需要进行数据清洗以便消除可能存在的数据冗余。
数据转换( )主要是对数据进行规格化( )操作。
在正式进行数据挖掘之前,尤其是使用基于对象距离( )的挖掘算法时,如:神经网络、最近邻分类( )等,必须进行数据规格化。
也就是将其缩至特定的范围之内,如:!", "#。
如:对于一个顾客信息数据库中的年龄属性或工资属性,由于工资属性的取值比年龄属性的取值要大许多,如果不进行规格化处理,基于工资属性的距离计算值显然将远超过基于年龄属性的距离计算值,这就意味着工资属性的作用在整个数据对象的距离计算中被错误地放大了。
数据消减( )的目的就是缩小所挖掘数据的规模,但却不会影响(或基本不影响)最终的挖掘结果。
现有的数据消减包括:( )数据聚合( ),如:构造数据立方( );( )消减维数( ),如:通过相关分析消除多余属性;( )数据压缩( ),如:利用编码方法(如最小编码长度或小波);( )数据块消减( $ ),如:利用聚类或参数模型替代原有数据。
此外利用基于概念树的泛化( )也可以实现对数据规模的消减,有关概念树的详情将在稍后介绍。
这里需要强调的是以上所提及的各种数据预处理方法,并不是相互独立的,而是相互关联的。
如:消除数据冗余既可以看成是一种形式的数据清洗,也可以认为是一种数据消减。
由于现实世界数据常常是含有噪声、不完全的和不一致的,数据预处理能够帮助改善数据的质量,进而帮助提高数据挖掘进程的有效性和准确性。
高质量的决策来自高质量的数据。
因此数据预处理是整个数据挖掘与知识发现过程中一个重要步骤。
现实世界的数据常常是有噪声、不完全的和不一致的。
数据清洗( )例程通过填补遗漏数据、消除异常数据、平滑噪声数据,以及纠正不一致的数据。
以下将详细介绍数据清洗的主要处理方法。
假设在分析一个商场销售数据时,发现有多个记录中的属性值为空,如:顾客的收入( )属性,对于为空的属性值,可以采用以下方法进行遗漏数据( )处理:忽略该条记录。
若一条记录中有属性值被遗漏了,则将此条记录排除在♦ 条记录数据挖掘过程之外,尤其当类别属性( )的值没有而又要进行分类数据挖掘时。
当然这种方法并不很有效,尤其是在每个属性遗漏值的记录比例相差较大时。
♦ 手工填补遗漏值值。
一般讲这种方法比较耗时,而且对于存在许多遗漏情况的大规模数据集而言,显然可行较差。
♦ 利用缺省值填补遗漏值值。
对一个属性的所有遗漏的值均利用一个事先确定好的值来填补。
如:都用%&来填补。
但当一个属性遗漏值较多值,若采用这种方法,就可能误导挖掘进程。
因此这种方法虽然简单,但并不推荐使用,或使用时需要仔细分析填补后的情况,以尽量避免对最终挖掘结果产生较大误差。
利用均值填补遗漏值。
计算一个属性(值)的平均值,并用此值填补该♦ 值属性所有遗漏的值。
如:若一个顾客的平均收入( )为 '"""元,则用此值填补 属性中所有被遗漏的值。
♦ 利用同类别均值填补遗漏值值。
这种方法尤其在进行分类挖掘时使用。
如:若要对商场顾客按信用风险( ()进行分类挖掘时,就可以用在同一信用风险类别下(如良好)的 属性的平均值,来填补所有在同一信用风险类别下属性 的遗漏值。
♦ 利用最可能的值填补遗漏值值。
可以利用回归分析、贝叶斯计算公式或决策树推断出该条记录特定属性的最大可能的取值。
例如:利用数据集中其它顾客的属性值,可以构造一个决策树来预测属性 的遗漏值。
最后一种方法是一种较常用的方法,与其他方法相比,它最大程度地利用了当前数据所包含的信息来帮助预测所遗漏的数据。
通过利用其它属性的值来帮助预测属性 的值。
噪声是指被测变量的一个随机错误和变化。
给定一个数值型属性,如:价格,平滑去噪的数据具体方法说明:图- 利用 方法进行平滑描述方法。
方法通过利用相应被平滑数据点的周围点(近邻),对一♦ 方法组排序数据进行平滑。
排序后数据分配到若干桶(称为 ( 或 )中。
由于 方法利用周围点的数值来进行局部平滑。
图- 示意描述了一些 方法技术。
在图- 中,首先对价格数据进行排序,然后将其划分为若干等高度的 (即每个 包含三个数值,两种典型 方法示意描述如图- 所示);这时既可以利用每个 的均值进行平滑,即对每个 中所有值均用该 的均值替换。
在图- 中,第一个中 、)、 均用该 的均值*替换,这种方法称为 均值平滑。
与之类似,对于给定的 ,其最大与最小值就构成了该 的边界。
利用每个 的边界值(最大值或最小值),替换该 中的所有值。
一般讲每个 的宽度越宽,其平滑效果越明显。
若按照等宽划分 ,即每个的取值间距(左右边界之差)相同。
此外 方法也可以用于属性的离散化处理,在第五章关联规则挖掘中将要作详细介绍。
图- 两种典型 方法 ♦ 类方法聚类方法。
通过聚类分析可帮助发现异常数据( ),道理很简单,相似或相邻近的数据聚合在一起形成了各个聚类集合,而那些位于这些聚类集合之外的数据对象,自然而然就被认为是异常数据。
聚类分析方法的具体内容将在第六章详细介绍。
♦ 人机结合检查方法检查方法。
通过人与计算机检查相结合方法,可以帮助发现异常数据。
如:利用基于信息论方法可帮助识别用于分类识别手写符号库中的异常模式;所识别出的异常模式可输出到一个列表中;然后由人对这一列表中的各异常模式进行检查,并最终确认无用的模式(真正异常的模式)。
这种人机结合检查方法比单纯利用手工方法手写符号库进行检查要快许多。
♦ 回归方法方法。
可以利用拟合函数对数据进行平滑。
如:借助线性回归( )方法,包括多变量回归方法,就可以获得的多个变量之间的等高等宽一个拟合关系,从而达到利用一个(或一组)变量值来帮助预测另一个变量取值的目的。
利用回归分析方法所获得的拟合函数,能够帮助平滑数据及除去其中的噪声。
图- 基于聚类分析的异常数据( )检测许多数据平滑方法,同时也是数据消减方法。
例如:以上描述的 方法'可以帮助消减一个属性中不同取值,这也就意味着 方法可以作为基于逻辑挖掘方法中的数据消减处理。
现实世界的数据库常出现数据记录内容的不一致,其中一些数据不一致可以利用它们与外部的关联手工加以解决。
例如:输入发生的数据录入错误一般可以与原稿进行对比来加以纠正。
此外还有一些例程可以帮助纠正使用编码时所发生的不一致问题。
知识工程工具也可以帮助发现违反数据约束条件的情况。
由于同一属性在不同数据库中的取名不规范,常常使得在进行数据集成时,导致不一致情况的发生。
数据集成以及消除数据冗余将在以下小节介绍。
数据挖掘任务常常涉及数据集成操作,即将来自多个数据源的数据,如:数据库、数据立方( )、普通文件等,结合在一起并形成一个统一数据集合,以便为数据挖掘工作的顺利完成提供完整的数据基础。
在数据集成过程中,需要考虑解决以下几个问题:( )模式集成( )问题,即如何使来自多个数据源的现实世界的实体相互匹配,这其中就涉及到实体识别问题( $)。
例如:如何确定一个数据库中的“ ”与另一个数据库中的“ ”是否表示同一实体。
数据库与数据仓库通常包含元数据( ),所谓元数据就是关于数据的数据,这些元数据可以帮助避免在模式集成时发生错误。