数据清洗概念,方法及流程等等要点初探

3b63d5c66c8684dfa37aa798fb0a28f9.png

数据清洗(Data Cleaning)是把数据记录中的错误数据辨认识别出来,然后将其去除,是对数据重新进行检查和校验的过程。数据清洗的目标是去除重复记录,消除异常数据,修正错误数据,确保数据一致性,并提高数据质量。数据仓库是关于特定主题的数据集合,数据来自不同类型的业务系统,并包含历史性数据,这样,在数据仓库中就会出现错误数据或者冲突数据的情况,将这类数据称为“脏数据”。根据确切的清洗规则和算法“洗掉”“脏数据”,这就是数据清洗。 

近年来,数据库钻研团队对数据清洗非常关注,并且常常将数据清洗与数据仓库、数据挖掘以及数据关联关系联系在一起。钻研团队整合视图的研究目标是调和概念层面的差异,对整合框架、调解制度、原则冲突等综合性学习进行研究。对于数据清洗过程的下一步,分层和数据差异的例子几乎没有被注意。研究数据清洗和视图集成工作相辅相成,并实现了全局性的调和架构。但是,实例级别的数据调整面临着挑战,当需要将来自多个数据源的数据进行整合时,比如,在网络信息系统或数据仓库中,数据清洗的意义变得尤为重要,因为不同类型的数据源通常以不同的形式出现。剖析“脏数据”出现的原因以及其存在的形式就是数据清洗的原理,使用相关的清洗软件或工具清洗数据,把“脏数据”变为“干净数据”,提高数据质量。从“脏数据”产生的源头对数据进行剖析,对数据集进行全盘考察,进而提取数据清洗规则,最终,利用所提取的清洗规则发现数据集中的“脏数据”,然后对该类数据进行清洗。 

8f8f025ce81e25738ed32fe7b936acd9.jpeg

数据清洗方式主要分为手动清洗,全机清洗,人机同步清洗和人机异步清洗四种类型。 

(1)手动清洗:对较大的数据集来说,因为人工的限制,对数据清洗的准确性和速率会有所下降,所以,在公司业务体系中较小的数据集上通常会使用这种清洗方式。优点是准确率相对较高,缺点是执行速度较慢。 

(2)全机清洗:依据具体清洗方案,编写清洗程序,自动清洗数据。优点是清洗自动化,把人解脱出来,缺点是实现过程复杂,后期维护困难。 

(3)人机同步清洗:对于某些特殊的清洗,只能通过数据清洗程序才能实现,设计人机交互的界面,采取人工和机器辅助的方式,当清洗程序无法处理数据时,将通过人工干预等方式进行处理。优点是降低编写程序复杂度,减少大量人工操作,缺点是需人工实时参与。 

(4)人机异步清洗:在对数据进行清洗的过程中,当遇到程序不能处理的问题时,不需人工直接参与,只需将异常情况记录下来生成相应的报告,然后继续进行清洗工作,人工则只需按照报告在后期进行相应的处理便可。优点是节约人力,提高清洗效果,是一种可行的清洗方式。 

c9d34116552b4fb80a16b2bbfc98ab16.jpeg

一般情况下,需要进行清洗的数据包括下列几种数据类型。 

(1)缺损数据 

缺损数据是指数据的一些信息缺失损坏,比如,业务体系中的主表与明细表不匹配、分公司的名称信息缺失损坏等,这些数据将从数据集中过滤出来,按照缺失内容的差异性将其分别写到不同类型的文档中,而后提交给客户,要求其在指定的时间内,根据所提出来的数据清洗框架、清洗规则和清洗算法进行补全,然后将其写入数据仓库。 

缺 失 数 据 清 洗 ( missing values imputation) 。完善缺失数据是数据清洗领域面临的另一个重要问题。如图 2 所示,在现实世界中,由于手动输入的失误操作、部分信息需要保密或者数据来源不可靠等各种各样的原因,使得数据集中的内容残缺不完整。比如某条记录的属性值被标记为 NULL \、空缺或“未知”等。一旦不完整、不准确的数据用于挖掘,则会影响抽取模式的正确性和导出规则的准确性。当错误的数据挖掘模型应用于前端的决策系统时,就会导致分析结果和执行决策出现严重偏差。

094df02a6cfb2bb0609c46cc74241ecd.png

当前有很多方法用于缺失值清洗,可以分为两类:

( a) 忽略不完整数据。直接通过删除属性或实例,忽略不完整的数据。在数据集规模不大、不完整数据较少的情况下,常常利用该方法来实现数据清洗。

该方法因为执行效率高,因此经常作为缺省方法,但缺点也相当明显。如果不完整数据集较大,一旦删除了若干记录之后,因为剩余的数据集规模较小,使得模型的构建不具备普适性和代表性,无法让人信赖,可靠度大大降低。另外,因为删除不完整数据带来的数据集偏差也使得数据挖掘的分类、聚类模型产生严重倾斜,进而影响最终的挖掘结果,产生重大决策性误导。

( b) 基于填充技术的缺失值插补算法。上一种忽略法很有可能将潜在的有价值信息也一并删除。因此更多的时候选择填充不完整的数据。为了填充缺失值,用最接近缺失值的值来替代它,保证可挖掘数据的数量和质量。填充方法保留了潜在的有用数据,和删除属性或记录相比,保留了更多数据样本,不易于产生数据分析偏差,由此构建的模型更可靠,更有说服力。目前常用的缺失值填充算法大体分为两大类,一类是统计学方法,另一类是分类、聚类方法。

采用统计学方法填充缺失值。分析数据集,获取数据集的统计信息,利用数值信息填充缺失值。其中最简单的方法是平均值填充方法。它把所有完整数据的算术平均值作为缺失数据的值。这种方法的弊端在于有可能会影响缺失数据与其他数据之间原本的相关性。如果规模较大的数据集的缺失值全部采用平均值填充法进行填充,因为过多的中值存在,更多的尖峰态频率分布有可能会误导挖掘结果。

采用分类、聚类方法填充缺失值。分类是在已有类标号的基础上,通过输入训练样本数据集,构造出分类器( 如分类函数或者分类模型) 。常用的数据分类技术包括决策树、神经网络、贝叶斯网络、粗糙集理论、最临近分类法等。利用完整记录与缺失记录之间的记录相似度,通过最大相似度的计算,结合机器学习的相关技术,建立最大可能的完整的数据模型。聚类是在不考虑类标号的前提下,寻求类间的相似性,目的也是在海量的数据聚集的基础上,构建较小的代表性的数据集,并基于该集合进一步分析和研究。常见的缺失值填充算法包括 EM 最大期望值算法( expectation-maximization algorithm ) 、MI 算 法 ( multiple imputation) 和 KNNI 算法( k-nearest neighbor imputation) 等。其中最大期望算法通过创建概率模型,寻找参数最大似然估计值或者最大后验估计值,概率模型的成功与否依赖于无法观测的隐藏变量( latent variable)。

(2)错误数据 

错误数据出现的原因主要是不够完善的业务体系,没有判别所接收到的输入数据是否与业务准则相符,直接将其写入到后台数据库中。先对错误数据进行分类,而后经过 SQL 语句寻找出来,根据客户请求在业务体系中修改,最终再对其进行抽取。数据类型不一致或日期格式不正确等问题同样会导致数据清洗失败,对于此类型的错误问题,需要在业务系统的数据库中通过 SQL 语句将其找出,交给业务部门进行修改,然后再对其进行抽取。 

噪声数据处理( noise treatment) 。数据挖掘前,往往假设数据集不存在任何数据干扰。然而,实际应用中却因为各种原因,在数据收集、整理的过程中,产生大量的噪声数据,即“离群点”。因为噪声数据不在合理的数据域内,所以分析、挖掘过程中输入和输出数据的质量难以保证,容易造成后续的挖掘结果不准确、不可靠,如图 3 所示。常用的消除噪声数据的方法分为两种。

9d70e404a8e641cd900375c12e687560.png

一种叫噪声平滑方法( data polishing ) ,常用的方法是分箱法。将预处理数据分布到不同的箱中,通过参考周围实例平滑噪声数据,包括等宽分箱和等深分箱两大类。具体的分箱技术包括: 按箱平均值平滑,即求取箱中的所有值的平均值,然后使用均值替代箱中所有数据; 按中位数平滑,和上一种方法类似,采用中位数进行平滑; 按设定的箱边界平滑,定义箱边界是箱中的最大和最小值。用最近的箱边界值替换每一个值。另一种是噪声过滤( data filters) ,利用聚类方法对离群点进行分析、过滤。在训练集中明确并去除噪声实例。噪声过滤的常用算法包括 IPF 算法( iterative partitioning filter) 、EF 算法( ensemble filter)。

(3)重复数据 

将重复数据定义为除去 ID 和时间因子,其它字段的数据均相同的数据记录。在维表中经常会呈现这类数据,需要将重复的数据信息导出并记录在报告中,用户需要根据报告进行确认和整理。 

数据清洗不会在短期内实现,需要不断地重复进行,在这个过程当中,只有发现问题并不断地解决问题,才可以确保数据清洗的顺利进行。是否应该对数据进行过滤或修改,一般要求客户对其进行确认,然后依据客户的要求对数据进行清洗操作。值得一提的是,需要反复验证每个过滤规则,以防止过滤掉有用的数据。 

为了提高数据挖掘的速度和精度,有必要去除数据集合中的重复记录。如果有两个及以上的实例表示的是同一实体,那么即为重复记录。为了发现重复实例,通常的做法是将每一个实例都与其他实例进行对比,找出与之相同的实例。对于实例中的数值型属性,可以采用统计学的方法来检测,根据不同的数值型属性的均值和标准方差值,设置不同属性的置信区间来识别异常属性对应的记录,识别出数据集合中的重复记录,并加以消除。相似度计算是重复数据清洗过程中的常用方法,通过计算记录的各属性的相似度,再考虑每个属性的不同权重值,加权平均后得到记录的相似度。如果两条记录相似度超过了某一阈值,则认为两条记录是匹配的,否则,认为这两条记录指向不同实体。

另一种相似度计算算法基于基本近邻排序算法。核心思想是为了减少记录的比较次数,在按关键字排序后的数据集上移动一个大小固定的窗口,通过检测窗口内的记录来判定它们是否相似,从而确定重复记录。

5934f87791caa905323ed7587bfcff1e.jpeg

通常情况下,数据清洗的流程包括下列五个步骤。 

(1)数据分析:数据分析是数据清洗的条件和基础。经过分析,可以检测到数据集中的错误或不一致。除手动对数据分析,也可利用程序算法获得数据属性元数据,目的是发现数据集中的数据质量问题。 

(2)定义数据清洗转换规则:依据所分析的数据结果,定义数据清洗转换规则。根据数据源的数量和数据源中“脏数据”的数量,执行大量的数据清洗和转换操作。 

(3)验证:验证数据清洗转换规则的正确性,并对其效率进行评估。从数据源中提取数据样本,在所提取的数据样本中执行数据清洗转换规则,目的是对其进行验证。当情况不符合清洗的要求时,要改进清洗转换规则或调整系统参数。在清洗数据的过程当中,往往要重复迭代分析和验证数据的质量,直到获得相对理想的数据清洗转换规则和工作流,并且其质量对数据清洗的效率和质量起决定作用。 

(4)清洗数据的错误:在数据源上执行经由验证的清洗转换规则和工作流。假如直接在数据源上清洗数据,则必须备份数据源中的数据,以防止清洗数据的过程当中出现错误,从而将清洗操作进行撤销。 

(5)干净数据回流:数据清洗结束后,用干净的数据替换原始数据中的“脏数据”,以提高数据源的数据质量,避免再次清洗时进行重复的工作任务。

e0b6d7d9dad66c9c9ce80ca38bcb830d.png

数据源:数据源是所有系统数据的根源,也是数据仓库数据的主要来源。一般情况下,包含企业的内部信息和外部信息,内部信息是指关系数据库管理系统(RDBMS)的文档信息和事务处理信息;外部信息是指市场信息、法律法规以及竞争对手的信息等。 

数据存储与管理:数据仓库的中心焦点就是数据存储与管理,与其它传统数据库的差别在于组织管理方式,也决定了数据仓库的表现形式,将各业务系统的数据进行抽取、清洗、集成,依照主题进行组织构造。按照数据的覆盖范围,可以将数据仓库分为企业级数据仓库以及部门级数据仓库。 

OLAP 服务器:在线联机分析处理(OLAP)是一种可帮助分析师迅速交互地察看数据各个方面的软件技术,从而能更加深切地理解数据。依据多维模型,必要剖析的数据能够获得相应地整合以及组织,从而达到多角度、多层次趋势的分析和挖掘。 

前端工具:各类数据分析工具,数据挖掘工具,报表工具和查询工具都属于前端工具范畴。在数据仓库中利用数据挖掘工具,在 OLAP 服务器与报表工具中使用数据分析工具。 

当从多个数据源对数据进行提取的时候,由于数据源表结构布局设计的不同,从多个数据源中将数据迁移到数据仓库的过程当中,就会出现一些冗余数据或错误信息。假如不及时清洗这些数据,所生成的“脏数据”就会扭曲已经获得的数据信息,进而对已有的数据仓库系统造成恶劣的影响,所以,为了使数据仓库系统能够正常运行,数据仓库中的数据更准确,必须消除冗余数据错误信息。

18bc0ce08d42df2b25c7eeea34a50f86.jpeg

通常情况下,数据清洗就是简化数据库的过程,消除数据库中重复的数据。

记录,并将其余部分转换成标准的能够接受的格式。标准模型是把待清洗的数据输入到处理器,经由一系列数据清洗相干环节清洗数据,最后,输出研究人员要求的预期格式数据。数据清洗是从数据的准确性、完整性、一致性以及时效性等方面对缺损数据、异常数据、不一致数据和冗余数据等存在数据质量问题的数据进行处理。一般情况下,数据清洗应用于特定的应用程序,所以,很难概括出统一的方法,但对不同类型的数据来讲,能够为其给出相关的数据清洗方式。数据清洗的结果是相应地处理各种类型的“脏数据”,从而获得标准和高效的数据,并提供用于数据统计和数据挖掘。 

3f1661fb4039de4d5b46908e6309fc4e.jpeg

数据清洗算法一般包括下列内容。 

(1)空值的清洗 

对于空值的清洗,当数据量较小的时候,可以采用人工填写空值的方法;

假如数据量较大,使用全局变量或利用属性的平均值、中间值、最大值、最小值或更为繁杂的统计函数值来填充空值,从而达到空值的清洗。 

(2)噪声数据的清洗 

分箱(Binning)技术是用于清除噪声数据,该属性的值是通过观察属性值的相关值来平滑属性值。如果将属性值分散为等宽或等距的“箱”,则可以使用属性值的中间值或平均值;利用计算机和人为处理相结合的方法对有嫌疑数据进行检测,继而再对这些有嫌疑的数据进行人工判别;利用不同属性的约束、简略的规则或者外部数据源的错误检测与校正,从而实现对噪声数据的清洗。 

(3)不一致数据的清洗

某些交易记录的数据可能存在不一致,可以使用其他工具手动更正,也可以利用知识工具对违反约束的数据进行检测。另外,数据集成可能会产生不一致的数据,应针对具体问题进行具体分析,以实现对不一致数据的清洗。 

(4)重复数据的清洗 

现有的重复记录删除的基本思想是“排序后合并”。数据库中的数据记录最初按照提取的关键字排序数据记录,经过与相邻记录进行比较来检查是否有重复记录存在。通常用于删除重复记录的算法:优先队列算法,基本近邻排序算法和多趟近邻排序算法。 

c27efa3e042f22971423ec2ce81e08c6.jpeg

随着信息化的不断深入,企业几乎每天都会产生大批量的数据,累积的数据必定会对企业的发展产生巨大的影响。为了促使庞大的数据集可以更好地发挥作用,就必须对数据质量进行提高,研究行之有效的数据清洗策略。 

大数据分析不能唯结果论,避免因唯结果论而产生的问题, 数据清洗应有相应的方法论调整。首先要树立以人为本的价值理念。对企业来说, 在维护人的权利与维护企业利润方面,应首先维护人的权利。企业利用大数据,对数据进行清洗,当然是为了利润, 但利润的获取应建立在人对技术的利用基础上,换句话说,大数据利用的根本目的,不只是为了企业获取利润, 还在于提高社会效益。只有建立在人通过技术利用提高舒适感和建立在整个社会中的位置上, 大数据技术才是有意义的。

可以说, 企业行为时时刻刻面临着维护人的权利与追求企业利润之间的选择。对于维护人的权利,往往是隐性和长远的;而维护利润,则是显性和即时的。数据清洗以人为本,考验企业发展战略及方法选择。

一是数据分析时加进更多的相关因素。数据清洗建立在数据分析基础上,如何进行清洗,不同的目标考虑,清洗的方法和结果都不一样。

如果只是单一因素考虑, 容易将数据清洗导向单一结果, 往往这种结果经不起更多 因素加进来一起考虑, 也经不起长远考虑。数据清洗时,分析更多的相关因素,有利于数据利用的综合结果, 特别是将数据利用与人的权利保护相结合时更是如此。

单一因素考虑进行数据清洗,有利于节省成本, 提高数据利用效率。这是单一目标导向的结果。然而这种效率提高是不长远、不稳定的,随着技术发展越来越趋向满足人的需求,保障人的利益,数据清洗会变得越来越没有效率。

二是结果的社会效应分析。数据清洗如果只针对结果, 则是有利于结果的数据清洗都是必要的。而往往这种结果只是公 司的短期需要,或者公司特定的需要。从整个社会来看,这种结果是不适宜的,或者有违社会公共价值, 或者不利于社会长远发展。显然,只针对这种结果的数据清洗会带来诸多问题。要避免问题的产生, 对数据利用结果的社会效应分析必不可少。数据利用结果是数据利用的结束, 但却是社会效应的开始, 越是详尽的数据利用结果社会效应分析, 越有利于数据利用效率, 越有利于维护社会在数据利用过程中的公平正义。

4b4210b6ced88b864dea518f20b04d05.jpeg

来源:经聚汇

版权声明:本号内容部分来自互联网,转载请注明原文链接和作者,如有侵权或出处有误请和我们联系。


合作请加QQ:365242293  

数据分析(ID : ecshujufenxi )互联网科技与数据圈自己的微信,也是WeMedia自媒体联盟成员之一,WeMedia联盟覆盖5000万人群。

53151ae2633587daa86285128d4ccad4.jpeg