数据的标准化和归一化问题

数据归一化


引入归一化,是由于在不同评价指标(特征指标)中,其量纲或是量纲单位往往不同,变化区间处于不同的数量级,若不进行归一化,可能导致某些指标被忽视,影响到数据分析的结果。为了消除特征数据之间的量纲影响,需要进行归一化处理,以解决特征指标之间的可比性。原始数据经过归一化处理后,各指标处于同一数量级,以便进行综合对比评价。

数据归一化会使得最优解的寻优过程会变得平缓,更容易正确的收敛到最优解。

数据缩放的本质:

在这个回答下,我们对一维数据的缩放有如下定义:

数据的标准化和归一化问题_第1张图片

可以再稍微变形一下: (公式1

事实上就是对向量 按照比例压缩再进行平移 。所以归一化和标准化的本质就是一种线性变换。

归一化和标准化的区别

归一化:缩放仅仅跟最大、最小值的差别有关。 输出范围在0-1之间

标准化:缩放和每个点都有关系,通过方差(variance)体现出来。与归一化对比,标准化中所有数据点都有贡献(通过均值和标准差造成影响)。输出范围是负无穷到正无穷

什么时候用归一化?什么时候用标准化?

1.如果对输出结果范围有要求,用归一化

2.如果数据较为稳定(图像或是视频的数据值处于固定区间),不存在极端的最大最小值,用归一化

3.如果数据存在异常值和较多噪音,用标准化,可以间接通过中心化避免异常值和极端值的影响


方法:

其中最典型的就是数据的归一化处理,即将数据统一映射到[0,1]区间上,常见的数据归一化的方法有:

min-max标准化(Min-max normalization)

  也叫离差标准化,是对原始数据的线性变换,使结果落到[0,1]区间,转换函数如下:

  其中max为样本数据的最大值,min为样本数据的最小值。这种方法有一个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。

log函数转换

  通过以10为底的log函数转换的方法同样可以实现归一下,具体方法如下:

  看了下网上很多介绍都是x*=log10(x),其实是有问题的,这个结果并非一定落到[0,1]区间上,应该还要除以log10(max),max为样本数据最大值,并且所有的数据都要大于等于1。

atan函数转换

  用反正切函数也可以实现数据的归一化:

  使用这个方法需要注意的是如果想映射的区间为[0,1],则数据都应该大于等于0,小于0的数据将被映射到[-1,0]区间上。

  而并非所有数据标准化的结果都映射到[0,1]区间上,其中最常见的标准化方法就是Z标准化,也是SPSS中最为常用的标准化方法:

z-score 标准化(zero-mean normalization)

  也叫标准差标准化,经过处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为:

  其中μ为所有样本数据的均值,σ为所有样本数据的标准差。


你可能感兴趣的:(机器学习)