0.数据预处理概述
机器如果要学习,首先要获取外部数据,并将这些外部数据输入算法,进行不断地学习以提高自身性能。
也就是说,机器学习是从数据出发的,没有数据,机器也就没办法学到任何技能,所以数据是必须的。
1.数据清理
主要是将数据中缺失的值补充完整、消除噪声数据、识别或删除离群点并解决不一致性。主要达到的目标是:将数据格式标准化、异常数据清除、错误纠正、重复数据的清除。
1.1异常数据处理
异常数据也称离群点,指采集的数据中,个别值的数据明显偏离其余的观测值。
例如,测量小学五年级学生的身高数据,其中一部分数据如下:
(
1.35
,
1.40
,
1.42
,
1.38
,
1.43
,
1.40
)
(1.35,1.40,1.42,1.38,1.43,1.40)
(1.35,1.40,1.42,1.38,1.43,1.40)
上面这组数据符合小学五年级学生的身高。
但是,如果数据中存在下面一组数据:
(
1.35
,
1.40
,
1.42
,
13.8
,
1.43
,
1.40
)
(1.35,1.40,1.42,13.8,1.43,1.40)
(1.35,1.40,1.42,13.8,1.43,1.40)
其中第4个数据为13.8,这个数据明显是不可能的,其原因或者是输入错误,或者是测量错误,因为这个数据远远偏离正常数据,因此需要度这类数据进行相应地处理。如果对这些数据不采用一定的方法消除,对结果将产生较坏的影响。
1.异常数据分析
在处理异常数据之前,首先需要对异常数据进行分析,常见的分析方法如下。
(1)使用统计量进行判断:可以对该数据计算出最大值、最小值、及平均值,来检查某个数据是否超出合理的范围。
例如,上面的身高数据如果远超出正常数据,那么就可以认为是异常数据。
统计量
从样本推断总体通常是通过统计量进行的。
例如, x 1 , x 2 , … , x n x_1,x_2,…,x_n x1,x2,…,xn是从正态总体 N ( μ , 1 ) N(μ,1) N(μ,1)中抽出的简单随机样本,其中均值 μ μ μ是未知的,为了对 μ μ μ作出推断,计算样本均值。可以证明,在一定意义下,样本中有关 μ μ μ的全部信息,因而能对 μ μ μ作出良好的推断。这里只依赖于样本 x 1 , x 2 , … , x n x_1,x_2,…,x_n x1,x2,…,xn,是一个统计量。
(2)使用 3 σ 3\sigma 3σ原则:根据正态分布的定义,距离平均值 3 σ 3\sigma 3σ以外的数值出现属于小概率事件,此时,异常值可以看成那些数据和平均值的偏差超过3倍标准差的值。
2. 异常数据处理方法
当数据中存在异常数据时,应根据情况来确定是否需要对这些数据进行处理。经常使用的方法如下。
(1)删除有异常数据的记录:直接把存在的异常数据删除,不进行考虑。
(2)视为缺失值:将异常数据看成是缺失值,按照缺失值的处理方法进行相应地操作。
(3)平均值修正:使用前后两个观测值的平均值代替,或者使用整个数据集的平均值代替。
(4)不处理:将异常数据当成正常数据进行操作。
1.2 缺失值处理
数据缺失是指所记录的数据由于某些原因使得部分数据丢失,如,采集测量小学五年级学生的身高数据,其中一部分数据如下:
(
1.35
,
1.40
,
1.42
,
∗
∗
∗
,
1.43
,
1.40
)
(1.35,1.40,1.42,***,1.43,1.40)
(1.35,1.40,1.42,∗∗∗,1.43,1.40)
如上所示,第四名同学由于测量时没有到校,缺少该同学的数据。那么到统计全班同学的身高数据时,这名没有测量的同学的身高数据如何处理呢?是不考虑这名同学的数据,还是采用一些方法取近似数据呢?
上面介绍了数据缺失的情况,产生数据缺失的原因多种多样,主要有以下几个:
(1)部分信息因为不确定的原因暂时无法获取
(2)有些信息虽然记录了,但是由于保存不当,部分丢失。
(3)由于采集信息工作人员工作疏忽,漏记某些数据。
如果数据中存在缺失值,对机器学习的效果会产生一定的影响,特别是丢失的数据如果非常重要,那么机器学习的效果会很差,所得到的模型参数也不准确。因此,如果数据中存在缺失的情况,应采取措施进行处理。
处理缺失值的方法很多,如忽略存在缺失数据的记录、去掉包含缺失数据的属性、手工填写缺失值、使用默认值代替缺失值
使用属性平均值(中位数或众数)代替缺失值、使用同类样本平均值代替缺失值,预测最可能的值代替缺失值等。
其中,经常使用数据补插方法来代替缺失值,这些方法又可以细分为以下几种。
(1)最近邻补插:使用含有缺失值的样本附近的其他样本的数据替代;或者前后数据的平均值替代等。
(2)回归方法:对含有缺失值的属性,使用其他样本该属性的值建立拟合模型,然后使用该模型预测缺失值。
(3)插值法:和回归法类似,该方法使用已知数据建立合适的插值函数,缺失值使用该函数计算出近似值代替。常见的插值函数有拉格朗日插值法、牛顿插值法、分段插值法、样条插值法、Hermite插值法。
1.3 噪声数据处理
噪声无处不在,即使非常精密的仪器在测量时,也存在或大或小的噪声。同样,噪声对学习的影响也有大有小,这取决于噪声相比真实数据的比例,也取决于学习的精度要求。
2.数据集成
主要是将多个数据源中的数据进行整合并统一存储。
3. 数据变换
数据变换是指将数据转换或统一成适合机器学习的形式。主要是指通过平滑聚集,数据概化、规范化等方式将数据转化成适用于数据挖掘的形式。
就像人类学习一样,需要将采集的外部数据转换成可以接受的形式,如医院的老中医具有很高深医学知识,然而他们不会使用计算机,也不擅长将他们所掌握的知识写成书籍,这就需要有专门的人员和老中医一起生活工作,把他的经验总结成他人易于接受的书本知识,菜可以使用老中医的技术传承下去。
同样,外部的声音信息要转换成计算机可识别的信息,首先需要进行声电转换,再转换成计算机可识别的二进制数据。
由于实际过程中采集的各种数据,形式多种多样,格式也不一致,这些都需要进行一定的数据预处理 ,使他们符合机器学习的算法使用。
- 使用简单的数学函数对数据进行变换
对采集的原始数据使用各种简单的数学函数进行变换,常见的函数包括平方、开方、取对数、差分运算等。
当然,具体使用哪一种数学函数也取决于数据和应用的场景。例如,如果数据较大,可以取对数或开放将数据压缩变小;如果数据较小可以使用平方扩大数据。在时间序列分析中,经常使用对数变换或差分运算将非平稳序列转换为平稳序列。 - 归一化
归一化又称为数据规范化,是在机器学习中数据预处理经常使用的方法,主要用于消除数据间的量纲影响。这是因为数据采集过程中,不同的数据值有可能差别很大,有时甚至具有不同的量纲,如比较工资收入,有的人每月工资上万元,有的人每月工资才几百元,如果这些数据不进行调整有可能影响数据分析的结果,因此需要进行归一化处理,将数据落入一个有限的范围,常见的归一化将数据调整到 [ 0 , 1 ] [0,1] [0,1]或 [ 1 , − 1 ] [1,-1] [1,−1]范围内。
(1)最小—最大归一化
最小—最大归一化,也称为离差标准化,是对原始数据进行线性变换,使其值映射到 [ 0 , 1 ] [0,1] [0,1]之间,转换函数如下:
X ′ = X − X m i n X m a x − X m i n X'=\frac{X-X_{min}}{X_{max}-X_{min}} X′=Xmax−XminX−Xmin
式子中,X为需要归一化的数据; X m a x X_{max} Xmax为全体样本数据的最大值; X m i n X_{min} Xmin为全体样本数据的最小值。
这种方法的缺陷就是当有新数据加入时候,可能导致和的变化,需要重新定义。
(2)Z-score标准化方法
Z-score标准化方法,标准化方法也称为零–均值规范化方法,这种方法使用原始数据的均值(mean)和标准差(Standard Deviation)对数据实施标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1,转换函数为:
X
′
=
X
−
μ
σ
X'=\frac{X-\mu}{\sigma}
X′=σX−μ
式中,X是全体样本数据的均值;
μ
\mu
μ是全体样本数据的标准差。
Z-score标准化归一化方式要求原始数据的分布可以近似为高斯分布,否则,归一化的效果会变得很糟糕。
4. 数据归约
数据挖掘时往往数据量非常大,因此在少量数据上进行挖掘分析就需要很长的时间,数据规约是指在尽可能保持数据原貌的前提下,最大限度地精简数据量,它接近保持原数据地完整性,但数据量比原数据小得多,与非归约数据相比,在归约的数据上进行挖掘,所需的时间和内存资源更少,挖掘将更有效,并产生相同或几乎相同的分析结果。
常用维归约、数值归约等方法实现。
- 维归约
也称为特征归约,是指通过减少属性特征的方式压缩数据量,通过移除不相关的属性,可以提高模型效率。维归约的方法很多。
例如,AIC准则可以通过选择最优模型选择属性;LASSO通过一定约束条件选择变量;分类树、随机森林通过分类效果影响大小筛选属性;小波变换、主成分分析通过把原数据变换或投影到较小的空间来降低维数。
- 数值归约
也称样本归约,样本归约就是从数据集中选出一个有代表性的样本的子集。子集大小的确定要考虑计算成本、存储要求、估计量的精度以及其他一些与算法和数据特性有关的因素。
例如,参数方法中使用模型估计数据,就可以只存放模型参数代替存放实际数据,如回归模型和对数线性模型都可以用来进行参数化数据归约。对于非参数方法,可以使用直方图、聚类、抽样和数立方体聚集为方法。
本篇文章是龙马高新教育出版的《Python3数据分析与机器学习实战》的笔记,为了防止自己遗忘。