数据清理过程包括填补缺失数值,平滑噪声点,纠正数据的一致性。
一、缺失数据值
1.忽略元组:当缺少类标签时候通常这样做。除非元组有很多属性缺失值不然这个方法不好用。如果选择忽略了该元组那就不能使用元组剩下的属性值。
2.人工填写缺失值:费时费力
3.用一个全局常量替换所有的缺失值:所有的缺失值用Unkown替换,不是很可靠
4.使用属性的中心度量(均值或者中位数)填充缺失值。对于对称的数据来说可以用均值替换;对于倾斜数据可以用中位数。
5.使用与给定元组属于同一类的所有样本的属性均值或者中位数。比如说把顾客按照信用风险分类,有着相同信用风险的顾客的收入均值可以去替换Income. 不均衡的数据用中位数。
6.使用最可能的数据来弥补缺失值。这种方法可以用回归,贝叶斯方法或者建立一个决策树来进行预测可能的数值。
并不是说所有的空值都是错误,有的属性需要允许填入Null的选项。
二、噪声数据
1.分箱(bining):分箱是通过考察近邻的数值来光滑有序数据值。首先把数据分到箱子里,比如:
4,8,15,21,21,24,25,28,34.
数据首先排序被划分到大小为3的箱子里:
对于用均值光滑,使用箱子里的均值来替换每一个数值
对于用箱中位数光滑使用中位数来对每一个数值进行替换
对于用箱边界光滑,给定最大数值和最小数值作为箱子边界,然后箱子中每一个数值被替换为距离最近的边界值。
2. 回归:用函数拟合数据来光滑数据
3.离群点分析:通过聚类来检测离群点。首先把类似值组织成群或者簇。落在簇之外的数值被视为离群点。
很多数据光滑的方法也用于数据离散化和数据归约。
三、数据清理作为一个过程
数据清理过程的第一步是偏差检测。
如何进行偏差检测? 首先利用元数据——关于数据的数据 。 比如说每个数据类型和定义域是什么?每个属性可以接受的数值是什么?
第二点要考虑字段过载的问题。字段过载通常是因为开发者将新属性的定义挤进已经定义的属性的未使用位。
第三要考虑唯一性规则,连续性规则,空值规则。唯一性规则是:给定属性的每个值都必须不同于该属性的其他值。连续性规则是说属性的最高值和最低值之间没有缺失的数值并且所有的数值必须是唯一的。空值规则说明空白,问号,特殊符号或指示空值条件的其他串的使用以及如何处理这样的值。