【机器学习】为何要归一化和归一化,标准化的处理方法

为何要归一化

·提升模型的收敛速度

如下图,观察x1,x2的取值范围,x1的范围比x2的范围不是一个对等的量级,得到的曲线会比较尖锐,假如只有这两个特征,对其进行优化时,会得到一个窄长的椭圆形,导致在梯度下降时,梯度的方向为垂直等高线的方向而走之字形路线,所以就会使迭代的次数增加;而相比之下,经过归一化处理,x1,和x2的范围都是(0-1)之间,所以得到一个似圆状等高线,曲线变得平缓,所以右图的迭代就会很快, 因为少走了“弯路”。【机器学习】为何要归一化和归一化,标准化的处理方法

·提升模型的精度

归一化的可以提高模型精度,这在涉及到一些距离计算的算法时效果显著,比如要计算欧氏距离的算法,如上图的例子中,x2的取值范围比较小,涉及到距离计算时其对结果的影响远比x1带来的小,所以这就会造成精度的损失。所以归一化很有必要,他可以让各个特征对结果做出的贡献相同。具体如下图:
【机器学习】为何要归一化和归一化,标准化的处理方法
给出欧几里得距离计算公式,当要计算一个实际值(x1’fact, x2’fact)与模型中的(x1’dataset, x2’dataset)时,因为x1的范围与x2的范围不对等,会得到下面一个关系【机器学习】为何要归一化和归一化,标准化的处理方法
①为x1的变化②为x2的变化,①∈(0, 2000)②∈(0 4), 当①∈(0, 4),则在欧式公式中,x1,x2的两个特征的权值分配就会相对平均,而当①∈(0, 2000),可以看出,即使当②变化很大,欧式距离都会极大程度的取决于①的变化,当各指标间的水平相差很大时,如果直接用原始指标值进行分析,就会突出数值较高的指标在综合分析中的作用,相对削弱数值水平较低指标的作用。

·总结

所以在数据分析之前,我们通常需要先将数据标准化(normalization),利用标准化后的数据进行数据分析。数据标准化也就是统计数据的指数化。数据标准化处理主要包括数据同趋化处理和无量纲化处理两个方面。数据同趋化处理主要解决不同性质数据问题,对不同性质指标直接加总不能正确反映不同作用力的综合结果,须先考虑改变逆指标数据性质,使所有指标对测评方案的作用力同趋化,再加总才能得出正确结果。数据无量纲化处理主要解决数据的可比性。经过上述标准化处理,原始数据均转换为无量纲化指标测评值,即各指标值都处于同一个数量级别上,可以进行综合测评分析。
归一化是让不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。并且深度学习中数据归一化可以防止模型梯度爆炸。
应用场景:

  1. 概率模型不需要归一化,因为这种模型不关心变量的取值,而是关心变量的分布和变量之间的条件概率;
  2. SVM、线性回归之类的最优化问题需要归一化,是否归一化主要在于是否关心变量取值;
  3. 神经网络需要标准化处理,一般变量的取值在-1到1之间,这样做是为了弱化某些变量的值较大而对模型产生影响。一般神经网络中的隐藏层采用tanh**函数比sigmod**函数要好些,因为tanh双曲正切函数的取值[-1,1]之间,均值为0.
  4. 在K近邻算法中,如果不对解释变量进行标准化,那么具有小数量级的特征变量的影响就会微乎其微。

如何归一化和标准化

min-max(0-1) 标准化

min-max标准化(Min-max normalization) / 0-1标准化(0-1 normalization) / 线性函数归一化 / 离差标准化这些名字都是一样的原理。是对原始数据的线性变换,使结果落到[0,1]区间,转换函数如下:
【机器学习】为何要归一化和归一化,标准化的处理方法,其中max为样本数据的最大值,min为样本数据的最小值,x为实际输入值,x*为标准化后的值。
这种方法适用于max,min比较稳定的情况下使用,意思也就是说x∈[max, min]的情况。因为当x>max或x<min时,对应的分母值就已经变化了。
在实际上,可以通过人为的定义各个维度的数值的max和min使用。通过设置比原来数据集大一点的max和小一点的min对输入数据进行兼容。

z-score(标准差) 标准化

z-score 标准化也叫标准差标准化,这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。
经过处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为:

x* = (x - μ ) / σ

其中μ为所有样本数据的均值,σ为所有样本数据的标准差。
z-score标准化方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。该种归一化方式要求原始数据的分布可以近似为高斯分布(正态分布),否则归一化的效果会变得很糟糕。在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,Z-score standardization表现更好。

标准化的公式很简单,步骤如下

1.求出各变量(指标)的算术平均值(数学期望)μ和标准差σ ;
2.进行标准化处理:

x* = (x - μ ) / σ

其中:x*为标准化后的变量值;x为实际变量值。
3.将逆指标前的正负号对调。
标准化后的变量值围绕0上下波动,大于0说明高于平均水平,小于0说明低于平均水平。

nonlinearity(非线性) 归一化

非线性归一化方法经常用在数据分化比较大的场景,有些数值很大,有些很小。通过一些数学函数,将原始值进行映射。
该方法包括 log,正切等,需要根据数据分布的情况,决定非线性函数的曲线:

  • log对数函数转换方法
    y = log10(x),即以10为底的对数转换函数,对应的归一化方法为:x*= log10(x) /log10(max),其中max表示样本数据的最大值,x’为标准化后值,x为输入值,并且所有样本数据均要大于等于1.
  • arctan反正切函数转换方法
    利用反正切函数可以实现数据的归一化,即
    x*= arctan(x)*(2/pi)
    使用这个方法需要注意的是如果想映射的区间为[0,1],则数据都应该大于等于0,小于0的数据将被映射到[-1,0]区间上.
  • L2范数归一化方法
    L2范数归一化就是特征向量中每个元素均除以向量的L2范数:
    【机器学习】为何要归一化和归一化,标准化的处理方法

参考博客:
https://blog.csdn.net/weixin_38313518/article/details/79950654
https://blog.csdn.net/u011089523/article/details/80198312