笔记: 常用数据预处理总结
数据清理
- 主要使将数据中缺失的值补充完整、消除噪声数据、识别和删除离群点并解决不一致性。
- 主要达到目标是:将数据格式标准化、异常数据清楚、错误纠正、重复数据的清楚
1.异常数据处理
寻找异常数据:
- 使用统计量进行判断:设有一个合理的范围,如果某个数据远远的超出其它数据,那么这个数据或者这些个数据就有可能是异常值。
- 使用3&原则,根据正态分布的定义,距离平均值3&以外的数值出现属于小概率事件,因此异常值可以看成那些数据和平均值的偏差超过3倍标准差的值。
- 使用箱型图判断,超过箱型图的上界或者下界就认为是异常数据。
异常数据的处理方法:
- 删除异常数据的纪录
- 视为缺失值,按照处理缺失值的方法进行处理。
- 平均值纠正,使用前后两个观测值的平均值进行纠正 或者使用整个数据集的平均值进行纠正。
2.缺失值处理
处理缺失值的方法思想一般有:忽略存在缺失值数据的记录、去掉包含缺失数据的属性、手工填写缺失值、使用默认值代替、使用属性值代替、
使用属性平均值(中位数或众数)代替、使用同类样本平均值代替、预测最可能的值代替。一般使用数据补插方法来代替缺失值,有以下几种:
- 最近邻补插:使用含有缺失值的样本附近的其它样本数据代替;或者前后数据的平均值代替。
- 回归方法:对含有缺失值的属性,使用其它样本该属性的值建立拟合模型,然后使用该模型预测缺失值。
- 插值法:和回归法类似,使用已知数据建立合适的插值函数,缺失值使用该函数计算出近似值代替。常见的插值函数有:拉格朗日插值法、牛顿插值法、分段插值法、Hermite插值法等。
3.噪声数据的处理—【一般有分箱、聚类、回归、小波等】
分箱
分箱就是把数据(某列属性值)按照一定的规则放进一些箱子(箱子指的是区间),采用某种方法分别对各个箱子中的数据进行处理。面临的问题是如何分箱子以及如何对每个箱子的数据进行平滑处理?
如何分箱子:
- 等深分箱法:也称为统一权重法,将数据集按记录行数分箱,每箱子具有相同的记录数,每箱记录数成为箱子的深度,即固定每次箱子的数据个数。
- 等宽分箱法:也称为统一区间法,使数据集在整个区间上平均分布,即每个箱子的区间范围是一个常量,称为箱子宽度;【比如设置宽度为1000,将1001000分为一组,20003000分为一组,3000~4000内的数据由又分为一组。】
- 自定义区间:根据需要自定义区间。
如何对箱子的数据进行平滑处理:
- 按平均值进行平滑: 对同一个箱子中的数据求平均值,用平均值替代该箱子中的所有数据。
- 按边界值平滑: 用距离较小的边界值替代箱中的每一个数据。
- 按中值平滑: 取箱子的中值来替代箱子中的所有数据。
聚类
将数据的集合分组为 由类似的对象 组成的多个类,然后找出并清除那些落在簇之外的值(孤立点),这些孤立点被视为噪声数据。其中可以用一些聚类算法来进行任务。
回归
试图发现两个相关的变量之间的变化模式,通过使数据适合一个函数来进行平滑数据,即通过建立数学模型来预测下一个数值,采用的方法一般包括线性回归和非线性回归。
数据集成
- 主要是讲多个数据源中的数据进行整合并统一存储。
数据集成一般需要考虑以下几个问题:
实体识别: 主要指数据来源不同,其中的概念不一样,主要有以下几种情况:
- 同名异义:数据源A的某个数据特征的名称和数据源B的某个数据特征的名称一样,但表示的内容不一样。
- 异名同义: 与以上相反。
- 单位不统一:指不同的数据源记录的单位不一样。
冗余属性:指数据中存在冗余,一般分为以下几种情况:
- 同一属性多次出现
- 同一属性命名不一致而引起的数据重复。
数据不一致:编码使用的不一致 和 数据表示的不一致问题
数据变换
- 主要是指通过平滑聚集、数据概化、规范化等方式将数据转换成适用于数据挖掘的形式。
1.使用简单的数学函数对数据进行变换
- 对采集的原始数据进行各种简单的数学函数进行转换,常见的函数包括平方、开方、取对数、差分运算等
- 具体使用哪一种函数取决于数据和应用的场景。例如:数据较大时可以取对数或开方将数据压缩变小;如果数据较小时可以使用平方扩大数据;在时间序列分析中一般使用对数变换或差分运算将非平稳序列 转换为 平稳序列。
2.归一化
数据归一化(又称数据规范化),主要用于消除数据之间的量纲影响。列举几种:
- 最小-最大 归一化法:也称为离差标准化,对原数据进行线性变化,将其值映射到[0,1]之间。X’ = (X-min(X)) / (max(X)-min(X)),X为需要归一化的数据,缺点是当有新数据加入时需要重新定义,可能导致和的变化。
- Z-score标准化法: 称零-均值规范化方法,该法使用原始数据的均值和标准差对数据实施标准化,经过处理的数据符合标准正态分布,即均值为0标准差为1。转换函数为:新数据=(原数据-均值)/标准差,即 X’ = ( X-u )/ q ,其中u是全体样本数据的均值,q为标准差;该法要求原始数据的分布近似为高斯分布,否则将很糟糕。
- 小数定标规范化:其实就是把数据缩小或者放大,即移动数据的小数点位置来实现。
3.连续属性离散化
数据离散化本质上是将连续的属性空间划分为若干个区间,最后用不同的符号或整数值代替每个子区间的数据。有两个事情需要做:确定分类及将连续属性值映射到这些分类值。
- 等宽法:把数据划分为具有相同宽度的区间,区间数据的范围事先指定,然后将数据按照其值分配到不同区间中,每个区间用一个数据值或者符号表示,每个区间的数据个数不一定相等。
- 等频法: 把数据划分为若干个区间,将数据按照其值划分到区间上,每个区间的数据个数是相等的。
- 基于聚类的方法:使用经典的K-means方法或者其它方法划分数据集;K-means首先从数据集中随机找出K个数据作为K个聚类的中心,其次根据其它数据相对于这些中心的距离,对所有的对象聚类:如果数据x距某个中心最近则将x划归为该中心所代表的聚类,每分好一个数之后都要重新计算各区间的中心,并利用新的中心重新聚类所有样本。逐步循环,直到所有区间的中心不再随算法循环而改变。
4.基于熵的离散化方法
5.基于小波的特征提取方法
6.自上而下的卡方分裂算法
后面这三种日后再学习一下,欢迎评论一起学习。
数据归约
- 主要是对数据集进行归约或简化,不仅保持原数据的完整性,并且数据归约后的结果与归约前的结果几乎相同或者相同。
维归约
维归约(也称特征归约),是指通过减少属性特征的方式压缩数据量,通过移除不相关的属性,可以提高模型效率。例如:
- AIC准则可以通过选择最优模型来选择属性;LASSO通过一定约束条件选择变量;分类树、随机森林通过对分类效果的影响大小筛选属性;小波变换、主成分分析通过把原数据转换或投影到较小的空间来降低维度。
数值归约
数值归约(也称样本归约):就是从数据集中选出一个有代表性的样本的子集,子集大小的确定要考虑计算成本、存储要求、估计量的精度以及其它一些与算法和数据特性有关的因素。例如:
- 参数方法中使用模型估计数据,就可以只存放模型参数代替存放实际数据(如回归模型和对数线性模型都可以用来进行参数化数据归约);对于非参数化方法,可以使用聚类、抽样、直方图、数据立方体等措施。
另外:
特征编码:
(1)特征二元化
特征二元化的过程是将数值型的属性转换为布尔值的属性,设定一个阈值作为划分属性值为0和1的分隔点,类似树的分割。
(2)独热编码(One-HotEncoding)
独热编码采用N位状态寄存器来对N个可能的取值进行编码,每个状态都由独立的寄存器来表示,并且在任意时刻只有其中一位有效,其实就是将属性映射到高维空间。举个例子:
某个x属性下有4个离散变量: A、B、C、D,x每次可能取其中一个,那么独热编码则的对应关系: A: 1000,B:0100,C:0010,D:0001。