机器学习-数据预处理

1、引言

数据预处理的主要任务如下:
(1)数据清理:填写空缺值,平滑噪声数据,识别,删除孤立点,解决不一致性
(2)数据集成:集成多个数据库,数据立方体,文件
(3)数据变换:规范化(消除冗余属性)和聚集(数据汇总),将数据从一个较大的子空间投影到一个较小的子空间
(4)数据归约:得到数据集的压缩表示,量小,但可以得到相近或相同的结果
(5)数据离散化:数据规约的一部分,通过概念分层和数据的离散化来规约数据,对数字型数据比较重要。

2、数据清理

2.1 处理空缺值

处理空缺值的方法主要有:
忽略该记录;
去掉属性;
手工填写空缺值;
使用默认值;
使用属性平均值;
使用同类样本平均值;
预测最可能的值。

2.2 处理噪声数据

处理噪声数据的方法主要有:分箱;聚类;计算机和人工检查结合;回归。

分箱

首先来说一下分箱,大家可能对这个过程比较陌生,分箱方法是一种简单常用的预处理方法,通过考察相邻数据来确定最终值。所谓“分箱”,实际上就是按照属性值划分的子区间,如果一个属性值处于某个子区间范围内,就称把该属性值放进这个子区间所代表的“箱子”内。把待处理的数据(某列属性值)按照一定的规则放进一些箱子中,考察每一个箱子中的数据,采用某种方法分别对各个箱子中的数据进行处理。在采用分箱技术时,需要确定的两个主要问题就是:如何分箱以及如何对每个箱子中的数据进行平滑处理。
分箱的方法:有4种:等深分箱法、等宽分箱法、最小熵法和用户自定义区间法。
统一权重,也成等深分箱法,将数据集按记录行数分箱,每箱具有相同的记录数,每箱记录数称为箱子的深度。这是最简单的一种分箱方法。
统一区间,也称等宽分箱法,使数据集在整个属性值的区间上平均分布,即每个箱的区间范围是一个常量,称为箱子宽度。
用户自定义区间,用户可以根据需要自定义区间,当用户明确希望观察某些区间范围内的数据分布时,使用这种方法可以方便地帮助用户达到目的。

例:客户收入属性income排序后的值(人民币元):800 1000 1200 1500 1500 1800 2000 2300 2500 2800 3000 3500 4000 4500 4800 5000,分箱的结果如下。

统一权重:设定权重(箱子深度)为4,分箱后
箱1:800 1000 1200 1500
箱2:1500 1800 2000 2300
箱3:2500 2800 3000 3500
箱4:4000 4500 4800 5000

统一区间:设定区间范围(箱子宽度)为1000元人民币,分箱后
箱1:800 1000 1200 1500 1500 1800
箱2:2000 2300 2500 2800 3000
箱3:3500 4000 4500
箱4:4800 5000

用户自定义:如将客户收入划分为1000元以下、10002000、20003000、3000~4000和4000元以上几组,分箱后
箱1:800
箱2:1000 1200 1500 1500 1800 2000
箱3:2300 2500 2800 3000
箱4:3500 4000
箱5:4500 4800 5000

分箱之后的数据平滑方法主要有:按平均值平滑、按边界值平滑和按中值平滑。
⑴按平均值平滑
对同一箱值中的数据求平均值,用平均值替代该箱子中的所有数据。
⑵按边界值平滑
用距离较小的边界值替代箱中每一数据。
⑶按中值平滑
取箱子的中值,用来替代箱子中的所有数据。

聚类

将物理的或抽象对象的集合分组为由类似的对象组成的多个类。找出并清除那些落在簇之外的值(孤立点),这些孤立点被视为噪声。

回归

试图发现两个相关的变量之间的变化模式,通过使数据适合一个函数来平滑数据,即通过建立数学模型来预测下一个数值,包括线性回归和非线性回归。

计算机和人工检查结合

计算机检测可疑数据,然后对他们进行人工判断

3、数据集成

将多文件或者多数据库中的异构数据进行合并,然后存放在一个一致的数据存储中。考虑以下几个问题:
1.模式匹配
2.数据冗余
3.数据值冲突

3.1 模式匹配

来自多个数据集合的数据由于在命名上存在差异导致等价的实体具有不同的名称,这给数据集成带来了挑战。怎样才能更好地对来源不同的多个实体进行匹配是摆在数据集成面前的第一个问题,涉及到实体识别问题,主要利用元数据来进行区分。

