您好, 访客   登录/注册

数据清洗研究综述

来源:用户上传      作者:

  摘要:数据清洗是数据分析、数据挖掘等研究的起点。本文对数据清洗的研究进行了综述。首先阐述了数据清洗与数据质量的关系,然后说明了数据清洗的概况,并分析了数据清洗的步骤及方法,最后简要介绍了国内外关于数据清洗的研究近况,同时对中文数据清洗研究做了展望。
  关键词:脏数据;数据清洗;数据质量;相似重复数据;清洗步骤
  中国分类号:TP391 文献标识码:A
  文章编号:1009-3044(2020)20-0044-04
  A Review of The Development of Data Cleaning
  LIAO Shu-yan
  ( Central China Normal University, Wuhan 430079, China)
  Abstract: Data cleaning is the starting point of data analysis, data mining and so on. In this paper, the research of data cleaning isreviewed. Firstly, the relationship between data cleaning and data quality is explained, and then the data cleaning is described. andthe steps and algorithms of data cleaning are analyzed, and the research situation on data cleaning at home and abroad is brieflY- in-troduced. and the research on Chinese data cleaning is a prospect.
  Key words: dirtV data; data cleaning; data quality; similar duplicate data; cleaning steps
  1引言
  数据是信息时代的标志性产物,逐渐独立于软件产品,甚至主导了某些软件产品的发展。在互联网蓬勃发展的时代,人们能够从各个方面获得海量数据。在获得数据之后,人们往往希望能对这些数据进行不同的处理,并从中抽取出有价值的信息。为了得到满足人们需要的有价值的信息,就要求所获得的数据具有可靠性,同时能够准确反映实际情况。但是实际上,人们获得的第一手数据通常是“脏数据”。“脏数据”主要指不一致或不准确数据、陈旧数据以及人为造成的错误数据等[1]。如果对脏数据不加以必要的清洗处理就直接分析,那么从这些数据中得出的最终结论或规律必然是不准确。数据清洁的重要性由此凸显出来一它能提高数据的公信力和准确度,因而对数据清洗的研究就显得至关重要。
  2数据清洗与数据质量的关系
  数据清洗过程的主要加工处理对象是脏数据。脏数据本身具有的不一致和不准确性等特点,直接影响了数据的显式和隐式价值,即直接影响了数据的质量。良好的数据清洗过程,能有效地剔去脏数据中的糟粕,使其内含的价值显露。因此数据清洗在提高数据质量上起着决定性的作用。
  数据质量指的是数据的准确性、及时性、一致性和完整性,這几个指标在信息系统中得到满足的程度[2]。通常将数据质量问题分为四类:单数据源模式层问题、单数据源实例层问题、多数据源模式层问题和多数据源实例层问题[3]。缺乏完整性约束以及架构设计差是导致单数据源模式层问题出现的重要原因。由数据记录异常引发的单数据源实例层问题,主要包括拼写错误、冗余记录、数据内部的字段矛盾等。由异构数据模型和架构设计引发的多数据源模式层的问题,主要包括命名冲突、结构冲突等。由重叠不一致的数据引发的多数据源实例层的问题,主要包括聚合不一致、时间不一致等。数据质量问题的分类如图1所示。数据清洗是一种提高数据质量的可行有效的技术方法,它主要用于处理在数据质量问题(例如冗余记录和聚合不一致记录)中,出现在实例层的脏数据。数据清洗具有一定的局限性,它需要与在模式层处理脏数据的数据整合技术共同使用,以充分提高数据的质量。
  3数据清洗概况
  3.1数据清洗的概念
  由于数据清洗的应用领域多、应用范围广,因此尚未形成公认的定义。本文采用王曰芬教授[4]对数据清洗的定义:数据清洗为清除错误和不一致数据的过程,并需要解决孤立点和元组重复问题。从这个定义可以看出,数据清洗是一个复杂的过程,不仅仅要检测出数据中存在的差错、清除数据中存在的不一致,更重要的是对数据进行整合和分解,将脏数据转变成干净数据,供数据分析及数据挖掘使用,以便更好地找出数据之间的关联,挖掘其内在价值。
  3.2数据清洗的对象
  数据清洗的对象可分成宏观层面对象以及微观层面对象。从宏观层面上,数据清洗用于许多特定领域,如经济领域、政治领域等。从微观层面上看,数据清洗主要用于解决数据质量中在实例层出现的问题,如时间不一致等。
  4数据清洗步骤
  目前比较成熟的数据清洗框架已经有很多了,例如Trilli-um模型、AJAX模型等。这些模型虽然有所差异,但其中数据清洗的一般步骤大致相同,可以分为五个步骤。
  1)需求分析。此阶段的目的是通过分析数据的作用领域与运用环境,来明确有效数据的格式,并据此得到数据清洗的目标。
  2)预处理。通过数据分析技术,从实例层和模式层出发,识别数据中存在的逻辑错误、不一致等数据质量问题,将获取的数据质量信息整理归档。
  3)确定清洗规则。根据预处理结果获得的数据质量信息,分析脏数据产生的根本原因,从而定义数据清洗规则。数据清洗规则包括空值数据清洗规则、异常数据清洗规则、冗余数据清洗规则[5]等。不同的数据集的特性差异明显,因此数据清洗要选择适合数据集特点的规则。   4)清洗与修正。为避免错误的清洗导致数据遗失,在清洗之前有必要对数据进行备份。根据选择的清洗规则或模型,对数据进行清洗。不同的清洗规则作用于相同的数据集所得的效果不尽相同。分析清洗后的效果,若不尽人意,则可能需要重新选择清洗规则,再次清洗。根据最终清洗结果,修正已经归档的数据质量信息。
  5)检验。使用相应的检验操作,验证经过清洗后的数据是否符合预期要求。若不符合任务要求,可适当修改清洗规则或模型,重新进行数据清洗过程,并重新对结果进行检验评估。
  5数据清洗方法
  数据清洗技术与数据整合技术相辅相成,都用于解决数据质量问题。因此目前大多数数据清洗方法都内含了数据整合技术,主要从两个方面对脏数据进行处理,一是从模式层着手,二是从实例层着手。从这两个方面对脏数据进行分析与修正,以提高数据的质量。
  5.1模式层的清洗方法
  结构冲突和属性约束是导致模式层脏数据出现的主要原因。针对这两个方面,目前的清洗方法有面向结构冲突的清洗方法以及面向噪声数据的清洗方法[6]。
  5.1.1面向结构冲突的清洗方法
  为解决结构冲突中的类型冲突、关键字冲突等,当前使用的主要清洗方法为人工手动清洗。与程序相比,人工手动清洗的方法更能够识别数据中隐藏的结构冲突。尽管人工手动清洗方法的准确性很高,但面对内容过多的数据集,人工手动清洗的方法既费时又费力,效率也不高。
  为解决结构冲突中的依赖冲突,目前采用的主要方法是函数依赖方法。此方法用于查找发现违反了函数依赖关系的数据从而进行清洗,但这种方法只能在满足依赖关系的场合下使用,具有局限性。
  5.1.2面向噪声数据的清洗方法
  噪声数据的处理方法有分箱方法、人机组合方法、简单规则库方法等。
  分箱方法是指通过检查周围的值来提高存储的数据的拟合度。它属于局部平滑方法,可以离散化数据并增加粒度,适用于数字型数据。
  人机组合方法是指先参照计算机检测到的可疑数据,再由相关人员根据专业知识对数据进行修改。此方法大大提高了数据清洗的效率,但不适用于大数据集。
  简单规则库方法则是指通过建立某些规则以达到数据约束的目的。清洗时,检查数据是否符合相应的规则,如果不符合则进行修正。此方法适用于规则性强的数据,并根据数据的规则来建立简易规则库,具有一定的局限性。
  5.2实例层的清洗方法
  数据本身的错误是导致实例层数据不干净的主要原因。实例层数据清洗的核心在于检测。检测的主要内容包括属性值的检测、重复数据检测以及离群点检测。
  5.2.1面向属性值检测的方法
  属性值的检测主要是属性错误值和空值。用于检测属性错误值的方法包括统计方法、聚类方法等[7]。用于空值检测的方法主要是人工法、代表性函数值填充法等。
  5.2.2面向重复数据检测的方法
  重复数据的检测方法有很多,根据检测内容进行分类,可以分为基于字段的检测和基于记录的检测。
  基于字段的检测算法有Levenshtein Distance算法、余弦相似度函数算法[8]等。Levenshtein DistanCe算法易于实现。余弦相似度算法更多地用于检测文本的相似度。通过该算法获得的相似性度量的值越小,说明个体间越相似。
  基于记录的检测算法有N-Crams算法、聚类算法、SNM算法、MPN算法等[9]。N-Crams算法生成一个哈希表,然后根据哈希表来判断记录之间的相似性;聚类算法通过计算将相似的数据归为一类;SNM算法实现较为容易,但在很大程度上取决于关键字,依赖性较强;MPN算法的优点是它可以更为全面地收集重复的数据,但使用起来较为烦琐。
  5.2.3面向离群点检测的方法
  离群点检测是用于检测与其他数据点明显不同的对象,这样的对象也被称为离群值。离群点检测算法主要包括基于统计模型的算法、基于接近度的算法、基于密度的算法以及基于聚类的算法等。基于统计模型算法的检测步骤为:首先建立数据模型,然后根据模型进行分析,最终得到离群点。基于接近度的算法主要定义对象之间的接近度。基于密度的算法核心是检测物体的局部密度,當它的局部密度低于大多数邻域内对象时,则被判断为离群点。基于聚类算法用于查找局部强烈关联的对象组,而孤立点是与其他对象没有强烈关联的对象。检测完成之后,根据数据检测结果对错误数据进行校正,以达到清洗的目的。
  6数据清洗国内外研究现状
  6.1国外研究现状
  数据清洗的研究最早出现在美国,从对全美社会保险号错误的纠正开始[10]。数据清洗的早期研究主要集中在英文信息数据上。研究的内容主要涉及:1)异常数据的检测与消除;2)近似重复数据的检测与消除;3)数据整合;4)特定领域的数据清洗。为了满足信息产业和商业业务发展的需求,国外市场已经在相关的领域开发了清洗软件。
  6.2国内研究现状
  由于中英文语法的差异,国外有关数据清洗的研究并不完全适用于中文数据清洗。国内有关数据清洗的研究起步较晚,并将长期处于起步发展阶段。同时,国内对数据清洗的研究主要是对外文清洗方法的改进,结合中文语法的特点,将其运用于中文数据清洗中。研究的内容主要在数据仓库、决策支持、数据挖掘等方面[11]。
  国内对于数据清洗的研究团队主要有:
  1)处理数据重复问题:复旦大学的周傲英教授团队[12]、沈阳航空工业学院的夏秀峰教授[13]、李蜀瑜博士[14]、东南大学的董逸生教授的团队[15];
  2)处理数据集成问题:北京大学的杨冬青教授的团队[16]、武汉理工大学的袁景凌副教授[17]、东南大学的董逸生教授团队、复旦大学的周傲英教授团队;   3)处理特定领域问题:中科院的刘清[18]、山东理工大学的王晓原教授[19]、西安理工大学张璟教授[20]、沈阳航空航天大学的夏秀峰教授团队。
  7中文数据清洗展望
  国内对于数据清洗的理论研究尚未成熟,因此鲜有中文数据清洗软件在市场流行。但在大数据盛行的时代,中文数据清洗的研究仍有广阔的发展前景,针对不同领域的数据清洗仍将是研究重点。
  参考文献:
  [1] Fan Wenfei.Extending dependencies with conditions for datacleaning[C]//8th IEEE International Conference on Computerand Information Technology,2008: 185-190.
  [2] Aebi Daniel. Perrochon Louis. Towards Improving Data Quality[M].1993:278-281.
  [3] RAHM E,DO H H.Data cleaning:problems and current ap-proaches[J]. 2000,23(4):3-13.
  [4]王曰芬,章成志,张蓓蓓,等.数据清洗研究综述[J].现代图书情报技术,2007(12):50-56.
  [5]赵月琴,范通让.科技创新大数据清洗框架研究[J].河北省科学院学报,2018,35(2):35-42.
  [6]叶鸥,张璟,李军怀.中文数据清洗研究综述[J].计算机工程与应用2012,48(14):121-129.
  [7] Maletic J I,Marcus A.Data cleansing: beyond integrity analysis[J].Division of Computer Science,2000.
  [8] Salon G,Mcgill M J.lntroduction to modern information retriev-al[M].New York: McGraw-Hill Book Co,1983.
  [9]蒋园,韩旭,马丹璇,等.相似重复数据检测的数据清洗算法优化[J/OL].计算机技术与发展,2019(10):1-9.
  [10] Calhardas H,Florescu D.An Extensible Framework for Da-ta Clean-ing[C]. In: Proceedings of the 16 th IEEE International Conf erence on Dat a Engineering. San Di ego, Califor-nia.2000:312-312.
  [11]王曰芬,章成志,张蓓蓓,吴婷婷.数据清洗研究综述[J].现代图书情报技术,2007(12):50-56.
  [12]邱越峰,田增平,李文,等.一种高效的检测相似重复记录的方法[J].计算机学报,2001,24(1):69-77.
  [13]刘哲,夏秀峰,宋晓燕,等.一种中文地址类相似重复信息的检测方法[J].小型微型计算机系统,2008,29(4):726-729.
  [14]石彦华,李蜀瑜.聚类反馈学习的数据清洗研究[J].计算机工程与应用,2011,47(30):127-131.
  [15]韩京宇,徐立臻,董逸生.一種大数据量的相似记录检测方法[J].计算机研究与发展,2005,42(12): 2206-2212.
  [16]方幼林,杨冬青,唐世渭,等.数据转换过程的串行化方法[J].计算机工程与应用,2003,39(17):4-6,187.
  [17]袁景凌,徐丽丽,苗连超.基于XML的虚拟法异构数据集成方法研究[J].计算机应用研究,2009,26(1):172-174.
  [18]张晋辉,刘清.基于推理机的SCI地址字段数据清洗方法设计[J].情报科学,2010,28(5):741-746.
  [19]王晓原,张敬磊,吴芳.交通流数据清洗规则研究[J].计算机工程,2011,37(20):191-193.
  [20]刘嘉,张璟,李军怀.一种基于Token匹配的中文数据清洗方法[J].计算机应用与软件,2009,26(11):4345,53.
  【通联编辑:梁书】
  收稿日期:2020-03-23
  基金项目:文章由“华中师范大学大学生创新创业训练计划项目资助”(项目编号为20190410005)
  作者简介:廖书妍(1999-),女,福建长汀县人,华中师范大学计算机学院本科生,主要研究方向为软件工程。
转载注明来源:https://www.xzbu.com/8/view-15299924.htm