分享

数据清洗研究综述

 数据清洗展示 2015-10-16

随着信息处理技术的不断发展,各行各业已建立了很多计算机信息系统,积累了大量的数据。为了使数据能够有效地支持组织的日常运作和决策,要求数据可靠无误,能够准确地反映现实世界的状况。数据是信息的基础,好的数据质量是各种数据分析如OLAP、数据挖掘等有效应用的基本条件。人们常常抱怨“数据丰富,信息贫乏”,究其原因,一是缺乏有效的数据分析技术,二是数据质量不高,如数据输入错误、不同来源数据引起的不同表示方法,数据间的不一致等,导致现有的数据中存在这样或那样的脏数据。它们主要表现为:拼写问题、打印错误、不合法值、空值、不一致值、简写、同一实体的多种表示(重复)、不遵循引用完整性等。

数据清洗(Data CleaningData Cleansing或者Data Scrubbing)的目的是检测数据中存在的错误和不一致,剔除或者改正它们,以提高数据的质量[1]

1 数据清洗国内外研究现状

数据清洗主要在数据仓库、数据库知识发现(也称数据挖掘)和总体数据质量管理这3个领域研究较多。在数据仓库研究和应用领域,数据清洗处理是构建数据仓库的第一步,由于数据量巨大,不可能进行人工处理,因此自动化数据清洗受到工商业界的广泛关注。

1.1 国外研究现状

国外对数据清洗的研究最早出现在美国,是从对全美的社会保险号错误的纠正开始[2]。美国信息业和商业的发展,极大地刺激了对数据清洗技术的研究,主要集中在以下4个方面。

(1)检测并消除数据异常

采用统计方法来检测数值型属性,计算字段值的均值和标准差,考虑每个字段的置信区间来识别异常字段和记录。将数据挖掘方法引入数据清理,如聚类方法用于检测异常记录、模型方法发现不符合现有模式的异常记录、关联规则方法发现数据集中不符合具有高置信度和支持度规则的异常数据。

(2)检测并消除近似重复记录

即对重复记录进行清洗。消除数据集中的近似重复记录问题是目前数据清洗领域中研究最多的内容。为了从数据集中消除重复记录,首要的问题就是如何判断两条记录是否近似重复。

(3)数据的集成

在数据仓库应用中,数据清洗首先必须考虑数据集成,主要是将数据源中的结构和数据映射到目标结构与域中。在这方面已经开展了大量的研究工作。

(4)特定领域的数据清洗

不少数据清洗方案和算法都是针对特定应用问题的,只适用于较小的范围。通用的、与应用领域无关的算法和方案较少。

近年来,国外的数据清洗技术发展得很快,从市场上存在的数据清洗软件可以看出,其中包括商业上的数据清洗软件,也有大学和研究机构开发的数据清洗软件。

1.2 国内研究现状

目前,国内对数据清洗技术的研究还处于初级阶段。直接针对数据清洗,特别是针对中文数据清洗的研究成果并不多。大多是在数据仓库、决策支持、数据挖掘研究中,对其做一些比较简单的阐述。银行、保险和证券等对客户数据的准确性要求很高的行业,都在做各自的客户数据的清洗工作,针对各自具体应用而开发软件,而很少有理论性的成果见诸于报道。

2 数据清洗的定义与对象

2.1 数据清洗定义

迄今为止,数据清洗还没有公认的定义,不同的应用领域对其有不同的解释。

(1)数据仓库领域中的数据清洗

在数据仓库领域,数据清洗定义为清除错误和不一致数据的过程,并需要解决元组重复问题。当然,数据清洗并不是简单地用优质数据更新记录,它还涉及数据的分解与重组。

(2)数据挖掘领域中的数据清洗

数据挖掘(早期又称为数据库的知识发现)过程中,数据清洗是第一个步骤,即对数据进行预处理的过程。各种不同的KDDDW系统都是针对特定的应用领域进行数据清洗的。文献[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]是由Harte Hanks Data TechnologiesTrillium Software Systems部门创建的企业范围的数据清洗软件。Trillium将数据清洗的过程分成5个步骤,分别由5个模块来完成。

Converson Workbench提供了一整套数据审计、分析和重组工具;

Parser对遗产数据和操作型系统的数据作解析、验证和标准化;

Matcher地提供一套标准规则用于记录连接和匹配,使得用户可以方便地调整和定制以满足其特殊的业务要求;

Geocoder验证、纠正和增强物理数据;

Utilties提供联机数据浏览,域级频率统计,词的计数和分布。另外,合并、选择和格式重组工具提供数据重组能力。

(2)Bohn模型

Bohn数据清洗模型[8]将数据清洗分为以下4个主要部分:

①数据检查:确认数据质量,内部模式和主要字段(使用的不同字段)

②数据词法分析:确定每个字段内的各个元素的上下文和目的地;

③数据校正:将数据与已知清单(通常为地址)匹配并保证所有的字段被标明为好、坏或可自动校正。但是,这并不表示在软件设计的时候需要有许多值的判断。只要可能,技术人员就应该与客户一起校正源中的数据;

④记录匹配:决定两个记录(可能是不同类型的)是否代表同一个对象。该过程涉及许多值判断和复杂的软件工具。

(3)AJAX模型

AJAX[9]模型由Helena Galhardas提出,该模型是逻辑层面的模型(Logic Level),将数据清洗过程分为5个操作步骤:

①源数据的映射(Mapping)

②对映射后的记录进行匹配(Matching)

③对记录做聚集操作(Clustering)

④对聚集进行合并(Merging)

⑤对合并后的数据做视图显示(Viewing)

4 数据清洗算法与工具

4.1 数据清洗算法

在脏数据清洗算法上,一些研究机构提出了脏数据预处理、排序邻居方法、多次遍历数据清洗方法、采用领域知识进行清洗、采用数据库管理系统的集成数据清洗等算法。本文将针对属性和重复记录的清洗分别从检测和清洗两个角度对相关算法展开论述,如图1所示。

 

1 数据清洗方法分类

(1)自动检测属性错误的方法

人工检测数据集中的属性错误,需要花费大量的人力、物力和时间,而且这个过程本身很容易出错,所以需要利用高效的方法自动检测数据集中的属性错误,方法主要有:基于统计的方法[10],聚类方法[11],关联规则的方法[10]等。表1给出自动检测属性错误的方法比较。

 

(2)属性清洗的方法

①空缺值的清洗方法主要有:忽略元组;人工填写空缺值;使用一个全局变量填充空缺值;使用属性的平均值、中间值、最大值、最小值或更为复杂的概率统计函数值填充空缺值。

②噪声数据的清洗方法主要有:分箱(Binning),通过考察属性值的周围值来平滑属性的值。属性值被分布到一些等深或等宽的“箱”中,用箱中属性值的平均值或中值来替换“箱”中的属性值;计算机和人工检查相结合,计算机检测可疑数据,然后对它们进行人工判断;使用简单规则库检测和修正错误;使用不同属性间的约束检测和修正错误;使用外部数据源检测和修正错误。

③不一致数据的清洗方法。对于有些事务,所记录的数据可能存在不一致。有些数据不一致,可以使用其他材料人工加以更正。例如,数据输入时的错误可以使用纸上的记录加以更正。知识工程工具也可以用来检测违反限制的数据。例如,知道属性间的函数依赖,可以查找违反函数依赖的值[11]。此外,数据集成也可能产生数据不一致。表2给出属性清洗的方法比较情况。

 

(3)检测重复记录的算法

消除重复记录可以针对两个数据集或者一个合并后的数据集,首先需要检测出标识同一个现实实体的重复记录,即匹配过程。检测重复记录的算法主要有:基本的字段匹配算法[10],递归的字段匹配算法[10]Smith-Waterman算法[10,12],编辑距离[13,14]Cosine相似度函数[14,15]。表3给出检测重复记录算法的比较情况。

(4)重复记录清洗的算法

目前消除重复记录的基本思想是“排序和合并”,先将数据库中的记录排序,然后通过比较邻近记录是否相似来检测记录是否重复。消除重复记录的算法主要有:优先队列算法[14,16],近邻排序算法(Sorted-Neighborhood Method, SNM)[14,17],多趟近邻排序(Multi-Pass Sorted-Neighborhood, MPN)[14,17]。表4给出重复记录清洗算法的比较情况。

 

4.2 数据清洗工具

从特定功能的清洗工具、ETL工具以及其他工具3个方面来对数据清洗工具进行介绍。

(1)特定功能的清洗工具

特定的清洗工具主要处理特殊的领域问题,基本上是姓名和地址数据的清洗,或者消除重复。转换是由预先定义的规则库或者和用户交互来完成的。

在特殊领域的清洗中,姓名和地址在很多数据库中都有记录而且有很大的基数。特定的清洗工具提供抽取和转换姓名及地址信息到标准元素的功能,与在基于清洗过的数据工具相结合来确认街道名称、城市和邮政编码。特殊领域的清洗工具现有IDCENTRICPUREINTEGRATEQUICKADDRESSREUNIONTRILLIUM[14]