3.2 数据冗余

集成多个数据库时出现冗余数据的主要原因:同一属性在不同的数据库中会有不同的字段名;一个属性可以由另外一个表导出。
有些冗余可以被相关分析检测到:检测各个属性之间的相关性。
事先根据其元数据或相关性分析对数据进行预处理,就能够减少或避免结果数据中的冗余与不一致性,提高数据挖掘的质量。

3.3 数据值冲突

数据值冲突问题主要表现为来源不同的统一实体具有不同的数据值。

4、数据变换

数据变换涉及以下几个问题:
1.平滑
2.聚集
3.数据概化
4.规范化

4.1 平滑

去掉数据中的噪声,主要有分箱、回归和聚类等方法;

4.2 聚集

数据汇总,数据立方体的构建,数据立方体的计算/物化(一个数据立方体在方体的最底层叫基本方体,基本方体就是已知存在的数据,对现有的数据按照不同维度进行汇总就可以得到不同层次的方体,所有的方体联合起来叫做一个方体的格,也叫数据立方体。数据立方体中所涉及到的计算就是汇总)

4.3 数据概化

使用概念分层的方式,利用高层的概念来替换低层或原始数据;

4.4 规范化

将数据按比例缩放,使这些数据落入到一个较小的特定的区间之内。规范化的三种常用的方式有最大-最小规范化, z分数(z-score)规范化(或零均值规范化)和小数定标规范化。

最大-最小规范化

最小—最大规范化对原始数据进行线性变换。假设和分别为属性A的最大值maxA和最小值minA。最小—最大规范化通过计算:

把A的值映射到区间[new_minA,new_maxA]中。
最小—最大规范化保持原始数据值之间的联系,但是如果今后的输入实例落在A的原数据值域之外,则该方法将面临“越界”错误。

z分数规范化

z分数规范化基于A的均值和标准差对属性值进行规范化:

机器学习-数据预处理_第1张图片

当属性A的实际最小值和最大值未知,或者离群点左右了最小—最大规范化时,该方法是有效的。

小数定标规范化

小数定标规范化通过移动属性A的值的小数点位置进行规范化。小数点的移动位数依赖于A的最大绝对值:

机器学习-数据预处理_第2张图片

5、数据归约

数据归约可以用来得到数据集的归约表示,它小得多,但可以产生相同(或几乎相同的)分析结果。
常见的数据归约策略有:数据立方体聚集、维归约、数据压缩、数值归约。

5.1 数据立方体聚集

数据立方体是根据不同的维度对数据进行汇总,立方体的越顶层,其汇总程度就越高,数据量就越少。对数据的表示就越概化。最底层的方体对应于基本方体,基本方体对应于感兴趣的实体。在数据立方体中存在着不同级别的汇总,数据立方体可以看做方体的格,每一个较高层次的抽象将进一步减少结果数据集。数据立方体提供了对预计算的汇总数据的快速访问,原则是使用与给定任务相关的最小方体,并且在可能的情况下,对于汇总数据的查询应当使用数据立方体。

5.2 维归约

用来检测或删除不相关的或基本不相关的属性或冗余属性或维,来减少数据量。常用的方法:

逐步向前选择

从空属性集开始,每次选择都选择当前属性集中最符合的目标,最好的属性,加到当前的属性集中,这样逐步的向前选择,把有用的属性一个一个的添加进来。

逐步向后删除

从属性全集开始,每次删除还在当前属性集中的最不适合的那个属性,最坏的属性,这样一个一个的删除,最后留下来的就是相关的属性。

向前选择和向后删除相结合

每次选择一个最好的属性,并且删除一个最坏的属性。

判定归纳树

5.3 数据压缩

数据压缩主要通过使用一些编码机制来压缩数据集。分为无损压缩(可以根据压缩之后的数据完整的构造出压缩之前的数据wrar. zip等,如字符串压缩)和有损压缩(无法通过压缩之后的数据来完整的构造出压缩之前的数据,如音频/视频压缩,有时可以在不解压缩整体数据的情况下,重构某个片段,主要应用于流媒体传输)。
两种有损数据压缩的方法:小波变换和主要成分分析

主成分分析

将原数据投影到一个新的空间,通常投影到一个更小的空间(维度减少),而且投影的时候,着力体验更重要的成分。

小波变换

参考:http://book.2cto.com/201210/5892.html

5.4 数值归约

