数据预处理
在数据挖掘中,海量的原始数据中存在着大量的不完整(有缺失值)、不一致、有异常的数据,严重影响到数据挖掘建模的执行效率,甚至可能导致挖掘结果的偏差,所以进行数据清洗显得尤为重要,数据清洗完成后接着进行或者同时进行数据集成、变换、规约等一系列的处理,该过程就是数据预处理。
数据预处理的主要内容包括数据清洗,数据集成,数据规约,数据变换等。
1. 数据清洗
1.1 缺失值处理
从统计上说,缺失的数据可能会产生有偏估计,从而这样使样本数据不能很好的代表总体,而实现中绝大部分数据都包含缺失值,因此如何处理缺失值很重要。缺失值的处理包括两个步骤,即缺失数据的识别和缺失值处理。在对是否存在缺失值进行判断之后需要进行缺失值处理,常用的方法有删除法、替换法、插补法等。
1)删除法
删除法是最简单的缺失值处理法,根据数据处理不同角度可分为删除观测样本、删除变量两种。
2)替换法
变量按属性可分为数值型和非数值型,二者的处理方法不同。如果缺失值所在的变量为数值型的,一般用该变量在其他所有对象的取值的均值来替换变量的缺失值,如果为非数值型变量,则使用该变量其他全部有效观测值的中位数或者众数替代。
3)插补法
在面对缺失值问题,常用的插补法有回归插补、多重插补等。回归插补法利用回归模型,将需要插值补缺的变量作为因变量,其他相关变量作为自变量,通过回归函数lm()预测出因变量的值来对缺失变量进行补缺。
1.2异常值处理
在异常处理之前需要对异常值进行识别,一般多采用单变量散点图或是箱形图来达到目的。
异常值处理方法 |
方法描述 |
删除含有异常值的记录 |
直接将含有异常值的记录删除 |
视为缺失值 |
将异常值视为缺失值,利用缺失值处理的方法进行处理 |
平均值修正 |
可用前后两个观测值的平均值修正该异常值 |
不处理 |
直接在具有异常值的数据集上进行挖掘建模 |
2. 数据集成
数据挖掘需要的数据往往分布在不同的数据源中,数据集成就是将多个数据源合并存放在一个一致的数据存储中的过程。
在数据集成时,来自多个数据源的现实世界实体的表达形式是不一样的,有可能不匹配,要考虑实体识别问题和属性冗余问题,从而将源数据在最底层上加以转换、提炼和集成。
1)实体识别
实体识别是从不同的数据源识别出现实世界的实体,它的任务是统一不同元数据的矛盾之处,常见的矛盾有如下几个,同名异义,异名同义,单位不统一。
2)冗余属性识别
数据集成往往导致数据冗余,如:
l 同一属性多次出现
l 同一属性命名不一致,导致重复
3. 数据变换
数据变换主要是对数据进行规范化处理、连续变量的离散化以及变量属性的构造,将数据转换成“适当的”形式,以满足数据挖掘任务及算法的需要。
3.1 简单函数变换
简单函数变换是对原始数据进行某些数据函数变换,常用的包括平方、开方、取对数、差分运算等。
3.2 规范化
不同评价指标往往具有不同的量纲,数值间的差别可能很大,不进行处理可能会影响到数据分析的结果。为了消除指标之间的量纲和取值范围差异的影响,需要进行标准化处理,将数据按照比例进行缩放,使之落入一个特定的区域,便于进行综合分析。主要有最小-最大规范化,零-均值规范化,小数定标规范化等方法。
3.3 连续属性离散化
一些数据挖掘算法,特别是某些分类算法(如ID3算法、Apriori算法等),要求数据是分类属性形式。常常需要将连续属性变换成分类属性,即连续属性离散化。
1)离散化的过程
连续属性的离散化就是在数据的取值范围内设定若干个离散的划分点,将取值范围划分为一些离散化的区间,最后用不同的符合或整数值代表落在每个子区间中的数据值。
2)常用离散化方法
常用的离散化方法有等宽法,等频法,聚类等。
等宽法:该法将属性的值域分成具有相同宽度的区间,区间的个数由数据本身的特点决定,或者由用户决定。
等频法:该法将相同数量的记录放进每个区间
聚类:聚类的方法包括两个步骤,首先将连续属性的值用聚类算法进行聚类,然后再将聚类得到的簇进行处理,合并到一个簇连续属性值并做同一标记。
3.4属性构造
在数据挖掘的过程中,为了便于提取更有用的信息,挖掘更深层次的模式,提高挖掘结果的精度,需要利用已有的属性集构造出新的属性,并加入到现有的属性集合中。
4. 数据规约
数据规约可以产生更小的但保持原数据完整性的新数据集。在规约后的数据集上进行分析和挖掘将更有效率。
数据规约的意义在于:
l 降低无效、错误数据对建模的影响,提高建模的准确性
l 少量且具有代表性的数据将大幅缩减数据挖掘所需的时间
l 降低储存数据的成本
1)属性规约
属性规约通过属性合并来创建新属性维数,或者直接通过删除不相关的属性来减少数据维数。属性规约的目标是寻找出最小的属性子集并确保新数据子集的概率分布尽可能地接近原来数据集的概率分布。属性规约常用方法如下表所示:
属性规约方法 |
方法描述 |
合并属性 |
将一些旧属性合为新属性 |
逐步向前选择 |
从一个空属性集开始,每次从原来属性集合中选择一个当前最优的属性添加到当期属性子集中。直到无法选择出最优属性或满足一定阈值约束为止 |
逐步向后删除 |
从一个全属性集开始,每次从当前属性子集中选择一个当前最差的属性并将其从当前属性子集中消去。直到无法选择出最差属性为止或满足一定阈值约束为止 |
决策时归纳 |
利用决策树的归纳方法对初始数据进行分类归纳学习,获得一个初始决策树,所有没有出现在这个决策树上的属性均可认为是无关属性,因此将这些属性从初始集合中删除,就可以获得一个较优的属性子集 |
主成分分析 |
用较少的变量取解释原始数据中的大部分变量,即将许多相关性很高的变量转化彼此相互或不相关的变量 |
2)数值规约
数值规约通过选择替代的、较小的数据来减少数据量,包括有参数方法和无参数方法两类。有参数方法是使用一个模型来评估数据,只需存放参数,而不需要存放实际数据,无参方法就需要存放实际数据。数值规约主要有直方图,聚类,抽样,参数回归等方法。
5. R语言主要数据预处理函数
函数名 |
函数功能 |
所属函数包 |
lm() |
利用因变量与自变量建立线性回归模型 |
通用函数包 |
predict() |
依据已有模型对数据进行预测 |
通用函数包 |
mice() |
对缺失数据进行多重插补 |
mice函数包 |
which() |
返回服从条件的观测所在位置 |
通用函数包 |
scale() |
对数据进行零-均值规范化 |
通用函数包 |
rnorm |
随机产生服从正态分布的一列数 |
通用函数包 |
ceiling |
向上舍入接近的整数 |
通用函数包 |
kmeans() |
对数据快速进行聚类分析 |
通用函数包 |
princomp() |
对指标变量矩阵进行主成分分析 |
通用函数包 |
dwt() |
对数据进行小波分解 |
waveslim函数包 |