缺失值数据、错误值数据、异常值数据、重复数据、不一致数据,在生产、金融、科研、管理等各类信息资源中普遍存在,由于这些数据的存在直接影响数据质量,因而被称为“脏数据”。
为了控制“脏数据”对分析结果的影响,必须采取有效措施,对其进行处理,降低“脏数据”在信息资源中的比例。数据清洗是数据挖掘的重要步骤之一,需要保证数据值的正确性和一致性,解决字段值的缺失问题,从而将数据质量提高到能够满足分析精度的要求。数据清洗分为分析样本数据、定义“脏数据”类型、识别“脏数据”和处理“脏数据”四个阶段。
对于不同类型“脏数据”,其清洗方法有所差异。
数据缺失主要是指数据中一些应该有的信息完全或部分空缺,如客户名称或客户区域信息缺失,用户年龄信息缺失等。对于数据空缺,有些必须手工填入,有些可以利用本数据源或其他数据源,将某个变量的缺失值统一填写为常量、平均值、最大值、最小值或更为复杂的概率估计值。也可利用机器学习算法对没有缺失值的数据集进行训练,得到相应的模型,用于填充缺失的值。当某一变量的缺失值过多时,通常采用从数据集中删除该变量的方法进行数据清理。
人工录入数据有时会将数值数据输成全角数字字符,或者录入格式不正确的日期,或者产生某些实体名称、专业词汇的拼写错误等;在进行文献资源数字化工作时,文字识别软件有时会造成字符识别错误;在采用射频技术进行信息的自动识别与采集时,有时会对一些模糊不清的信号识别错误,有时会丢失部分信息。通过发现描述同一实体的不同数据,即实体识别,可以有效地检测出实体不同一、过时等错误。通过发现描述实体属性的真实值,可以实现对于实体不同一数据的修复。以一个高质量的数据集合作为主数据,以该数据集为基准,可以用来发现数据中的错误,也可利用给定规则捕捉和修复数据中的错误。使用偏差分析方法、聚类方法,可以寻找结构化数据中可能的错误值或异常值,使用不同属性间的约束可以检测和清理结构化数据中的错误值。利用分箱方法可以平滑数值型属性的值,避开错误值或异常值。
一致性检测是根据每个变量的合理取值范围和相互关系,检测数据是否合乎要求,发现超出正常范围、逻辑上不合理或者相互矛盾的数据。例如,身高出现负数,每月出勤100次,都应视为超出正常值域范围。又如,调查对象声称自己是某品牌的重度购买者和使用者,但是同时又在熟悉程度量表上给了很低的分值,这属于逻辑上的不一致。这类“脏数据”可通过定义数据的有效性规则,参照完整性等方式进行检测或预防。