数据挖掘中的数据清理技术概述
2018-09-10于琦
于琦
摘 要:随着信息技术的发展,每天都会产生海量数据,我们正处于一个知识爆炸的大数据时代。大数据受到企业界、科技界、政府等各行各业的高度重视。面对庞大的数据集群,需要用数据挖掘的方法来从众多数据中找到隐藏信息。无论在数据分析还是数据挖掘过程中,数据预处理都处于重要地位,占据数据挖掘过程总工作量的60%~80%,数据预处理过程决定着数据挖掘结果的准确性和有效性,而数据清理在数据挖掘中具有重要作用。本文针对各数据挖掘中数据格式不统一、数据清理过程不完善、冗余数据繁多及数据挖掘任务对数据类型的要求不同等问题,探讨了数据清理的基本概念、作用、方法和其中几个关键技术。
关键词:数据挖掘;数据清理;数据预处理
中图分类号:TP311.12 文献标识码:A 文章编号:1003-5168(2018)20-0021-03
Overview of Data Cleaning Techniques in Data Mining
YU Qi
Abstract: With the development of information technology, massive data will be generated every day. We are in the era of big data explosion. Big data is highly valued by businesses, science and technology, government and so on. Faced with huge data clusters, data mining is required to find hidden information from many data. In the process of data analysis and data mining, data preprocessing occupies an important position, occupying the 60%~80% of the total workload of data mining. Data preprocessing determines the accuracy and effectiveness of data mining results, and data cleaning plays an important role in data mining. In this paper, the basic concepts, functions, methods and several key technologies of data cleaning were discussed in view of the problems of different data formats, incomplete data cleaning process, numerous redundant data and different requirements for data types.
Keywords: data mining;data cleaning; data preprocessing
1 研究背景
數据挖掘技术在当前商务发展中逐渐受到企业的关注。尿片和啤酒这两个商品看似不相关,但能通过数据挖掘找到其中的联系。数据挖掘的例子较多,如音乐公司在老年杂志上为说唱音乐做广告,信用卡公司在用户还没意识到信用卡被盗时就已经在怀疑某个信用卡被盗了。可见,数据挖掘被广泛应用。数据挖掘是指从大量数据中提取或“挖掘”知识[1]。在数据挖掘中,关键就是处理数据,挖掘数据中隐含的重要信息。但是,在挖掘过程中,数据量太大,且有很多数据是不完整的、含噪声的,这时,就要对数据进行预处理。数据预处理的结果直接影响数据挖掘的结果,若预处理效果差,最后得出的结论很可能是错误的。而数据预处理中最重要的是数据清理,数据清理所用的时间占据数据预处理的绝大部分,数据清理的结果直接关系到最后的结果。本文主要从数据空缺值、数据的噪声、数据的不一致性和重复数据等方面研究数据清理,并提出数据清理方法。利用这些数据清理方法,可以有效提高数据挖掘的精度和性能。
2 数据清理
在现实世界中,数据源存在各种问题,有的数据不完整,有的数据有噪声,有的数据存在不一致性,有的数据存在极大相似性,这些数据都不能直接作为挖掘的数据,需要对其进行数据清理。因此,数据清理解决的是数据质量问题,即通过发现和处理数据中的错误和不一致来提高数据质量。数据清理在数据预处理中花费的时间是最长的,同时也是最重要的一步。
数据清理主要包括3个步骤,即数据分析、数据检测和数据修正。数据分析主要是指从数据中发现控制数据的一般规则,然后定义相应的数据清理规则,选择合适的清理算法。数据检测是根据之前定义好的规则及算法来检测数据,最后对检测后的数据进行修正[2-5]。数据清理原理见图1。
解决数据冲突问题的方法取决于问题的形式、数据挖掘模型的需求,还有我们选择什么样的方法来分析问题[6]。因此,处理数据冲突、进行数据清理时,方法的选择是关键。接下来主要介绍数据清理常见的几种方法。
2.1 空缺值的处理
在数据库中,经常会遇到空值的问题。产生空值的原因较多,例如,当注册一个用户时,有很多选项是选填的,只有用户名和密码等必填项是有数据的;又如,填写者在填写某些信息时认为没有必要,也忽略了;由于记录的内容不一致而被删除。这些原因造成了空缺值的产生。
对于空缺值的处理,可采取的方法较多,要根据具体情况选择合适的方法。处理空缺值的常用方法是忽略元祖,手动填写缺失值,填充全局变量,使用属性的均值或最可能的值填充空缺值。当缺少类标号时,使用忽略元祖的方法较好。当空缺值是一些非常重要的数据,但数据量不大时,可以采用人工填写的方法。全局变量的方法不是很可靠,但方法简单。均值填写反映了数据的总体水平,不会对挖掘的结果产生较大影响。
2.2 噪声
噪声是被测量的变量的随机误差或方差[1]。对于一个变量的测量总会存在偏差,这些偏差就是噪声。如果偏差较大,就是孤立点。一般情况下,主要使用平滑技术来处理方差。具体有以下几种方法。
①分箱法。分箱法是指通过考察“邻居”(周围的值)来平滑存储数据的值,即将数据平均分入几个箱中,对每个箱子中的数值进行转换,可以转换为箱中所有数值的平均值、中值或者边界值。转换后,数值的变化范围就相应缩小。事实上,这是数据离散化的一种方式。
②聚类法。聚类将类似的值组织成群或“聚类”,聚类集合之外的值被视为孤立点。通过聚类分析可以发现异常数据,相似或相邻近的数据聚合在一起形成聚类集合,而那些位于这些聚类集合之外的数据对象,自然而然就被认为是异常数。
③回归。可以通过让数据适合一个函数(如回归函数)来平滑数据。线性回归和多线性回归分析可以应用到噪声的消除中[7]。
噪声中最常见的是极端数据。极端数据对数据挖掘的最终结果影响较大,其会导致数据挖掘的结论出现错误。极端数据是指那些远远偏离正态分布的数据。由于数据量过大,因此,不宜采取人工处理的方式,要采取行之有效的方法。直接删除这些极端数据也是不明智的,一般需要将这些数据标记出来,由挖掘者决定是删除还是使用一定的值代替,一般是使用该列的平均值。这种方法的思想是要给数值确定一个界限,以人的年龄为例,人的年龄不可能是负数,同时人的寿命是有限的,根据这些条件确定年龄这个属性的范围,当输入人员输入19,而不小心多按了9时,就会提示错误。边界值的使用能有效反映该列的极端数据,有利于对数据的清理。
2.3 数据的不一致性
导致数据不一致性的原因较多,例如,在数据输入时的错误输入,包括无意输入错误和有意输入错误;未及时更新过时的数据(用户的手机号码或者是居住地址等)。同时,编码使用的不一致和数据表示的不一致也是导致数据不一致的原因。因此,来自多个数据源的数据对同一个事物表示不一致的现象较为常见,此时需要通过自动或者人工手动的方式进行校正,将数据标准化为相同格式的结构[4]。例如,日期的表示,有的系统会将日期表示为“2011/6/12”,而有的系统会存储为“12/6/2011”,表示的意思是一样的,但在数据挖掘过程中会出现问题,因此一致性在数据挖掘中较为重要。
2.4 相似重复记录的清洗
清理相似重复数据的目的是消除冗余。对相似重复数据的清理,可以采用基本近邻排序算法(Sorted-Neighborhood Method,SNM)[8]。在利用该方法的过程中,首先要将一个或多个关系表拼接成为一个含有N条记录的数据集,然后采用基本近邻方法。基本近邻方法分为创建关键字、排序和合并这三步。
第一步是创建关键字。关键字的选择要考虑项目应用的背景,基本邻近排序算法的进度和关键字的选择密切相关,因此,关键字的选取非常重要。
第二步是通过第一步选取的关键字来进行排序。
最后一步是合并在排序后的数据集上面滑动一个固定的窗口,数据集中的每一条记录同固定窗口比较,最先进入窗口的记录会最先滑出窗口。
一个窗口有W条记录,每条新进入窗口的记录都要和窗口的W-1条记录进行比较。为了检测重复记录,然后最先进入窗口内的记录滑出窗口,最后一条记录的下一条记录移入窗口,再把此W条记录作为下一轮比较对象,直到记录集的最后。由于基本近邻算法采用的是滑动窗口技术,由此减少了比较的次数,能保证准确率。但是,该算法对关键字的依赖程度过大,因此,关键字的选取异常重要,如果选取的关键字错误或者无法显示对象的特征,那么就会出现严重的后果;另外,窗口大小的选取也较为关键。
针对基本近邻排序的不足,Hernander等人提出了多趟近邻排序算法(Mlti-Pass Sorted-Neighborhood,MPN),该算法的思想是独立地执行多趟近邻排序算法,每次创建不同的排序关键字,并使用相对较小的滑动窗口。然后采用基于规则的知识库来生成一个等价原理,作为合并记录的判断标准,将每趟扫描识别出的重复记录合并为一组,在合并时,假定记录的重复是具有传递性的,即计算其传递闭包[9]。多趟近邻算法有效解决了基本邻近算法的两个主要问题,虽然仍存在其他问题,但对相似重复数据的清理效果较好。
除了SNM和MPN两个算法外,Fuzzy Match/Merge算法也适用于解决重复数据问题,其是一种适合多种基于客户应用的模糊匹配与合并的算法[10]。该算法的主要思想是对各个属性的数据进行规范化处理,将处理后的数据两两之间进行比较,在比较的过程中,会采用模糊策略,然后将之前两两比较的结果进行合并。
3 结语
数据清理是数据挖掘技术中最重要的步骤,数据清理工作的质量,直接关系到数据挖掘效果。本文主要探讨数据清理中常见的几种方法,分析其优缺点。这些方法还有很多需要深入研究的地方,其运用仍不成熟,所以,数据挖掘中的数据清理还有许多方面值得研究。
参考文献:
[1]Jiawei Han,Micheline Kamber.数据挖掘概念与技术[M].范明,孟小蜂,译.北京:机械工业出版社,2007.
[2]Richard J.Roiger,Michael W.Geatz.数据挖掘教程[M].翁敬农,译.北京:清华大学出版社,2003.
[3]郑庆华,刘均,田峰,等.Web知识挖掘:理论、方法与应用[M].北京:科学出版社,2010.
[4]代昆玉,胡滨.基于数据仓库的数据清理技术概述[J].贵州大学学报(自然科学版),2007(3):283-284.
[5]庄晓青,徐立臻,董逸生.数据清理及其在数据仓库中的应用[J].计算机应用研究,2003(6):147-149.
[6]唐新余,陳海燕,李晓,等.数据清理中几种解决数据冲突的方法[J].计算机应用研究,2004(12):209-211.
[7]菅志刚,金旭.数据挖掘中数据预处理的研究与实现[J].计算机应用研究,2004(7):117-118.
[8]许向阳,佘春红.近似重复记录的增量式识别算法[J].计算机工程与应用,2003(12):191-193.
[9]李坚,郑宁.对基于MPN数据清洗算法的改进[J].计算机应用与软件,2008(2):245-247.
[10]陈伟,丁秋林.可扩展数据清理软件平台的研究[J].电子科技大学学报,2006(1):100-103.