[机器学习与深度学习] - No.4 Normalization和Standardization的区别

Normalization和Standardization的区别

写在前面:Normalization和Standardization在很多时候,很多文章中并不区分,甚至会使用scaling来代替上述两个词。在这里我们针对两种方法,做一些细微的区分。

Normalization:

将我们的数据值的范围限定在[0,1]之间,也就是我们将常说的归一化。在机器学习的算法中,我们经常会遇到这种情况:

x1 x2
1985 1
1874 3
1600 5

某一列数据的值域和另外一列数据值域相差过大,如果我们只用此类的原始数据,在一些机器学习的优化算法,例如梯度下降中,梯度下降的方向如下所示:

[机器学习与深度学习] - No.4 Normalization和Standardization的区别

没有归一化的数据其代价函数看起来像是扁平的碗,同时其梯度下降的方向像是再走“之字形”,迭代很慢。

使用归一化之后的数据,代价函数会看起来很对称,同时训练速度更快,模型精度更高。

常用的归一化方法如下:

  • 最大最小值归一化(线性):

    x=xxminxmaxxmin x' = \frac{x - x_{min}}{x_{max}-x_{min}}

  • 对数归一化(非线性):
    x=log10(x)log10(xmax) x' = \frac{log_{10}{(x)}}{log_{10}{(x_{max})}}

Standardization:

将数据进行正态化,使处理后的数据符合标准正态分布,即均值为0,标准差为1。也就是我们常说的标准化
x=xμδ x' = \frac{x-\mu}{\delta}
其中μ{\mu}是指数据的均值,δ\delta是指数据的标准差。上述公式又被称为Zero-Mean Normalization

总结:
  • 标准化用于调整数据为标准正态分布,归一化用于将数据值域调整为[0,1]。

  • 归一化受最大值,最小值影响;标准化受均值,标准差影响。