数据清洗研究综述随着信息处理技术的不断发展,各行各业已建立了很多计算机信息系统,积累了大量的数据。为了使数据能够有效地支持组织的日常运作和决策,要求数据可靠无误,能够准确地反映现实世界的状况。数据是信息的基础,好的数据质量是各种数据分析如OLAP、数据挖掘等有效应用的基本条件。人们常常抱怨“数据丰富,信息贫乏”,究其原因,一是缺乏有效的数据分析技术,二是数据质量不高,如数据输入错误、不同来源数据引起的不同表示方法,数据间的不一致等,导致现有的数据中存在这样或那样的脏数据。它们主要表现为:拼写问题、打印错误、不合法值、空值、不一致值、简写、同一实体的多种表示(重复)、不遵循引用完整性等。数据清洗(DataCleaning,DataCleansing或者DataScrubbing)的目的是检测数据中存在的错误和不一致,剔除或者改正它们,以提高数据的质量[1]。1数据清洗国内外研究现状数据清洗主要在数据仓库、数据库知识发现(也称数据挖掘)和总体数据质量管理这3个领域研究较多。在数据仓库研究和应用领域,数据清洗处理是构建数据仓库的第一步,由于数据量巨大,不可能进行人工处理,因此自动化数据清洗受到工商业界的广泛关注。1.1国外研究现状国外对数据清洗的研究最早出现在美国,是从对全美的社会保险号错误的纠正开始[2]。美国信息业和商业的发展,极大地刺激了对数据清洗技术的研究,主要集中在以下4个方面。(1)检测并消除数据异常采用统计方法来检测数值型属性,计算字段值的均值和标准差,考虑每个字段的置信区间来识别异常字段和记录。将数据挖掘方法引入数据清理,如聚类方法用于检测异常记录、模型方法发现不符合现有模式的异常记录、关联规则方法发现数据集中不符合具有高置信度和支持度规则的异常数据。(2)检测并消除近似重复记录即对重复记录进行清洗。消除数据集中的近似重复记录问题是目前数据清洗领域中研究最多的内容。为了从数据集中消除重复记录,首要的问题就是如何判断两条记录是否近似重复。(3)数据的集成在数据仓库应用中,数据清洗首先必须考虑数据集成,主要是将数据源中的结构和数据映射到目标结构与域中。在这方面已经开展了大量的研究工作。(4)特定领域的数据清洗不少数据清洗方案和算法都是针对特定应用问题的,只适用于较小的范围。通用的、与应用领域无关的算法和方案较少。近年来,国外的数据清洗技术发展得很快,从市场上存在的数据清洗软件可以看出,其中包括商业上的数据清洗软件,也有大学和研究机构开发的数据清洗软件。1.2国内研究现状目前,国内对数据清洗技术的研究还处于初级阶段。直接针对数据清洗,特别是针对中文数据清洗的研究成果并不多。大多是在数据仓库、决策支持、数据挖掘研究中,对其做一些比较简单的阐述。银行、保险和证券等对客户数据的准确性要求很高的行业,都在做各自的客户数据的清洗工作,针对各自具体应用而开发软件,而很少有理论性的成果见诸于报道。2数据清洗的定义与对象2.1数据清洗定义迄今为止,数据清洗还没有公认的定义,不同的应用领域对其有不同的解释。(1)数据仓库领域中的数据清洗在数据仓库领域,数据清洗定义为清除错误和不一致数据的过程,并需要解决元组重复问题。当然,数据清洗并不是简单地用优质数据更新记录,它还涉及数据的分解与重组。(2)数据挖掘领域中的数据清洗数据挖掘(早期又称为数据库的知识发现)过程中,数据清洗是第一个步骤,即对数据进行预处理的过程。各种不同的KDD和DW系统都是针对特定的应用领域进行数据清洗的。文献[3]认为,信息的模式被用于发现“垃圾模式”,即没有意义的或错误的模式,这属于数据清洗的一种。(3)数据质量管理领域中的数据清洗数据质量管理是一个学术界和商业界都感兴趣的领域。全面数据质量管理解决整个信息业务过程中的数据质量及集成问题。在该领域中,没有直接定义数据清洗过程。有些文章从数据质量的角度,将数据清洗过程定义为一个评价数据正确性并改善其质量的过程。2.2数据清洗的对象数据清洗的对象可以按照数据清洗对象的来源领域与产生原因进行分类。前者属于宏观层面的划分,后者属于微观层面的划分。(1)来源领域很多领域都涉及到数据清洗,如数字化文献服务、搜索引擎、金融领域、政府机构等,数据清洗的目的是为信息系统提供准确而有效的数据。数字化文献服务领域,在进行数字化文献资源加工时,OCR软件有时会造成字符识别错误,或由于标引人员的疏忽而导致标引词的错误等,是数据清洗需要完成的任务。搜索引擎为用户在互联网上查找具体的网页提供了方便,它是通过为某一网页的内容进行索引而实现的。而一个网页上到底哪些部分需要索引,则是数据清洗需要关注的问题。例如,网页中的广告部分,通常是不需要索引的。按照网络数据清洗的粒度不同,可以将网络数据清洗分为两类,即Web页面级别的数据清洗和基于页面内部元素级别的数据清洗,前者以Google公司提出的PageRank算法和IBM公司Clever系统的HITS算法为代表;而后者的思路则集中体现在作为MSN搜索引擎核心技术之一的VIPS算法上[4]。在金融系统中,也存在很多“脏数据”。主要表现为:数据格式错误,数据不一致,数据重复、错误,业务逻辑的不合理,违反业务规则等。例如,未经验证的身份证号码、未经验证的日期字段等,还有账户开户日期晚于用户销户日期、交易处理的操作员号不存在、性别超过取值范围等。此外,也有因为源系统基于性能的考虑,放弃了外键约束,从而导致数据不一致的结果。电子政务系统也存在“脏数据”。为了能够更好地对公民负责并且能够与全国的其他警察局共享数据,英国Hum-berside州警察局使用数据清洗软件清洗大范围的嫌疑犯和犯罪分子的数据。这次清洗的范围庞大,跨越不同的系统,不仅有该警察局内部系统的数据,还有外部的数据库包括本地的和整个英国范围内的。其中有些数据库能够相连和整合,而有些则不能。例如,“指令部级控制”的犯罪记录数据库是用来记录犯罪事件的,该数据库是和嫌疑犯数据库分开的。而嫌疑犯数据库也许和家庭犯罪或孩童犯罪数据库是分开的[5]。(2)产生原因在微观方面,数据清洗的对象分为模式层数据清洗与实例层数据清洗[6]。数据清洗的任务是过滤或者修改那些不符合要求的数据。不符合要求的数据主要是有不完整的数据、错误的数据和重复的数据3大类。不完整数据的特征是一些应该有的信息缺失,如机构名称、分公司的名称、区域信息缺失等.错误数据产生的原因是业务系统不够健全,在接收输入后没有进行判断而直接写入后台数据库造成的,比如数值数据输成全角数字字符、字符串数据后有一个回车、日期格式不正确、日期越界等。错误值包括输入错误和错误数据,输入错误是由原始数据录入人员疏忽而造成的,而错误数据大多是由一些客观原因引起的,例如人员填写的所属单位的不同和人员的升迁等。异常数据是指所有记录中如果一个或几个字段间绝大部分遵循某种模式,其它不遵循该模式的记录,如年龄字段超过历史上的最高记录年龄等。重复数据也就是“相似重复记录”,指同一个现实实体在数据集合中用多条不完全相同的记录来表示,由于它们在格式、拼写上的差异,导致数据库管理系统不能正确识别。从狭义的角度看,如果两条记录在某些字段的值相等或足够相似,则认为这两条记录互为相似重复。识别相似重复记录是数据清洗活动的核心。此外,由于法人或作者更换单位造成数据的不一致情况、不同的计量单位、过时的地址、邮编等其他情况也是数据清洗的对象。3数据清洗基本原理与框架模型3.1基本原理数据清洗的原理为:利用有关技术,如统计方法、数据挖掘方法、模式规则方法等将脏数据转换为满足数据质量要求的数据。数据清洗按照实现方式与范围,可分为以下4种。(1)手工实现通过人工检查,只要投入足够的人力、物力与财力,也能发现所有错误,但效率低下。在大数据量的情况下,手工操作几乎是不可能的。(2)编写专门的应用程序这种方法能解决某个特定的问题,但不够灵活,特别是在清洗过程需要反复进行(一般来说,数据清洗一遍就达到要求的很少)时,导致程序复杂,清洗过程变化时,工作量大。而且这种方法也没有充分利用目前数据库提供的强大数据处理能力。(3)解决某类特定应用域的问题如根据概率统计学原理查找数值异常的记录,对姓名、地址、邮政编码等进行清洗,这是目前研究较多的领域,也是应用最成功的一类。(4)与特定应用领域无关的数据清洗这一部分的研究主要集中在清洗重复记录上。在以上4种实现方法中,后两种具有某种通用性及其较大的实用性,引起了越来越多的关注。但是不管哪种方法,都由3个阶段组成:数据分析、定义;搜索、识别错误记录;修正错误。3.2数据清洗的框架模型目前已经研究出很多数据清洗的框架模型,下面介绍3个有代表性的框架模型。(1)Trillium的模型Trillium[7]是由HarteHanksDataTechnologies的TrilliumSoftwareSystems部门创建的企业范围的数据清洗软件。Trillium将数据清洗的过程分成5个步骤,分别由5个模块来完成。①ConversonWorkbench提供了一整套数据审计、分析和重组工具;②Parser对遗产数据和操作型系统的数据作解析、验证和标准化;③Matcher地提供一套标准规则用于记录连接和匹配,使得用户可以方便地调整和定制以满足其特殊的业务要求;④Geocoder验证、纠正和增强物理数据;⑤Utilties提供联机数据浏览,域级频率统计,词的计数和分布。另外,合并、选择和格式重组工具提供数据重组能力。(2)Bohn模型Bohn数据清洗模型[8]将数据清洗分为以下4个主要部分:①数据检查:确认数据质量,内部模式和主要字段(使用的不同字段);②数据词法分析:确定每个字段内的各个元素的上下文和目的地;③数据校正:将数据与已知清单(通常为地址)匹配并保证所有的字段被标明为好、坏或可自动校正。但是,这并不表示在软件设计的时候需要有许多值的判断。只要可能,技术人员就应该与客户一起校正源中的数据;④记录匹配:决定两个记录(可能是不同类型的)是否代表同一个对象。该过程涉及许多值判断和复杂的软件工具。(3)AJAX模型AJAX[9]模型由HelenaGalhardas提出,该模型是逻辑层面的模型(LogicLevel),将数据清洗过程分为5个操作步骤:①源数据的映射(Mapping);②对映射后的记录进行匹配(Matching);③对记录做聚集操作(Clustering);④对聚集进行合并(Merging);⑤对合并后的数据做视图显示(Viewing)。4数据清洗算法与工具4.1数据清洗算法在脏数据清洗算法上,一些研究机构提出了脏数据预处理、排序邻居方法、多次遍历数据清洗方法、采用领域知识进行清洗、采用数据库管理系统的集成数据清洗等算法。本文将针对属性和重复记录的清洗分别从检测和清洗两个角度对相关算法展开论述,如图1所示。图1数据清洗方法分类(1)自动检测属性错误的方法人工检测数据集中的属性错误,需要花费大量的人力、物力和时间,而且这个过程本身很容易出错,所以需要利用高效的方法自动检测数据集中的属性错误,方法主要有:基于统计的方法[10],聚类方法[11],关联规则的方法[10]等。表1给出自动检测属性错误的方法比较。(2)属性清洗的方法①空缺值的清洗方法主要有:忽略元组;人工填写空缺值;使用一个全局变量填充空缺值;使用属性的平均值、中间值、最大值、最小值或更为复杂的概率统计函数值填充空缺值。②噪声数据的清洗方法主要有:分箱(Binning),通过考察属性值的周围值来平滑属性的值。属性值被分布到一些等深或等宽的“箱”中,用箱中属性值的平均值或中值来替换“箱”中的属性值;计算机和人工检查相结合,计算机检测可疑数据,然后对它们进行人工判断;使用简单规则库检测和修正错误;使用不同属性间的约束检测和修正错误;使用外部数据源检测和修正错误。③不一致数据的清洗方法。对于有些事务,所记录的数据可能存在不一致。有些数据不一致,可以使用其他材料人工加以更正。例如,数据输入时的错误可以使用纸上的记录加以更正。知识工程工具也可以用来检测违反限制的数据。例如,知道属