数据的归一化与标准化

机器学习中常见数据的归一化(normalization)和标准化(standardization),其实这二者的作用和处理方法都很相似,本文作简单介绍。

两者的基本作用是消除不同变量之间量纲的影响,方便数据处理。在机器学习中的作用是:

1. 提高模型的收敛速度
假设某一模型包含两个特征 x1,x2 x 1 , x 2 x1 x 1 数值很大,而 x2 x 2 数值很小,两者的取值在平面上呈现一个狭长的椭圆形,这使得在梯度下降时,梯度的方向因为垂直等高线而走“之”字形路线,这会使迭代很慢。相反若两个变量取值对称性较好,构成圆形,则每一次迭代时梯度都会朝着正确的方向下降,避免走弯路,加快了收敛速度。

2.提高模型精度
在涉及到度量计算时,显然变量的数值量级差异会产生很大影响。例如:若 x1 x 1 取值范围较小,对于度量计算的结果显然比 x2 x 2 小,这就会造成精度的损失。因此归一化和标准化会让各个特征在对应权重相同时,自身的单位数值对结果做出的贡献相同。

下面简述归一化和标准化在处理方法上的差异。

归一化
做法:将原始数据映射到[0,1]区间。

常用方法:

1.min-max归一化

xi=xixminxmaxxmin x i ′ = x i − x m i n x m a x − x m i n

该方法是线性映射,最为直观快捷,但新增数据时可能需要更新最大值或最小值,而且受极端样本影响大,鲁棒性差,适合对小样本分析。

2.对数函数转换

x=log10xlog10xmax x ′ = l o g 10 x l o g 10 x m a x

3.反正切函数转换

x=2arctan(x)π x ′ = 2 a r c t a n ( x ) π

4.L2-norm归一化

x=x||x||2 x ′ = x | | x | | 2

标准化
做法:将原始数据映射到一个较小的特定的范围内,映射后的数据均值为0,标准差为1。

常用方法:

1.z-score标准化

x=xμσ x ′ = x − μ σ

最常用的标准化方法,该方法要求原始数据的分布近似为高斯分布,否标标准化的效果较差。样本数越多效果越稳定,比较适合对大数据分析。也常用在对数据降维操作(PCA等)之前。

2.Decimal scaling小数定标标准化

x=x10j x ′ = x 10 j

其中, 10j 10 j 为大于样本最大值绝对值的最小满足条件的值。

该方法通过移动数据的小数点位置来进行标准化。小数点移动多少位取决于样本最大值的绝对值。

3.Logistic\softmax变换

x=11+ex x ′ = 1 1 + e − x

这也就是sigmoid函数,两极分化的分布便于做数据的二分类。当然若要实现多分类,也可用softmax函数做标准化变换:
x=exniexi x ′ = e x ∑ i n e i x

你可能感兴趣的:(深度学习,归一化,标准化)