归一化与标准化

做者:无影随想 
时间:2016年1月。 
出处:https://zhaokv.com/machine_learning/2016/01/normalization-and-standardization.html
声明:版权全部,转载请注明出处html

在机器学习和数据挖掘中,常常会听到两个名词:归一化(Normalization)与标准化(Standardization)。它们具体是什么?带来什么益处?具体怎么用?本文来具体讨论这些问题。机器学习

1、是什么

1. 归一化

经常使用的方法是经过对原始数据进行线性变换把数据映射到[0,1]之间,变换函数为:函数

$x'=\frac{x-\min}{\max-\min}$学习

其中$\min$是样本中最小值,$\max$是样本中最大值,注意在数据流场景下最大值与最小值是变化的。另外,最大值与最小值很是容易受异常点影响,因此这种方法鲁棒性较差,只适合传统精确小数据场景。大数据

2. 标准化

经常使用的方法是z-score标准化,通过处理后的数据均值为0,标准差为1,处理方法是:component

$x'=\frac{x-\mu}{\sigma}$orm

其中$\mu$是样本的均值,$\sigma$是样本的标准差,它们能够经过现有样本进行估计。在已有样本足够多的状况下比较稳定,适合现代嘈杂大数据场景。htm

2、带来什么

归一化的依据很是简单,不一样变量每每量纲不一样,归一化能够消除量纲对最终结果的影响,使不一样变量具备可比性。好比两我的体重差10KG,身高差0.02M,在衡量两我的的差异时体重的差距会把身高的差距彻底掩盖,归一化以后就不会有这样的问题。ip

标准化的原理比较复杂,它表示的是原始值与均值之间差多少个标准差,是一个相对值,因此也有去除量纲的功效。同时,它还带来两个附加的好处:均值为0,标准差为1。ci

均值为0有什么好处呢?它可使数据以0为中心左右分布(这不是废话嘛),而数据以0为中心左右分布会带来不少便利。好比在去中心化的数据上作SVD分解等价于在原始数据上作PCA;机器学习中不少函数如SigmoidTanhSoftmax等都以0为中心左右分布(不必定对称)。

标准差为1有什么好处呢?这个更复杂一些。对于$x_i$与$x_{i'}$两点间距离,每每表示为

$D(x_i,x_{i'})=\sum\limits_{j=1}^pw_j\cdot d_j(x_{ij},x_{i'j});\sum\limits_{j=1}^pw_j=1$

其中$d_j(x_{ij},x_{i'j})$是属性$j$两个点之间的距离,$w_j$是该属性间距离在总距离中的权重,注意设$w_j=1,\forall j$并不能实现每一个属性对最后的结果贡献度相同。对于给定的数据集,全部点对间距离的平均值是个定值,即

$\bar{D}=\frac{1}{N^2}\sum\limits_{i=1}^N\sum\limits_{i'=1}^ND(x_i,x_{i'})=\sum\limits_{j=1}^pw_j\cdot \bar{d}_j$

是个常数,其中

$\bar{d}_j=\frac{1}{N^2}\sum\limits_{i=1}^N\sum\limits_{i'=1}^Nd_j(x_{ij}, x_{x'j})$

可见第$j$个变量对最终总体平均距离的影响是$w_j\cdot \bar{d}_j$,因此设$w_j\sim 1/\bar{d}_j$可使全部属性对全数据集平均距离的贡献相同。如今设$d_j$为欧式距离(或称为二范数)的平方,它是最经常使用的距离衡量方法之一,则有

$\bar{d_j}=\frac{1}{N^2}\sum\limits_{i=1}^N\sum\limits_{i'=1}^N(x_{ij}-x_{i'j})^2=2\cdot var_j$

其中$var_j$是$Var(X_j)$的样本估计,也就是说每一个变量的重要程度正比于这个变量在这个数据集上的方差。若是咱们让每一维变量的标准差都为1(即方差都为1),每维变量在计算距离的时候重要程度相同。

3、怎么用

在涉及到计算点与点之间的距离时,使用归一化或标准化都会对最后的结果有所提高,甚至会有质的区别。那在归一化与标准化之间应该如何选择呢?根据上一节咱们看到,若是把全部维度的变量一视同仁,在最后计算距离中发挥相同的做用应该选择标准化,若是想保留原始数据中由标准差所反映的潜在权重关系应该选择归一化。另外,标准化更适合现代嘈杂大数据场景。

相关文章
相关标签/搜索