Ø 现实世界的数据一般是不完整的、有噪声的和不一致的。数据清理例程试图填充缺失的值,光滑噪声并识别离群点,并纠正数据中的不一致。
Ø 想像你需要分析AllElectronics的销售和顾客数据。你注意到许多元组的一些属性,如顾客的income,没有记录值。怎样才能为该属性填上丢失的值?我们看看下面的方法:
n (1)忽略元组:当缺少类标号时通常这样做(假定挖掘任务涉及分类)。除非元组有多个属性缺少值,否则该方法不是很有效。当每个属性缺少值的百分比变化很大时,它的性能特别差。
n (2)人工填写缺失值:一般,该方法很费时,并且当数据集很大,缺少很多值时,该方法可能行不通。
n (3)使用一个全局常量填充缺失值:将缺失的属性值用同一个常数(如“Unknown”或-∞”)替换,则挖掘程序可能误以为它们形成了一个有趣的概念,因为它们都具有相同的值“Unknown”。因此,尽管该方法简单,但是它并不十分可靠。
n (4)使用属性的均值填充缺失值:例如,假定AllElectronics顾客的平均收入为56 000美元,则使用该值替换income中的缺失值。
n (5)使用与给定元组属同一类的所有样本的属性均值:例如,将顾客按credit_risk分类,则用具有相同信用度给定元组的顾客的平均收入替换income中的缺失值。
n (6)使用最可能的值填充缺失值:可以用回归、使用贝叶斯形式化的基于推理的工具或决策树归纳确定。例如,利用数据集中其他顾客的属性,可以构造一棵决策树来预测income的缺失值。决策树、回归和贝叶斯推理将在第6章详细介绍。
Ø 方法3~6使数据偏置。填入的值可能不正确。然而,方法6是流行的策略,与其他方法相比,它使用已有数据的大部分信息来预测缺失值。在估计income的缺失值时,通过考虑其他属性的值,有更大的机会保持income和其他属性之间的联系。
Ø 重要的是要注意,在某些情况下,缺失值并不意味数据有错误!
n 例如,在申请信用卡时,可能要求申请人提供驾驶执照号。没有驾驶执照的申请者自然使该字段为空。
n 表格应当允许填表人使用诸如“无效”等值。
n 软件例程也可以用来发现其他空值,如“不知道”、“?”或“无”。
n 理想地,每个属性都应当有一个或多个关于空值条件的规则。这些规则可以说明是否允许空值,并且/或者说明这样的空值应当如何处理或转换。
n 字段也可能故意留下空白,如果它们在商务处理的最后一步未提供值的话。
n 因此,尽管在得到数据后,尽我们所能来清理数据,但数据库和数据输入的好的设计将有助于在第一现场最小化缺失值或错误的数量。
Ø “什么是噪声?”噪声(noise)是被测量的变量的随机误差或方差。给定一个数值属性,如price,我们怎样才能“光滑”数据,去掉噪声?我们看看下面的数据光滑技术。
n (1)分箱(binning):分箱方法通过考察数据的“近邻”(即周围的值)来光滑有序数据的值。有序值分布到一些“桶”或箱中。由于分箱方法考察近邻的值,因此进行局部光滑。图2-11图示了一些分箱技术。在该例中,price数据首先排序并划分到大小为3的等频箱中(即每箱包含3个值)。用箱均值光滑,箱中每一个值都被箱的均值替换。例如,箱1中的值4, 8和15的均值是9。因此,该箱中的每一个值都替换为9。类似地,可以使用用箱中位数光滑。此时,箱中的每一个值都被箱中位数替换。用箱边界光滑,箱中的最大和最小值同样被视为箱边界。箱中的每一个值都被最近的边界值替换。一般来说,宽度越大光滑效果越大。箱也可以是等宽的,每个箱值的区间范围是个常量。分箱也可以作为一种离散化技术使用,将在2.6节进一步讨论。
图2-11 数据光滑的分箱方法
n (2)回归:可以用一个函数(如回归函数)拟合数据来光滑数据。线性回归涉及找出拟合两个属性(或变量)的“最佳”线,使得一个属性可以用来预测另一个。多元线性回归是线性回归的扩展,其中涉及的属性多于两个,并且数据拟合到一个多维曲面。回归将在2.5.4节和第6章进一步讨论。
n (3)聚类:可以通过聚类检测离群点,将类似的值组织成群或“簇”。直观地,落在簇集合之外的值视为离群点(图2-12)。第7章专门研究聚类和离群点分析。
图2-12
Ø 许 多数据光滑的方法也是涉及离散化的数据归约方法。例如,上面介绍的分箱技术减少了每个属性的不同值数量。对于基于逻辑的数据挖掘方法(如决策树归纳),反 复地对排序后的数据进行比较,这充当了一种形式的数据归约。概念分层是一种数据离散化形式,也可以用于数据光滑。例如,price的概念分层可以把实际的price值映射到价格便宜、适中和昂贵,从而减少了挖掘过程所处理的值的数量。数据离散化将在2.6节讨论。有些分类方法如神经网络,有内置的数据光滑机制。分类是第6章的主题。
Ø 数据清理作为过程的第一步是偏差检测(discrepancy detection)。
n 导致偏差的因素可 能有多种,包括具有很多可选字段的设计糟糕的数据输入表单、人为输入错误、有意的错误(例如,不愿意泄露自己的信息)、以及数据退化(如过时的地址)。偏 差也可能源于不一致的数据表示和编码的不一致使用。记录数据的设备错误和系统错误是另一种偏差源。当数据(不适当地)用于不同于当初的目的时,也可能出现 错误。数据集成也可能导致不一致(例如,给定的属性在不同的数据库具有不同的名称)。
Ø “关于数据的数据”称作元数据。
Ø 字段过载(field overloading)是另一种错误源,通常是由如下原因导致:开发者将新属性的定义挤压到已经定义的属性的未使用(位)部分(例如,使用一个属性未使用的位,该属性取值已经使用了32位中的31位)。
Ø 还应当根据唯一性规则、连续性规则和空值规则考察数据。唯一性规则是说给定属性的每个值都必须不同于该属性的所有其他值。连续性规则是说属性的最低和最高值之间没有缺失的值,并且所有的值还必须是唯一的(例如检验数)。空值规则说明空白、问号、特殊符号或指示空值条件的其他串(例如,给定属性的值不能使用)的使用,以及如何处理这样的值。正如2.3.1节所提及的,缺失值的原因可能包括(1)被要求提供属性值的人拒绝提供和/或发现没有所要求的信息(例如,非司机未填写license-number属性);(2)数据输入者不知道正确的值;(3)值在稍后提供。空值规则应当说明如何记录空值条件,例如数值属性存放0、字符属性存放空白或其他使用方便的约定(诸如“不知道”或“?”这样的项应当转换成空白)。
Ø 数据清洗工具(Data scrubbing tool)使用简单的领域知识(如邮政地址知识和拼写检查)检查并纠正数据中的错误。在清理多个数据源的数据时,这些工具依赖分析和模糊匹配技术。数据审计工具(Data auditing tool)通过分析数据发现规则和联系及检测违反这些条件的数据来发现偏差。它们是数据挖掘工具的变种。例如,可以使用统计分析来发现相关,或通过聚类识别离群点。
Ø 有些数据不一致可以使用其他外部材料人工地加以更正。例如,数据输入时的错误可以使用纸上的记录加以更正。然而,大部分错误需要数据变换。这是数据清理过程的第二步。即,一旦发现偏差,通常我们需要定义并使用(一系列)变换来纠正它们。
Ø 商业工具可以支持数据变换步骤。数据迁移工具(Data migration tool)允许说明简单的变换,如将串“gender”用“sex”替换。ETL(Extraction/Transformation/Loading,提取/变换/装入)工具允许用户通过图形用户界面(GUI)说明变换。通常,这些工具只支持有限的变换,因此,我们常常可能选择为数据清理过程的这一步编写定制的程序。
Ø 随着我们对数据的了解增加,重要的是要不断更新元数据以反映这种知识。这有助于加快对相同数据存储的未来版本的数据清理速度。