概念
归一化就是把所有数据都转化成[0,1]或者[-1,1]之间的数,其目的是为了取消各维数据之间的数量级差别,避免因为输入输出数据数量级差别大而造成网络预测误差过大。
好处
归一化有如下好处,即
1)归一化后加快了梯度下降求最优解的速度,也即加快训练网络的收敛性;
2)归一化有可能提高精度
归一化的对比
归一化的目的就是使得预处理的数据被限定在一定的范围内(比如[0,1]或者[-1,1]),从而消除奇异样本数据导致的不良影响。如图里的数据X6
奇异样本数据
奇异样本数据的存在会引起训练时间增大,同时也可能导致无法收敛,因此,当存在奇异样本数据时,在进行训练之前需要对预处理数据进行归一化;反之,不存在奇异样本数据时,则可以不进行归一化。
归一化的类型
1:线性归一化
线性归一化也被称为最小-最大规范化;离散标准化,是对原始数据的线性变换,将数据值映射到[0,1]之间。
def MaxMinNormalization(x,Max,Min):
x = (x - Min) / (Max - Min);
return x
2:零-均值归一化(Z-score标准化)
Z-score标准化也被称为标准差标准化,经过处理的数据的均值为0,标准差为1。其转化公式为:
其中u为原始数据的均值,delta为原始数据的标准差,是当前用的最多的标准化公式
def Z_ScoreNormalization(x,mu,sigma):
x = (x - mu) / sigma;
return x
3:非线性归一化
这个方法包括log,指数,正切
适用范围:经常用在数据分析比较大的场景,有些数值很大,有些很小,将原始值进行映射。