基于工业物料系统的数据清洗流程
2018-09-10李俊达吴昊毛秋宇张复生
李俊达 吴昊 毛秋宇 张复生
摘 要:数据质量问题会给数据分析和挖掘带来致命的影响,因此需要对存在质量问题的数据进行清洗。数据清洗的方法和策略与具体的数据质量问题有关,本文以工业物料系统中的数据为实验对象,提出了一套简易高效的数据清洗流程,将通用的数据清洗的方法和策略实现具体化并加以改进。实验结果表明,该流程具有良好的应用价值。
关键词:数据质量;数据清洗;工业物料系统
中图分类号:TP311.13 文献标识码:A 文章编号:2096-4706(2018)03-0022-03
The Process of the Data Cleaning Based on Industrial Material System
LI Junda1,WU Hao1,MAO Qiuyu1,ZHANG Fusheng2
(1.School of Computer Science and Technology,Jilin University,Changchun 130012,China;
2.Shanxi Youbai Information Technology Co.,Ltd.,Xian 710065,China)
Abstract:Data quality issues will result in lethal effects of the analysis and excavation of data,so it is needed to clean the data with the problem of data quality. Data cleaning techniques are related to specific data quality issues,this study takes the data of industrial material system as the experimental object,put forward a simple and efficient data cleaning process,externalizes and improves the methods and policies of general data cleaning. The experimental results show that the process has good application value.
Keywords:data quality;data cleaning;industrial material system
0 引 言
在早期建设的企业信息化系统中,企业不同部门一般拥有各自的数据库。由于没有严格的数据模式,即使是描述同一实体的数据对象在相同属性上的值也可能存在不同的表示形式。例如,对“电流互感器”这一实体,在其他数据库中可能表示为“电流互感组件”或者“电流互感器组件”。在统计物料数量时,如果把同一物料的不同描述当作是不同物料,会导致统计数量少于物料的实际数量。为了有效利用企业信息系统来支持决策,需要正确识别出数据库中描述同一实体的元组。另外,早期企业信息化系统中的数据录入多数采取人工的方式,会出现大量的异常数据。这里的异常数据即不一致、无效或数值缺失的数据,例如拼写错误、不合法值、空值、冲突、简写、重复等,也称为“脏数据”。
本文从某一国有企业的工业物料系统数据入手,来进行数据清洗。通过检测数据集合中存在的不符合规范的数据,并进行数据修复,将原数据库的数据提取、转换并存储到新的数据库中,以提高数据质量。
1 数据清洗技术
1.1 清洗技术介绍
数据清洗的目的是检测数据集合中存在的不符合规范的数据,并进行数据修复,提高数据质量[1]。数据清洗技术主要应用于数据仓库领域。在数据仓库领域中,数据清洗的主要任务是清洗错误和不一致的数据。另外,有时候还需要整合和分解数据。
1.2 數据清洗对象及方法
数据质量问题通常分为两种类型,一种类型为模式层存在的问题,而另外一种类型为实例层存在的问题[2]。
本文的研究对象是实例层脏数据。在实例层中,研究重点主要集中在数据本身的表现形式上,主要包括脏数据检测、重复数据检测和孤立点检测三个方面。
脏数据检测、重复数据检测是实例层数据清洗的两个核心问题[3]。属性值的脏数据检测主要针对属性错误值和空值两个方面[4]。属性错误值检测主要包括统计学算法和数据挖掘算法,如关联规则、聚类算法。重复数据检测涉及到实体识别技术,主要包括基于字段以及基于记录的重复检测。基于记录的重复检测算法主要包括排序邻居算法、优先队列算法[5]。排序邻居算法对关键字的依赖较强,关键字的选取对算法的结果影响较大;优先队列算法能够更好地适应更多的数据类型,但是匹配阈值的设置往往需要多次测试才能得到平衡点。
2 数据清洗流程
本文设计的数据清洗流程如图1所示,主要由两个模块组成,包括数据检测和数据清洗[6]两个部分。其中,本文系统处理的数据源所在的数据集来源于文件,而非传统的数据库中的数据集,如图1所示。
图1 数据清洗流程图
2.1 数据检测
数据检测模块的主要功能是确定目标数据存在的问题,此模块提供了现成的检测方法,同时用户也可以自定义方法[7]。下面是几个常用的检测方法。
2.1.1 统计学方法
较为典型的方法有切比雪夫定理、贝叶斯推理、对数回归等。现实中经常用到切比雪夫定理,计算某个字段值的平均值、标准差、取值范围、空值出现的数量和频率、最大值、最小值等。根据这些统计值和相关的启发式规则可以发现数据中的异常字段。
2.1.2 模式识别法
此类方法基于数据挖掘和机器学习算法来查找异常数据,是把划分、分类和聚类等技术组合起来的模式,能发现相当数量的异常数据,一个模式被定义为数据集中的一组记录具有P%相似的字段,P是根据实际情况取的值,通常取90以上。如果把该算法应用在根据领域知识生成记录的子集,而不是整个数据集上,发现一个模式的机率将会增加。
2.2 数据清洗
高效准确地清洗数据是数据清洗流程的核心。本模块针对不同类型的异常数据提供不同的清洗策略,主要的清洗策略如下所述。
2.2.1 标准化
此策略主要针对语义定义不一致的数据,如数据类型不一致和计量单位不一致等。当对多个不同的数据源进行整合数据时,数据结构标准的差异会使数据不一致的问题更加突出。针对这一问题,首先应该把数据结构标准化,依据数据定义生成一个替换表,然后对异常数据按照相应规则加以清洗,并按照统一后的标准对不一致数据进行转换。
2.2.2 错缺项处理
错缺项害处大而且处理麻烦,但是在实际情况中却很常见。合理地填补缺值和修正错值就显得尤为重要。常见的处理方法有:(1)使用全局常量填充。例如,某人口表中的兵役状况,使用“unknown”填充;(2)对某一类属性值进行简单计算或推断后填充错缺项。常见方法有使用形式值(名词变量)、平均值(连续变量)、数据的分布特征(统计规律)等;(3)用其他字段属性值来推测错缺值项,比如从公民身份证号可以推断年龄和地域等。
2.2.3 重复数据处理
数据库中有多条记录反应同一现实实体,这些记录可能是重复记录。重复记录清洗一直以来都是数据清洗领域里最重要的内容,其核心内容涉及到两条记录对应字段属性值的匹配问题。此流程需要经过若干个阶段进行处理:第一阶段,我们对数据集进行预处理操作,主要工作是为数据记录属性字段分配权重;第二阶段,对赋予了权重的属性字段进行排序,然后对整个文件数据集按照属性权重大小依次进行排序;第三阶段,进行字段匹配以及基于改进的层次聚類算法进行数据归类[8]。下面简单介绍各个阶段的工作内容:
第一阶段,记录属性字段分配权重。数据集的每条记录由多个属性组成,每个属性在记录中的作用不同。越容易区分记录的属性其分配权值应越大。当进行记录之间的相似度比较时,优先检测属性权重较大的字段。
第二阶段,按属性权重值对文件数据集排序。对数据记录字段属性权重排序之后,生成数据集字段属性权重排序序列。为了方便后续计算记录相似性,我们选择按照属性大小来排序。对最大权重的属性优先排序,然后再排第二大权重的属性,依次进行下去。这样,最后得到相似记录聚集的文件数据集序列。
第三阶段,基于层次聚类算法进行数据归并[9]。对数据源文件进行分割,设定数据记录总条数为m,每个小数据源文件记录条数为n,那么就可以划分为([m/n]+1)个小数据源文件。读取第一个文件对n条记录进行聚类运算,生成若干个聚类代表项以及所在聚类代表簇。在读取剩余文件时将记录与上述聚类代表项进行相似记录检测,将其归并到聚类当中或者重新写入原文件。通过增加每层聚类的阈值,重复上述步骤,直到达到合理的阈值。
2.2.4 孤立点的处理
在文件处理的最后会出现一些孤立点数据。这些数据不符合常规,一般情况下,如果确认其为噪声,可以将其消除。可采用平滑数据消除噪声,根据平滑规则将同一箱中的数据用相应数据替换。
3 实验结果
本系统在Windows平台上运行,实验数据来源于某国有企业提供的物料系统存储的物料数据。对实验数据进行清洗,从实验结果中取得部分数据如下表1所示:
上表中数据记录1和2,3和4,5、6和7分别属于三个类目。从实验效果可以看出,系统的清洗效果是良好的。
4 结 论
本文在研究数据清洗方法的基础上,提出了简单高效的数据清洗流程。首先,对数据质量问题的内容作出了阐述,然后简要介绍了数据清洗技术、方法和对象。并在此基础上简化了数据清洗的流程,实现流程的具体化并改进了数据清洗的方法和策略,使之能够对工业物料数据进行数据处理。本文在很多方面还未能考虑周全,仅仅对清洗流程的主脉络进行了刻画,希望能够为数据清洗领域贡献一些价值。
参考文献:
[1] 叶欧,张璟,李军怀.中文数据清洗研究综述 [J].计算机工程与应用,2012,48(14):121-129.
[2] 郭志懋,周傲英.数据质量和数据清洗研究综述 [J].软件学报,2012,13(11):2076-2081.
[3] 陈孟婕.数据质量管理与数据清洗技术的研究与应用 [D].北京邮电大学,2013.
[4] 王铭军,潘巧明,刘真,陈为.可视数据清洗综述 [J].中国图象图形学报,2015,20(4):0468-0482.
[5] 黎玲利.实体识别关键技术的研究 [D].哈尔滨工业大学,2015.
[6] 武小平,左春.基于工作流程的数据清洗系统 [J].计算机工程与设计,2008,29(8):1878-1880.
[7] 包从剑,李星毅,施化吉.可扩展和可交互的数据清洗系统 [J].计算机技术与发展,2007,17(7):84-90.
[8] 杨东华,李宁宁,王宏志,等.基于任务合并的并行大数据清洗过程优化 [J].计算机学报,2016,39(1):97-108.
[9] 刘芳,何飞.基于聚类分析技术的数据清洗研究 [J].计算机工程与科学,2005,27(6):71-77.
[10] 包从剑.数据清洗的若干关键技术研究 [D].江苏大学,2007.
[11] 王雪英.离群点预处理及检测算法研究 [D].西南交通大学,2009.
[12] 邓莎莎,陈松乔.基于异构数据抽取清洗模型的元数据的研究 [J].计算机工程与应用,2004(30):175-177.
作者简介:李俊达(1998.04-),男,汉族,山东临沂人,本科在读。研究方向:计算机科学与技术。