概述
数据的归一化和标准化是 特征缩放(feature scaling) 的方法,是数据预处理的关键步骤。不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据归一化/标准化处理,以解决数据指标之间的可比性。原始数据经过数据归一化/标准化处理后,各指标处于同一数量级,适合进行综合对比评价。
归一化/标准化实质是一种 线性变换 ,线性变换有很多良好的性质,这些性质决定了对数据改变后不会造成“失效”,反而能提高数据的表现,这些性质是归一化/标准化的前提。比如有一个很重要的性质:线性变换不会改变原始数据的数值排序。
归一化(MinMax)
什么是归一化
归一化是利用特征(可理解为某个数据集合)的最大值,最小值,将特征的值缩放到[0,1]区间,对于每一列的特征使用min - max函数进行缩放。
为什么需要归一化
消除纲量,加快收敛:
不同特征往往具有不同的量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据归一化处理,以解决数据指标之间的可比性。原始数据经过数据归一化处理后,各指标处于[0,1]之间的小数,适合进行综合对比评价。
提高精度。
归一化的方法
标准化(Standard)
什么是标准化
标准化是 通过特征的平均值和标准差,将特征缩放成一个标准的正态分布,缩放后均值为0,方差为1 。但即使数据不服从正态分布,也可以用此法。特别适用于数据的最大值和最小值未知,或存在孤立点。
为什么要标准化
- 标准化是为了方便数据的下一步处理,而进行的数据缩放等变换,不同于归一化, 并不是为了方便与其他数据一同处理或比较 。
- 标准化后的变量值围绕0上下波动,大于0说明高于平均水平,小于0说明低于平均水平。
标准化的方法
Z-score (标准化):
这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合 标准正态分布 ,即均值为0,标准差为1,转化函数为:
此外,标准化后的数据 保持异常值中的有用信息 ,使得算法对异常值不太敏感,这一点归一化就无法保证。
归一化和标准化的异同
区别
归一化是将样本的特征值转换到同一量纲下把数据映射到[0,1]或者[-1, 1]区间内,仅由变量的极值决定,因区间放缩法是归一化的一种。
标准化是依照特征矩阵的列处理数据,其通过求z-score的方法,转换为标准正态分布,和整体样本分布相关,每个样本点都能对标准化产生影响。
相同
它们的相同点在于都能取消由于量纲不同引起的误差;都是一种线性变换,都是对向量X按照比例压缩再进行平移。
归一化和标准化的对比分析
首先明确,在机器学习中,标准化是更常用的手段,归一化的应用场景是有限的。我总结原因有两点:
- 标准化更好保持了样本间距。当样本中有异常点时, 归一化有可能将正常的样本“挤”到一起去。比如三个样本,某个特征的值为1,2,10000,假设10000这个值是异常值,用归一化的方法后,正常的1,2就会被“挤”到一起去 。如果不幸的是1和2的分类标签还是相反的,那么,当我们用梯度下降来做分类模型训练时,模型会需要更长的时间收敛,因为将样本分开需要更大的努力!而标准化在这方面就做得很好,至少它不会将样本“挤到一起”。
- 标准化更符合统计学假设 对一个数值特征来说, 很大可能它是服从正态分布的。标准化其实是基于这个隐含假设, 只不过是略施小技,将这个正态分布调整为均值为0,方差为1的标准正态分布而已。
归一化和标准化的适用场景
- 数据的分布本身就服从 正态分布 ,使用Z-Score。
- 有离群值的情况:使用Z-Score。 这里不是说有离群值时使用Z-Score不受影响,而是,Min-Max对于离群值十分敏感,因为离群值的出现,会影响数据中max或min值,从而使Min-Max的效果很差。相比之下,虽然使用Z-Score计算方差和均值的时候仍然会受到离群值的影响,但是相比于Min-Max法,影响会小一点。
- 如果对输出结果 范围有要求 ,用归一化。
- 如果数据较为稳定,不存在极端的最大最小值,用归一化。
- 如果数据存在异常值和较多噪音,用标准化,可以间接通过中心化避免异常值和极端值的影响。