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

Normalization和Standardization的区别

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

Normalization:

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

x1 x2
1985 1
1874 3
1600 5

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

在这里插入图片描述

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

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

常用的归一化方法如下:

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

    x = x x m i n x m a x x m i n x' = \frac{x - x_{min}}{x_{max}-x_{min}}

  • 对数归一化(非线性):
    x = l o g 10 ( x ) l o g 10 ( x m a x ) 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]。

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

发布了118 篇原创文章 · 获赞 140 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/tjuyanming/article/details/90041546