使用较小的,替代的数据来估计,替换,表示原数据(用参数模型):通过选择替代的,较小的数据表示形式来减少数据量。

方法主要有:

有参方法

使用一个参数模型来估计数据,最后只要存储参数即可,有线性回归方法,多元回归,对数线性模型(近似离散的多维数据概率分布)

无参方法

直方图(将某属性的数据划分为不相交的子集或桶,桶中放置该值的出现频率,其中桶和属性值的划分规则有:等深,等宽,V-最优,MaxDiff)

聚类

将数据集划分为聚类,然后通过聚类来表示数据集,如果数据可以组成各种不同的聚类,则该技术非常有效,反之如果数据界线模糊,则该方法无效。数据可以分层聚类,并被存储在多层索引树中)

选样

允许用数据的较小随机样本(子集)表示大的数据集。对数据集D的样本选择方法有:简单随机选择n个样本,不放回(由D的N个元组中抽取n个样本),简单随机选择n个样本,回放(由D的N个元组中抽取n个样本,元组被抽取后将被回放,同一元组可能再次被抽取到),

聚类选样

聚类分析和简单随机选样的结合,D中元组被分入到M个互不相交的聚类中,可以在其中的m个聚类上进行简单随机选样,m

6、数据离散

我们在跑模型的过程中都离不开特征离散的环节,特别是一些连续值范围绝大的特征,不做离散化处理很容易过拟合,在数据特征处理过程中离散可以很好的解决这些问题,包括常知道的分箱处理等频等距。
从数据集的特征按照其取值可以分为连续特征和离散特征。连续特征也称为定量特征,例如人的身高160190cm,年龄1860周岁等等。 离散特征也称定性特征,如性别(男/女)、学历(大专/本/硕/博), 城市(北上广) 等, 此类特征的值域只限定于较少的取值。连续特征的取值允许被排序,可进行算术运算;离散特征的取值有时允许被排序, 但是其不能进行算术运算。

在我们平时做分类预测问题过程中存在着大量的连续特征,基本的年龄、收入、购买频次/登陆次数/消费金额等等。 将连续特征离散化,再将离散化的结果应 用于算法有很多好处。
1 离散化结果将会减少给定连续特征值的个数,减小系统对存储空间的实际需求。
2 离散特征相对于连续特征来说更接近于知识层面的表示。
3 通过离散化,数据被规约和简化,对于使用者和专家来说,离散化的数据都更易于理解,使用和解释。
4 离散化处理使得算法的学习更为准确和迅速。
5 一系列算法只能应用于离散型数据, 使得离散化处理成为必要,而离散化又使很多算法的应用范围扩展了。

但最优离散化问题已经被证明是一个NP-hard问题。 离散化的方法有很多,在这里重点介绍离散化过程和不同的方法论。

6.1 离散化步骤

对连续特征进行离散化处理,一般经过以下步骤:
1 对此特征进行排序。特别是对于大数据集,排序算法的选择要有助于节省时间,提高效率,减少离散化的整个过程的时间开支及复杂度。
2 选择某个点作为候选断点,用所选取的具体的离散化方法的尺度进行衡量此候选断点是否满足要求。
3 若候选断点满足离散化的衡量尺度, 则对数据集进行分裂或合并,再选择下一个候选断点,重复步骤(2)(3)。
4 当离散算法存在停止准则时,如果满足停止准则,则不再进行离散化过程,从而得到最终的离散结果。
关于离散结果的好坏,还是要看模型的效果。

6.2 离散化方法

(1)分箱 binning:分箱技术递归的用于结果划分,可以产生概念分层。
(2)直方图分析 histogram:直方图分析方法递归的应用于每一部分,可以自动产生多级概念分层。
(3)聚类分析:将数据划分成簇,每个簇形成同一概念层上的一个节点,每个簇可再分成多个子簇,形成子节点。
(4)基于熵的离散化(基于统计学的)
(5)通过自然划分分段:将数值区域划分为相对一致的,易于阅读的,看上去更直观或自然的区间。

参考:http://blog.csdn.net/lizhengnanhua/article/details/8982968
http://www.cnblogs.com/zhizhan/p/4676085.html
http://blog.163.com/jw_67/blog/static/13619925620103942348990/
http://www.cnblogs.com/zpfzb2013/p/3936079.html
http://blog.csdn.net/meoop/article/details/40931731
https://zhuanlan.zhihu.com/p/24810288

你可能感兴趣的:(机器学习-数据预处理)