数据挖掘-数据清理过程
数据清理-数据清理过程
数据清理过程的第一步是偏差检测(discrepancy detection)。
导致偏差的因素有很多,包括:
- 具有很多可选字段的设计糟糕的输入表单
- 人为的数据输入错误
- 有意的错误(例如不愿意泄露自己的信息)
- 数据退化(例如,过时的地址)
- 也可能源于不一致的数据表示和编码的不一致使用
- 记录数据的设备错误和系统错误
- 当数据(不适当的)用于不同于当初的目的时
- 数据集成也可能导致不一致。
- 字段过载(field overloading)是另外一种错误源(原因:开发者将新属性的定义挤进已经定义的属性的未使用(位)部分)
如何进行偏差检测
1. 警惕编码使用的不一致和数据表示的不一致问题(例如日期“2019/04/17”和“17/04/2019”)
2. 根据唯一性规则、连续性规则和空值规则考察数据。
- a) 唯一性规则:给定属性的每个值都必须不同于该属性的其他值。
- b) 连续性规则:属性的最低和最高值之间没有缺失的值,并且所有的值还必须是唯一的。
- c) 空值规则:说明空白、问号、特殊符号或只是空值条件的其他串的使用,以及如何处理这样的值。
缺失值的原因:
- (1) 被要求提供属性值的人拒绝提供和/或发现没有所要求的信息(比如非驾驶员要求提供驾照信息)
- (2) 数据输入者不知道正确的值
- (3) 值在稍后提供。
空值规则应当说明如何记录空值条件,例如数值属性存放0,字符属性存放空白或其他使用方便的约定(诸如“不知道”或“?”这样的项应当转换成空白)
3. 借助商业工具进行偏差检测
- a) 数据清洗工具(data scrubbing tool)使用简单的领域知识(如邮政地址知识和拼写检查),检查并纠正数据中的错误。在清理多个数据源的数据时,这些工具依赖于分析和模糊匹配技术。
- b) 数据审计工具(data auditing tool)通过分析数据发现规则和联系,并检测违反这些条件的数据来发现偏差。
- 以上是数据挖掘工具的变种,例如,它们可以使用统计分析来发现相关性,或通过聚类识别离群点。
- 有些数据不一致可以使用其它材料人工的加以改正。例如,数据输入时的错误可以使用一些资料中的记录加以改正。然而,大部分错误需要数据变换。一旦发现偏差,通常需要定义并使用一系列变换规则来纠正它们。
- c) 数据迁移工具(data migration tool)允许说明简单的变换,如将“gender”用“sex”替换。
- d) ETL(Extraction/Transformation/Loading,提取/变换/装载)工具允许用户通过图形用户界面(GUI)说明变换。
通常,这些工具只支持有限的变换,因此可能还需要为数据清理过程的这一步编写定制程序。
偏差检测和数据变换(纠正偏差)的两步过程迭代执行。然而这一过程容易出错并且费时。有些变换可能导致更多偏差。有些嵌套的偏差可能在其它偏差解决之后才能检测到。例如,年份字段上的输入错误“20019”可能在所有日期值都变换成统一格式之后才会浮现。
变换常常以批处理方式进行,用户等待而无反馈信息。仅当变换完成之后,用户才能回过头来检查是否错误地产生了新的异常。
通常,需要多次迭代才能使用户满意。不能根据指定变换自动处理的元祖通常写到一个文件中,而不给出失败的原因解释。整个数据清理过程也缺乏交互性。
新的数据清理方法强调加强交互性。例如,Pottes’s Wheel是一种公开的数据清理工具,它集成了偏差检测和数据变换。
另一种提高数据清理交互性的方法是 开发数据变换操作的规范说明语言。这种工作关注定义SQL的扩充和使得用户可以有效地表达数据清理具体要求的算法。