数据清洁(data cleaning,data scrubbing)也称为数据净化,是指检测数据集合中存在的不符合规范的数据,并进行数据修复,提高数据质量的过程[51]。数据清洁一般是自动完成,只有在少数情况下需要人工参与完成。数据清洁可分为“特定领域(domain-specific)数据清洁”和“领域无关(domain-independent)数据清洁”两类[52]。“特定领域数据清洁”需要用到相关领域知识,并要求参与清洁过程的人员掌握相关领域知识;“领域无关数据清洁”面向普通数据库用户,适用于不同的业务领域,更方便与传统数据库管理系统相整合。
脏数据的类型有许多种类而且每种脏数据出现的原因也不一样,本书将脏数据分为单数据源模式层问题、单数据源实例层问题、多数据源模式层问题和多数据源实例层问题四种类型[53],表10-4列出了“脏数据”类型、实例与出现原因。
表10-4 “脏数据”类型、实例与出现原因元数据分类
图3-33 草图1
如表10-4所示,“脏数据”的类型有很多种,在实例层来说,单数据源的“脏数据”就是不完整数据、不正确数据、不可理解数据、过时数据、数据重复等,单数据源的数据清洁需要在属性上对数据进行检测与处理。多数据源的“脏数据”更为复杂,主要指大量的重复数据、数据冲突,多数据源的数据清洁重点是对重复数据的检测与处理、解决数据冗余和数据冲突问题。
数据清洁的原理就是通过分析脏数据的产生原因及存在形式,对数据流的过程进行考察、分析,并总结出一些方法(数理统计、数据挖掘或预定义规则等方法),将脏数据转化成满足数据质量要求的数据。
为了提高数据质量,按照表10-4中所示的“脏数据”类型,数据清洁方法可以划分为基于模式层和基于实例层的方法,下面详细介绍这两种方法的具体实现。
1)模式层脏数据的清洁方法
模式层脏数据产生原因主要包括数据结构设计不合理和属性约束不够两方面,因而,针对两方面问题提出了避免冲突的清洁方法以及属性约束的清洁方法。
(1)属性约束的清洁方法。在关系数据库中,由于属性约束设置不合理而产生的脏数据类型有:缺少完整性约束、唯一性冲突和参照完整性冲突等。针对这类问题的清洁方法有人工干预法和函数依赖法[54]。人工干预法能解决类型冲突、关键字冲突等问题,而函数依赖法主要针对依赖冲突等问题而提出,通过属性间的函数依赖关系,查找违反函数依赖的值等实现脏数据的清洁。
(2)避免冲突的清洁方法。在数据仓库中,由于存在多个数据来源,容易产生命名冲突和结构冲突的问题。为解决此类问题,需要配合元数据一起使用。如果是模式冲突可以对数据进行重构,对于语义冲突可以建立元数据来解决。识别不同数据源间的等价实体,通常需要建立三个层次的等价实体关系表。包括:数据库级索引表、表级等价实体对照表和字段级等价实体对照表。(www.xing528.com)
2)实例层脏数据的清洁方法
实例层的脏数据主要有:拼写错误、重复/冗余记录、空值、数据失效和噪声数据。每一张脏数据的清洁方法如下所示:
(1)拼写错误的清洁方法。拼写错误可以通过拼写检查器来检错和纠错,这是一种基于字典搜索的拼写检查方法[55]。拼写检查器能够快速发现英文单词的错误,但是,对于中文单词的检错和纠错的效率却不太高,有时,还需要配合人工检查一起完成数据清洁。
(2)空缺值的清洁方法。空缺值的清洁方法包括:忽略元组;人工填写空缺值;使用一个全局变量填充空缺值;使用属性的中心度量(均值、中位数等);使用与给定数据集属于同一类的所有样本的属性均值、中位数、最大值、最小值、从数等;使用最可能的值;或更为复杂的概率统计函数值填充空缺值。
(3)重复数据的清洁方法。要清洁重复数据,首先要检测出所有的重复值。检测方法主要分为:基于字段和基于记录的重复检测。基于字段的重复检测算法主要包括编辑距离算法、树编辑距离算法、TISimilarity相似匹配算法、Cosine相似度函数算法等[56]。其中,编辑距离算法是最常用的算法,易于实现。基于记录的重复检测算法主要包括排序邻居算法、优先队列算法、Canopy聚类算法等。
(4)不一致数据的清洁方法。在数据迁移工具指定简单的转换规则,如:将字符串gender替换成sex,完成清洁。数据清洁工具使用领域特有的知识(如,邮政地址)对数据作清洁。它们通常采用语法分析和模糊匹配技术完成对多数据源数据的清理。
(5)噪声数据的清洁方法。噪声数据清洁的常用方法有[57]:分箱(binning)法,即通过考察属性值的周围值来平滑属性的值。属性值被分布到一些等深或等宽的“箱”中,用箱中属性值的平均值、中值、从数、边缘值等来替换“箱”中的属性值;回归(regression)法,用一个函数拟合数据来光滑数据;计算机和人工检查相结合,计算机检测可疑数据,然后对它们进行人工判断;使用简单规则库检测和修正错误;使用不同属性间的约束检测和修正错误;使用外部数据源检测和修正错误。
图3-34 草图2
注意:使用扫描特征的时候,要求扫描截面所在的平面与扫描轨迹的起点相交,即扫描轨迹从扫描截面所在的平面开始。另外,扫描轨迹与扫描截面之间的几何关系尽量是“穿透”关系。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。