数据清理-缺失值
数据清理例程试图填充缺失的值、光滑噪声并识别离群点、纠正数据中的不一致。
缺失值
在处理数据时,会发现很多元组的一些属性没有记录值。可使用以下方法补充。
(1) 忽略元组:当缺少类标号时通常这样做。除非元组有多个属性缺少值,否则该方法不是很有效。当每个属性缺失值的百分比变化很大时,它的性能特别差。采用忽略元组,则无法使用元组中的其它属性值,这些值有可能对数据分析很有用。
(2) 人工填写缺失值:一般来说,该方法很费时,并且当数据集很大、缺失很多值时,该方法可能行不通。
(3) 使用一个全局常量填充缺失值:将缺失的属性值用同一个常量(如“unknown”或 -∞)替换。如果缺失的值都用如“unknown”替换,则挖掘程序可能误以为它们形成了一个有趣的概念,因为它们都具有相同的值。因此,尽管该方法简单,但是并不十分可靠。
(4) 使用属性的中心度量(如均值或中位数)填充缺失值。对于正常的(对称的)数据分布而言,可以使用均值,而倾斜数据分布应该使用中位数。
(5) 使用与给定元组属同一类的所有样本的属性均值或中位数。如果给定类的数据分布是倾斜的,则中位数是更好的选择。
(6) 使用最可能的值填充缺失值:可以用回归、使用贝叶斯形式化方法的基于推理的工具或决策树归纳确定。例如,利用数据集中其他顾客的属性,可以构造一棵决策树,来预测income的缺失值。
方法3-6使数据有偏,填入的值可能不正确。方法6是最流行的策略。与其它方法相比,它使用已有数据的大部分信息来预测缺失值。
某些情况下,缺失值并不意味数据有错误。理想状况下,每个属性都应当有一个或多个关于空值条件的规则。这些规则可以说明是否允许空值,并且/或者说明这样的空值应当如何处理或转换。如果在业务处理的稍后步骤提供值,字段也可能故意留下空白。因此,尽管在得到数据后,我们可以进我们所能来清理数据,但好的数据库和数据输入设计将有助于在第一现场把缺失值或错误的数量降至最低。