消除重复的一类工具根据匹配的要求探测和去除数据集中相似重复记录。有些工具还允许用户指定匹配的规则。目前已有的用于消除重复记录的清洗工具有DATACLEANSERMERGE/PURGE LIBRARYMATCHITASTERMERGE[14]

(2)ETL工具

现有大量的工具支持数据仓库的ETL处理,如COPYMANAGERDATASTAGEEXTRACTWERMART等。它们使用建立在DBMS上的知识库以统一的方式来管理所有关于数据源、目标模式、映射、教本程序等的原数据。模式和数据通过本地文件和DBMS网关、ODBC等标准接口从操作型数据源收取数据。这些工具提供规则语言和预定义的转换函数库来指定映射步骤[14]

ETL工具很少内置数据清洗的功能,但是允许用户通过API指定清洗功能。通常这些工具没有用数据分析来支持自动探测错误数据和数据不一致。然而,用户可以通过维护原数据和运用集合函数(SumCountMinMax)决定内容的特征等办法来完成这些工作。这些工具提供的转换工具库包含了许多数据转换和清洗所需的函数,例如数据类转变,字符串函数,数学、科学和统计的函数等。规则语言包含If-thenCase结构来处理例外情况,例如,错误拼写、缩写,丢失或者含糊的值和超出范围的值[14]。而在我国,对数据清洗的研究甚少,还没有一个成型的完善的ETL工具应用于数据仓库的系统中[18]

(3)其他工具

其他与数据清洗相关的工具包括:基于引擎的工具(COPYMANAGERDECISIONBASEPOWERMARTDATASTAGEWAREHOUSEADMINISTRATOR)、数据分析工具(MIGRATIONARCHITECTWIZRULEDATAMININGSUITE)和业务流程再设计工具(INTEGRITY)、数据轮廓分析工具(MIGRATIONARCHITECT Cevoke Software)、数据挖掘工具(WIZRULE)[19]

4.3 数据清洗工具功能简介

5是对各种典型数据清洗工具功能的描述。

5 数据清洗评估

数据清洗的评估实质上是对清洗后的数据的质量进行评估,而数据质量的评估过程是一种通过测量和改善数据综合特征来优化数据价值的过程。数据质量评价指标和方法研究的难点在于数据质量的含义、内容、分类、分级、质量的评价指标等。

文献[20]和文献[21]提出了一些数据质量的评估指标。在进行数据质量评估时,要根据具体的数据质量评估需求对数据质量评估指标进行相应的取舍。但是,数据质量评估至少应该包含以下两方面的基本评估指标[18]

 

(1)数据对用户必须是可信的

可信性包括精确性、完整性、一致性、有效性、唯一性等指标。

①精确性:描述数据是否与其对应的客观实体的特征相一致。

②完整性:描述数据是否存在缺失记录或缺失字段。

③一致性:描述同一实体的同一属性的值在不同的系统是否一致。

④有效性:描述数据是否满足用户定义的条件或在一定的域值范围内。

⑤唯一性:描述数据是否存在重复记录。

(2)数据对用户必须是可用的

包括时间性、稳定性等指标。

①时间性:描述数据是当前数据还是历史数据。

②稳定性:描述数据是否是稳定的,是否在其有效期内。

6 数据清洗研究和应用展望

(1)中文数据清理工具的研究和开发

目前,数据清理主要集中在西文上,中文数据清理与西文数据清理有较大的不同(如很多匹配算法并不适用于中文)。中文数据清理还没有引起重视。

(2)数据挖掘方法在数据清理中的深入应用

主要集中在数值型、字符串型字段。识别数值型字段之间的关系异常很不成熟与实用。数据挖掘算法在数据清理中的应用亟需加强[22]

(3)重复记录识别的效率需要进一步提高

尽管识别重复记录受到最多的关注,并采取了许多措施,但识别效率与识别精度问题的解决并不令人满意。特别是在记录数据非常多时,耗时太多,有待研究更好的算法。

(4)非结构化数据的清洗

以前数据清理主要集中在结构化的数据上,而现在非结构化数据或半结构化的数据(XML数据)已受到越来越多的重视。特别是由于XML自身所具有的特点(通用性、自描述性),在数据清理中应受到重视。

(5)数据清洗工具之间的互操作性

尽管根据用户友好性,很多工具或系统都提供了描述性语言,但基本上都是经过某种已有语言(SQLXML)根据自己需要经过扩展实现的,不能很好地满足数据清理中大致匹配的需要,不具有互操作性。

(6)数据清理方案的通用性

特定领域的数据清理问题依然是研究和应用重点,但较通用的清洗方案会受到越来越多的关注。

 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多