1.1 数据清洗概述
1 数据清洗的定义
1.1.1 数据清洗的定义
1.数据清洗介绍
数据的不断剧增是大数据时代的显著特征,大数据必须经过清洗、分析、建模、可视化才能体现其潜在的价值。由于在众多数据中总是存在着许多脏数据,即不完整、不规范、不准确的数据,因此数据清洗(Data Cleansing/Data Cleaning/Data Scrubbing)就是指彻底清除脏数据,包括检查数据一致性,处理无效值和缺失值等,从而提高数据质量。例如,在大数据项目的实际开发工作中,数据清洗通常占开发过程总时间的50%~70%。
数据清洗可以有多种表述方式,其定义依赖于具体的应用。因此,数据清洗的定义在不同的应用领域不完全相同。例如,在数据仓库环境下,数据清洗是抽取-转换-加载过程的一个重要部分,要考虑数据仓库的集成性与面向主题的需要(包括数据的清洗及结构转换)。不过,现在业界一般认为,数据清洗的含义是检测和去除数据集中的噪声数据和无关数据,处理遗漏数据,以及去除空白数据域和知识背景下的白噪声。图1-1所示为数据清洗在大数据分析应用中的环节。
图1-1 数据清洗在大数据分析应用中的环节
2.数据清洗的主要应用领域
目前,数据清洗主要应用于三个领域:数据仓库、数据挖掘和数据质量管理。
(1)数据清洗在数据仓库中的应用
在数据仓库领域,数据清洗一般是应用在几个数据库合并时或多个数据源进行集成时。例如,指代同一个实体的记录,在合并后的数据库中就会出现重复的记录。数据清洗就是要把这些重复的记录识别出来并消除它们,也就是所说的合并清洗(Merge/Purge)问题。不过值得注意的是,数据清洗在数据仓库中的应用并不是简单地合并清洗记录,它还涉及数据的分解与重组。
(2)数据清洗在数据挖掘中的应用
在数据挖掘领域,经常会遇到的情况是挖掘出来的特征数据存在各种异常情况,如数据缺失、数据值异常等。对于这些情况,如果不加以处理,就会直接影响到最终挖掘模型的使用效果,甚至使得创建模型任务失败。因此在数据挖掘(早期又称为数据库的知识发现)过程中,数据清洗是第一步,即对数据进行预处理。不过值得注意的是,各种不同的知识发现和数据仓库系统都是针对特定的应用领域进行数据清洗的,因此采用的方法和手段各不相同。
(3)数据清洗在数据质量管理中的应用
数据质量管理贯穿数据生命周期的全过程。在数据生命周期中,数据的获取和使用周期包括系列活动,如评估、分析、调整、丢弃数据等。因此数据质量管理覆盖质量评估、数据去噪、数据监控、数据探查、数据清洗、数据诊断等方面。在此过程中,数据清洗为衡量数据质量的好坏提供了重要的保障。表1-1给出了数据质量评价的12个维度。
表1-1 数据质量评价的维度
1.1.2 数据清洗的对象
2 数据清洗的对象
数据清洗的对象可以按照数据清洗对象的来源领域与产生领域进行分类。前者属于宏观层面的划分,后者属于微观层面的划分。
1.数据来源领域
目前在数字化应用较多的领域都涉及数据清洗,如数字化文献服务、搜索引擎、金融、政府事务等,数据清洗的目的是为信息系统提供准确而有效的数据。
数字化文献服务领域在进行数字化文献资源加工时,一些识别软件有时会造成字符识别错误,或由于标引人员的疏忽而导致标引词错误等。数据清洗时需要消除这些错误。
搜索引擎为用户在互联网上查找具体的网页提供了方便,它是通过为某一网页的内容进行索引而实现的。而一个网页上到底哪些部分需要索引,则是数据清洗需要关注的问题。例如,网页中的广告部分,通常是不需要索引的。按照网络数据清洗的粒度不同,可以将网络数据清洗分为两类,即Web页面级别的数据清洗和基于页面内部元素级别的数据清洗。前者以Google公司提出的PageRank算法和IBM公司Clever系统的HITS算法为代表;而后者的思路则集中体现在作为MSN搜索引擎核心技术之一的VIPS算法上。
在金融系统中,也存在很多脏数据,主要表现为:数据格式错误,数据不一致,数据重复、错误,业务逻辑的不合理,违反业务规则等。例如,未经验证的身份证号码、未经验证的日期字段等,还有账户开户日期晚于用户销户日期、交易处理的操作员号不存在、性别超过取值范围等。此外,也有源系统出于性能的考虑而放弃了外键约束,从而导致数据不一致的情况。这些数据也都需要进行清洗。
在政府机构中,如何进行数据治理也是一个亟须解决的问题,特别是在电子政务建设和信息安全保障建设中。通过实施数据清洗,可以为政府数据归集及开发利用以及政府数据资源共享与开放提供强大的支撑。
2.数据产生领域
在微观方面,数据清洗的对象分为模式层数据清洗与实例层数据清洗。其中,模式层是指存储数据的数据库结构,而实例层是指在数据库中具体存储的数据记录。本书主要讲述实例层的数据清洗。
实例层数据清洗的主要任务是过滤或者修改那些不符合要求的数据,主要包含不完整的数据、错误的数据和重复的数据三大类。
(1)不完整的数据
不完整的数据是指在该数据中的一些应该有的信息缺失,如在数据表中缺失了员工姓名、机构名称、分公司的名称、区域信息、邮编地址等。对于这一类数据的清洗,应当首先将数据过滤出来,按缺失的内容分别写入不同数据库文件并要求客户或厂商重新提交新数据,要求在规定的时间内补全,补全后再写入到数据仓库中。
(2)错误的数据
错误的数据是指在数据库中出现了错误的数据值,错误值包括输入错误和错误数据。输入错误是由原始数据录入人员疏忽而造成的,而错误数据大多是由一些客观原因引起的,例如人员填写的所属单位不同和人员的升迁等。该类数据产生的原因大多是在接收输入后没有进行判断而直接写入后台数据库造成的,比如数值数据输成全角数字字符、字符串数据后有一个回车符、日期格式不正确、日期越界等。
此外,在错误的数据中还包含了异常数据。异常数据是指所有记录中除了一个或几个字段外的绝大部分遵循某种模式,其他不遵循该模式的记录,如年龄字段超过历史最高年龄、考试成绩字段为负数、人的身高为负数等。
(3)重复的数据
重复的数据也叫作“相似重复记录”,指同一个现实实体在数据集合中用多条不完全相同的记录来表示,由于它们在格式、拼写上的差异,导致数据库管理系统不能正确识别。从狭义的角度看,如果两条记录在某些字段的值相等或足够相似,则认为这两条记录互为相似重复。识别相似重复记录是数据清洗活动的核心。图1-2所示为在Excel中清除重复数据。
图1-2 在Excel中清除重复数据
1.1.3 数据清洗的原理
3 数据清洗的原理
数据清洗的原理为:利用有关技术,如统计方法、数据挖掘方法、模式规则方法等将脏数据转换为满足数据质量要求的数据。数据清洗按照实现方式与范围,可分为手工清洗和自动清洗。
(1)手工清洗
手工清洗是通过人工对录入的数据进行检查。这种方法较为简单,只要投入足够的人力、物力与财力,就能发现所有错误,但效率低下。在大数据量的情况下,手工清洗数据几乎是不可能的。
(2)自动清洗
自动清洗是由计算机进行相应的数据清洗。这种方法能解决某个特定的问题,但不够灵活,特别是在清洗过程需要反复进行(一般来说,数据清洗一遍就达到要求的很少)时,程序复杂,清洗过程变化时工作量大,而且这种方法也没有充分利用目前数据库提供的强大数据处理能力。
此外,随着数据挖掘技术的不断提升,常常使用清洗算法与清洗规则实现自动清洗。清洗算法与清洗规则是根据相关的业务知识,应用相应的技术(如统计学)、数据挖掘的方法,分析出数据源中数据的特点,并且进行相应的数据清洗。常见的清洗方式主要有两种:一种是发掘数据中存在的模式,然后利用这些模式清理数据;另一种是基于数据的清洗模式,即根据预定义的清理规则,查找不匹配的记录,并清洗这些记录。值得注意的是,数据清洗规则已经在工业界被广泛利用,常见的数据清洗规则包含编辑规则、修复规则、Sherlock规则和探测规则等。
例如,编辑规则在关系表和主数据之间建立匹配关系,若关系表中的属性值和与其匹配到的主数据中的属性值不相等,就可以判断关系表中的数据存在错误。
图1-3所示为数据清洗的原理。
图1-3 数据清洗的原理
1.1.4 数据清洗的评估
数据清洗的评估实质上是对清洗后的数据的质量进行评估,而数据质量的评估过程是一种通过测量和改善数据综合特征来优化数据价值的过程。数据质量评价指标和方法研究的难点在于数据质量的含义、内容、分类、分级、质量的评价指标等。
在进行数据质量评估时,要根据具体的数据质量评估需求对数据质量评估指标进行相应的取舍。但是,数据质量评估至少应该包含以下两方面的基本评估指标。
(1)数据对用户必须是可信的
数据可信性主要包括精确性、完整性、一致性、有效性和唯一性等指标。
● 精确性:描述数据是否与其对应的客观实体的特征一致。
● 完整性:描述数据是否存在缺失记录或缺失字段。
● 一致性:描述同一实体的同一属性的值在不同的系统是否一致。
● 有效性:描述数据是否满足用户定义的条件或在一定的域值范围内。
● 唯一性:描述数据是否存在重复记录。
(2)数据对用户必须是可用的
数据可用性主要包括时间性和稳定性等指标。
● 时间性:描述数据是当前数据还是历史数据。
● 稳定性:描述数据是否稳定,是否在其有效期内。
1.1.5 数据清洗的框架模型
目前已经研究出很多数据清洗的框架模型,下面介绍3个有代表性的框架模型。
(1)Trillium模型
Trillium是由Harte Hanks公司的Trillium软件系统部门创建的企业范围的数据清洗软件。Trillium将数据清洗的过程分成5个步骤,分别由5个模块来完成。
① Converson Workbench提供了一整套数据审计、分析和重组工具。
② Parser对分析型数据和操作型系统的数据作解析、验证和标准化。
③ Matcher提供一套标准规则用于记录连接和匹配,使得用户可以方便地调整和定制以满足其特殊的业务要求。
④ Geocoder验证、纠正和增强物理数据。
⑤ Utilities提供联机数据浏览、域级频率统计、词的计数和分布等功能。
另外,合并、选择和格式重组工具提供数据重组能力。
(2)Bohn模型
Bohn模型将数据清洗分为以下4个主要部分。
① 数据检查:确认数据质量、内部模式和主要字段(使用不同的字段)。
② 数据词法分析:确定每个字段内的各个元素的上下文的真正含义。
③ 数据校正:将数据与已知清单(通常为地址)匹配并保证所有的字段被标明为好、坏或可自动校正。但是,这并不表示在软件设计的时候需要有许多值的判断。只要有可能,技术人员就应该与客户一起校正源数据。
④ 记录匹配:决定两个记录(可能是不同类型的)是否代表同一个对象。该过程涉及许多值判断和复杂的软件工具。
(3)AJAX模型
AJAX模型由Helena Galhardas提出,该模型是逻辑层面的模型,将数据清洗过程分为5个操作步骤。
① 源数据的映射(Mapping)。
② 对映射后的记录进行匹配(Matching)。
③ 对记录进行聚集(Clustering)。
④ 对聚集进行合并(Merging)。
⑤ 对合并后的数据进行视图显示(Viewing)。
1.1.6 数据清洗研究与应用展望
(1)中文数据清理工具的研究和开发
目前,数据清理的工具开发主要集中在西文上,中文数据清理与西文数据清理有较大的不同(如很多西文匹配算法并不适用于中文),中文数据清理还没有引起重视。
(2)标准测试集的获取
数据清洗领域缺少大规模的标准测试集,因此无法统一衡量数据清洗算法的优劣。目前的实验测评多是依赖噪声生成工具或由测评人员人工标注脏数据中的错误。噪声生成工具无法完全模拟真实世界中的数据错误,而通过人工标注方式生成的脏数据往往数据量小,无法全面衡量清洗算法的效率,因此如何获取标准测试集是当前亟待解决的问题。
(3)众包技术在数据清洗上的应用
众包技术可以集中众多用户的知识和决策,提高数据清洗的效率,在数据清洗方面有着不可替代的优势。目前已有工作利用众包系统进行数据去重、清洗多版本数据。除上述应用外,当数据清洗所依赖的主数据和知识库存在缺失或错误时,也可以利用众包用户补全、纠正信息,以及清洗关系表。当需要从脏数据中学习出数据清洗规则时,可以利用众包用户标注数据、检测规则的有效性和适用性。让众包用户替代传统清洗算法中的领域专家,需要设计有效的数据分组策略和答案整合策略。但是,由于众包用户的专业程度有限,基于众包的数据清洗算法必须有一定的检错容错机制。
(4)深度学习技术在数据清洗上的应用
深度学习是当下的热门技术,已经在许多领域展现了其不可替代的优势,例如计算机视觉、自然语言处理等。深度学习技术在这些领域的成功促使许多学者探索如何将其应用于计算机其他领域,其中也包括结构化数据清洗。目前,机器学习技术在数据清洗上的应用多是通过数理统计推测真值或者训练分类树以决定某项数据更新是否执行。若要利用深度学习技术完成更加复杂的数据清洗任务,就必须像计算机视觉中的卷积神经网络(CNN)和自然语言处理中的递归神经网络(RNN)一样设计新的适用于数据清洗的深度学习模型。同时,还要解决数据表示的问题,即如何把某一个元组、某一列甚至某一个关系表转换成向量表示。
(5)非结构化数据的清洗
以前数据清理主要集中在结构化的数据上,而现在非结构化数据或半结构化的数据(如XML数据)也受到越来越多的重视。特别是由于XML自身所具有的特点(通用性、自描述性),在数据清理中应受到重视。
(6)数据清洗工具之间的互操作性
尽管根据用户友好性,很多工具或系统都提供了描述性语言,但基本上都是在某种已有语言(如SQL、XML)基础上根据自己的需要扩展实现的,不能很好地满足数据清理中大致匹配的需要,也不具有互操作性。
(7)数据清理方案的通用性
目前,在特定领域中的数据清理问题依然是研究和应用重点,但较通用的清洗方案会受到越来越多的关注。若通过迁移学习技术,使获得的清洗规则和策略应用到其他领域的数据集上,那么将大大减少数据清洗的开销。因此,跨领域的数据清洗是日后很有研究价值的一个方向。
(8)私密数据的清洗
许多数据中包含个人的隐私信息,例如金融数据和医学数据,而数据清洗本身是一项需要检查和还原原始数据的任务。当原始数据无法直接访问,而只能得到加密或者转换后的数据时,一项重要的工作就是从这些数据中检测出错误信息,并进行数据纠正。修复后的数据经过解密或者转换后,就是表达真实用户信息的干净数据。
1.1.7 数据清洗的行业发展
在大数据时代,数据正在成为一种生产资料,成为一种稀有资产。大数据产业已经被提升到国家战略的高度,随着创新驱动发展战略的实施,逐步带动产业链上下游,形成万众创新的大数据产业生态环境。数据清洗属于大数据产业链中关键的一环,可以从文本、语音、视频和地理信息等多个领域对数据清洗产业进行细分。
1)文本清洗领域。该领域主要基于自然语言处理技术,通过分词、语料标注、字典构建等技术,从结构化和非结构化数据中提取有效信息,提高数据加工的效率。除去国内传统的搜索引擎公司,例如百度、搜狗、360等,该领域代表公司有拓尔思、中科点击、任子行、海量等。
2)语音数据加工领域。该领域主要是基于语音信号的特征提取,利用隐马尔可夫模型等算法进行模式匹配,对音频进行加工处理。该领域国内的代表公司有科大讯飞、中科信利、云知声、捷通华声等。
3)视频图像处理领域。该领域主要是基于图像获取、边缘识别、图像分割、特征提取等环节,实现人脸识别、车牌标注、医学分析等实际应用。该领域国内的代表公司有Face++、五谷图像、亮风台等。
4)地理信息处理领域。该领域主要是基于栅格图像和矢量图像,对地理信息数据进行加工,实现可视化展现、区域识别、地点标注等应用。该领域国内的代表公司有高德、四维图新、天下图等。
此外,为了切实保证数据清洗过程中的数据安全。2015年6月,中央网络安全和信息化领导小组办公室(简称中央网信办)在《关于加强党政部门云计算服务网络安全管理的意见》中,对云计算的数据归属、管理标准和跨境数据流动给出了明确的权责定义。数据清洗加工的相关企业应该着重在数据访问、脱密、传输、处理和销毁等过程中加强对数据资源的安全保护,确保数据所有者的责任,以及数据在处理前后的完整性、机密性和可用性,防止数据被第三方攫取并通过“暗网”等渠道进行数据跨境交易。