归一化(normalization)

归一化又叫标准化,正规化,规范化等等等等,翻译很多,不过英语都是叫normalization.它的意思是将特征数据处理成一组无量纲的,值域在固定的较小空间中的过程.

在统计学中,归一化的具体作用是归纳统一样本的统计分布性.归一化在[0,1]之间是统计的概率分布,归一化在[-1,+1]之间是统计的坐标分布.

针对梯度下降法作为优化算法的情形,归一化可以让优化过程中梯度的变化边平缓.从而加速收敛,更加有利于快速的找到最优解

这边总结了几个常见的标准化方法

min-max标准化(Min-Max Normalization)

在已知特征最大最小值的情况下通过线性的缩放操作除去量纲并缩放到[0,1]区间.

$$ x^{new} = \frac {x-MinValue} {MaxValue-MinValue} $$

Z-score标准化

在样本集固定的情况下将特征标准化后让最终结果满足均值为0,标准差为1的正态分布.

$$ X^{new}=\frac {X-\mu}{\delta} $$

其中$\mu$为均值,$\delta$为标准差

对数函数转换

对数函数适用于数值存在明显量级上差异的度量,如横跨了百、千、万的度量就可以选择Log函数.

$$x^{new}=log10(x)$$

需要注意x的取值范围,x必须为正数,而且一定不能为0,因此一般做这个转化的时候要给一个固定的很小的偏置量(通常取个0.000001)以防止x取到0

$$x^{new}=log10(x+b)$$

反余切函数转换

$$x^{new}=atan(x)\times \frac {2}{\pi}$$

使用这个方法需要注意的是如果想映射的区间为[0,1],则数据都应该大于等于0,小于0的数据将被映射到[-1,0]区间上.

使用sklearn对特征进行归一化

sklearn中的sklearn.preprocessing提供了多个归一化函数用于对特征进行归一化,主要有:

  • minmax_scale(X, feature_range=(0, 1), axis=0, copy=True) min-max标准化
  • maxabs_scale(X, axis=0, copy=True) 最大绝对值标准化,不常用
  • StandardScaler(copy=True, with_mean=True, with_std=True) Z-score标准化,需要训练

In [ ]: