数据归一化和标准化

什么是数据归一化和标准化

数据归一化和标准化主要目的是去除量纲对模型参数的学习与分析的影响。举个例子,有两个特征,一个特征的取值范围是[0,2],另一个特征的取值范围是[0,5],在计算两个特征的距离时,第一个特征从1到2的距离从数值上是小于第二个特征从4到5的距离,但是从占比看第一个特征从1到2跨越了50%而第二个特征从4到5只跨越了25%,显然应该是第一个特征的变化更显著。造成出现上述问题的原因就是不同特征之间的量纲不一致所导致的,所以一种很好的办法就是将每个特征的量纲统一。统一量纲有两种做法,第一种做法是将所有特征的取值范围压缩到[0,1]之间,第二种做法就是将所有特征的分布统一为均值为0方差为1。

压缩取值范围

压缩取值范围就是将取值范围压缩到[0,1]。每个特征的更新计算公示如下:

统一分布

统一分布就是将特征的分布统一为均值为0方差为1。每个特征的更新计算公示如下:

其中$\sigma_x$表示特征$x$的标准差。

为什么要进行数据归一化和标准化

将取值范围压缩到[0,1]或将分布同一为均值为0方差为1,可以避免多层模型的参数学习出现梯度爆炸的情况。在计算特征距离时能够从相对距离考虑而不是绝对距离。当一个模型可以复用但对应的数据集量纲不一样时,将不同数据集的量纲统一为相同取值范围或相同分布,可以实现模型复用且保持较好的效果。在模型参数学习时,不同量纲的特征会得到不同量纲的梯度,在相同的学习率下会导致不同程度的参数更新。在面对大量纲特征需要小量纲参数,小量纲特征需要大量纲参数的情况,或所有特征参数的量纲差不多时,可能会比较难收敛。对数据进行归一化和标准化可以改善模型参数的学习,加快模型参数的收敛。量纲不一致会导致模型参数的变化范围是一个扁长的椭圆,在这个椭圆上参数大概率会随着椭圆走“之”字型往最优参数靠近。而量纲一致能够使得参数的变化范围是一个正圆,在这个正圆上无论是哪个方向都能指着圆心往圆心直线靠近,这样参数也能够更快收敛。