标准化
标准化的方法是只用大数定理将数据转化为一个标准正态分布,标准化公式为:
其中xi是输入向量X的第i个特征,μi是所有xi的平均值,δi是这个特征的标准差。其称为Z-score 标准化(zero-mean normalization),也叫标准差标准化,经过 Z-score 标准化后,各变量将有约一半观察值的数值小于0,另一半观察值的数值大于0,变量的均值为0,标准差为1。如果特征非常稀疏,并且有大量的0(现实应用中很多特征都具有这个特点),Z-score 标准化的过程几乎就是一个除0的过程,结果不可预料。
我们注意看公式,可以发现经过标准化处理后,xi将不带量纲,这样就可以解决不同特征向量的不同特征因为量纲不同而导致诸多不合理的问题。
另外,使用标准化也特别合理,根据大数定理,当样本量达到一定数目后都可以把他们看做是正态分布了。而很多网络模型对标准正态的数据是及其敏感的,所以标准化后的数据十分利于训练。
注意 标准化后的结果,各个分量的值域是R。
归一化
归一化的目标是找到某种映射关系,将原数据映射到[a,b]区间上。一般a,b会取[-1,1],[0,1]这些组合。
一般归一化的方法有:
mean-max归一化:映射到[-1,1]
min-max 归一化:映射到 [0,1]
归一化的缺点是,它会丢失一些信息,特别对于那些异常的点。
应用场景说明:
1)概率模型不需要归一化,因为这种模型不关心变量的取值,而是关心变量的分布和变量之间的条件概率;
2)SVM、线性回归之类的最优化问题需要归一化,是否归一化主要在于是否关心变量取值;
3)神经网络需要归一化处理,一般变量的取值在-1到1之间,这样做是为了弱化某些变量的值较大而对模型产生影响。一般神经网络中的隐藏层采用tanh激活函数比sigmod激活函数要好些,因为tanh双曲正切函数的取值[-1,1]之间,均值为0;
4)在K近邻算法中,如果不对解释变量(x)进行归一化,那么具有小数量级的解释变量的影响就会微乎其微。