这节课我们学习3.1节数据预处理的目标和3.2节数据清洗。
在进行数据挖掘之前,需要对现实世界中的案例数据进行预处理,其原因就是绝大部分的实际数据都是脏的。这个脏的主要表现层面有如下几个方面,一,数据是不完全的,即某些数据对象在一些属性值上是空的,比如调查问卷,大学生每个月零花钱的数量,部分同学不愿意填写,因此就形成了扣属性值。二,数据含有错误或者固定点,比如问卷,让同学填写每个月工资多少,同学填错或者恶意回答填写了负数。三,属性值存在微智特性,比如前面写年龄是42岁,但是后面的出生年月相矛盾,或者是多数据源进行融合的时候,以前的等级是一,二,三,而现在的数据等级划分为 abc 。还有一些可能是由于存在重复记录导致的冗余信息,比如之前的数据库记录为姓名属性,现在的数据库记录为姓氏和名字两个属性。
以上种种都表明数据源,特别是多元易购数据进行融合后的数据样本,在进行数据分析与挖掘之前,需要进行预处理操作。数据预处理的主要任务包括如下内容,首先是数据清理,填充缺失项,删除噪音或者平滑噪音,纠正不一致数据等等。其次是将多个数据源进行集成,包含了异构数据的集成或者是简单的文件。包括规范化等操作。
第四,数据规约。例如维度规约,数值规约以及数据压缩等等。最后是数据的离散化和概念分层的内容。这五个预处理任务也就构成了第三章的主体学习内容。
下面我们先来学习数据清理的方法和技术。数据清洗就是针对之前所说的不完整数据,不一致数据以及变相丢失的数据进行处理。首先来看缺失数据的处理方法,如果样本量足够大,并且缺失属性的数据集数量不大的时候,为了简便起见,我们可以直接删除不完整的数据源组,如果缺失属性的部分数据比例比较大,则不能直接粗暴删除了。此时最准确的方法就是对缺失数据源进行溯源,重新填写相关数据。
但是这种方法在很多场合下都是无法实现的,因此可以采取替代的另外的方法,即自动填充方法。自动填充的时候,可以填充为系统设置的全局变量,或者用数据在该数据上的取值均值来替代,还可以使用同一句类组别中的值,或者是采用推理办法推测出来的可能值去替代。下面以一个实例来进行举例说明。假设现在需要调研1000名大学生每个月的零花钱数量,其中500个学生每月零花钱都是空白,需要进行填充。第一种方法用500个完整的数据中零花钱的均值来替代空值,但是这种方法不太准确。第二种方法可以对学生群体进行籍贯划分,把缺失值替换成相同籍贯学生群体的零花钱群值。显然第二种方法比较准确。其次,我们来看噪音数据的处理方法。噪音数据的产生原因有很多,比如数据收集方法错误,录入错误,传输错误或者不一致的命名管理等等。