本节书摘来自华章出版社《R语言数据挖掘》一书中的第1章,第1.11节,作者[哈萨克斯坦]贝特·麦克哈贝尔(Bater Makhabel),李洪成 许金炜 段力辉 译,更多章节内容可以访问“华章计算机”公众号查看。
1.11 数据清洗
数据清洗是数据质量的一部分,数据质量(Data Quality,DQ)的目标如下:
准确性(数据被正确记录)。
完整性(所有相关数据都被记录)。
唯一性(没有重复的数据记录)。
时效性(数据不过时)。
一致性(数据是一致的)。
数据清洗试图填补缺失值、发现异常值同时平滑噪声、修正数据中的不一致性。数据清洗通常是一个两步迭代的过程,由差异检测和数据变换构成。
在大多数情况下,数据挖掘的过程都包含如下两个步骤:
第一步对源数据集进行测试以便发现差异。
第二步是选择变换方法来修正数据(基于要修正属性的准确性以及新值与原始值的接近程度)。然后应用变换来修正差异。
1.11.1 缺失值
在从各类数据源获取数据的过程中,当某些字段为空或者包含空值时会存在许多情况。好的数据录入程序应该尽量避免或者最小化缺失值或错误的数目。缺失值与默认值是无法区分的。
如果某些字段存在缺失值,那么有一些解决方案——每种解决方案都有不同的考虑与缺陷,并且每种方案在特定情况下都是可用的。
忽略元组:由于忽略元组,除了那个缺失值以外,你也不能使用剩余的值。
这种方法只适用于当元组包含的一些属性有缺失值或者每个属性缺失值的百分比变化不大时。
人工填补缺失值:对于大型数据集,该方法并不适用。
使用全局常量填补缺失值(use a global constant to fill the value):使用该常量填补缺失值可能会误导挖掘过程,并不十分安全。
使用属性集中趋势的度量来填补缺失值:集中趋势的度量可用于对称数据分布。
使用属性均值或者中位数:当给定元组时,对于属于同一类的所有样本使用属性均值或者中位数。
使用最可能的值来填补缺失值:缺失值可以用回归或者基于推理的工具,比如贝叶斯形式或者决策树归纳所确定的数据进行填补。
最流行的方法是最后一种方案,它基于当前值以及源于其他属性的值。
1.11.2 垃圾数据、噪声数据或异常值
正如在物理测试或者统计测试中,噪声是发生在获取测量数据的测试过程中的一个随机误差。对于数据收集的过程,不管你使用什么方法,噪声都不可避免地存在。
用于数据平滑的方法如下所述。随着数据挖掘研究的发展,新的方法也不断出现。
分箱:这是一个局部范围平滑的方法,在该方法中,使用近邻值计算特定箱子的终值。已排序的数据分布到多个箱子中,箱子中的每个值将被基于近邻值来计算出的值所取代。计算可以是箱子的中位数、箱子的边界,即箱子的边界数据。
回归:回归的目标是找到最佳曲线或者多维空间中某个类似于曲线的东西(函数)。因此,其他值可以用于预测目标属性或者变量的值。在其他方面,这是一种比较流行的平滑方法。
分类或者异常检测:分类器是发现噪声或者异常的另一种固有方法。在分类过程中,除了异常值外,大部分源数据将被分组到几个类中。