为什么要进行数据预处理?
只有当数据的质量好才能保证数据分析的结果好。然后实际系统中的原始数据会因为很多原因出现数据错误,数据缺失,不一致等情况,所以需要对原始数据进行预处理,包括数据清洗,数据集成,数据归约,数据转换。
一、数据清洗
目的:填充或删除缺失值,降低噪声与识别离群点。
数据清洗的第一步偏差检测(数据的不一致性,字段过载),第二步纠正偏差
1.缺失值处理
(1)直接删除缺失属性的记录。
(2)人工填写缺失值。
(3)使用全局常量填写缺失值
(4)使用属性的中心趋势度量值填写缺失值(中位数或均值)
(5)使用与给定元组属于同一类的所有样本的属性均值或中位数填充
(6)使用最可能的值填充,用算法来预测。
2.识别离群点和平滑噪声数据
(1)分箱法:通过考察“邻居”(周围的值)来平滑存储数据的值,分箱的主要目的是去噪,将连续数据离散化,增加粒度。箱的深度表示不同的箱里数据的个数,箱的宽度表示每个箱值得取值区间。
常用的分箱法如下:
等宽分箱:将变量得取值范围分为k个等宽的区间,每个区间当成一个分箱。
等频(深)分箱:将观测值从小到大排列,根据观测的个数等分为k部分,每个部分当成一个分箱。
当分完箱之后,可以使用箱均值平滑,箱中位数平滑或箱边界平滑的方法来平滑噪声。
箱均值平滑:箱中的每一个值都被箱的平均值替换。
箱中位数平滑:箱中的每一个值都被箱的中位数提花。
箱边界平滑:箱中的最大值和最小值作为箱边界,箱中的每一个值都被最近的边界值替换。
如果数据倾斜分布,等宽分箱的每一个箱子个数差别会很大。所以等宽分箱不好处理倾斜数据。
一个实例如下:
一组观测值:8,9,30,24,10,15,24,7,28。
从小到大排序:7,8,9,10,15,24,24,28,30。
采用等深(等频)分箱将该组分为3箱:
箱1(7,8,9),箱2(10,15,24),箱3(24,28,30)
采用箱均值平滑:箱1:(8,8,8)
采用箱中值平滑:箱2:(15,15,15)
采用箱边界平滑:箱3:(24,24,30)
2.回归
用一个函数拟合数据来光滑数据,这种技术称为回归。
3.离群点分析
在样本空间中,与其他样本点的一般行为或特征不一致的点称为离群点。使用聚类方法来检测离群点。相似点聚成簇,在簇外的点视为离群点。
二、数据集成
将多个数据源中的数据结合起来存放在一个一致的数据存储中。
1.异常数据:
2.冗余数据:冗余属性可以通过相关分析进行检测
3.重复数据
三、数据规约
得到数据集的简化版本,但同时又不会影响数据分析的结果。
包括维归约,数量归约,数据压缩。
维归约:减小样本空间中所包含的属性个数,其方法包括小波变换,主成分分析,属性选择。前两种把原数据变换或投影到维数较小的样本空间。而后者是通过相关性分析方法,检测样本空间中不相关,弱相关或冗余的属性或维度,然后删除。
数量规约:用替代的,较小的数据集表示形式替换原始数据集。包括非参数方法和参数方法。
参数方法:对数据集拟合一个模型,只需要存储模型参数。
非参数方法:直方图,聚类,抽样等等。
数据压缩:使用不同变换方法得到原数据的压缩形式。如果能够从压缩后的数据重构原始数据,而且没有损失信息,则称为无损压缩,哈夫曼算法。如果只能近似重构,则称为有损压缩。
四、数据转换
将数据格式统一,使得挖掘过程更有效。主要方法包括规范化和离散化。
1.数据规范化:将数据按照比例缩放,使之落入一个特定的区间。
最大-最小规范:
其中minA和maxA是属性A的最小值和最大值,new_maxA和new_minA
是映射的到新区间的最大值和最小值。该方法容易受到离群点影响。
z-socre规范化:
这种方法基于属性的均值和标准差来进行规范化。可以避免离群点的影响。
小数定标规范化:
例如对于salary属性,其最大值为135000,所以使用小数定标规范化时,每个属性值除以1 000 000(即j = 6),对id为1的实体属性salary进行小数定标规范化,57000 / 1 000 000 = 0.057
2.数据离散化:
将连续性数据切分为若干段。
为什么要离散化?
(1)算法输入数据的需要,决策树,朴素贝叶斯等算法不能直接使用连续性数据,只有经过离散化之后才能处理。
(2)消除极端数据的影响。离散化可以有效克服数据中隐藏的缺陷,可以有效降低离群点和噪声的影响。
离散化的方法有等距离散化,等频离散化。