数据标准化

数据标准化(normalization)

简介

特征缩放(Feature scaling [1] )也称为数据的标准化(normalization),是将数据按比例缩放,使之落入一个特定区间。不同数据往往具有不同的量纲,会影响到数据分析的结果,为了消除数据之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。其中最典型的就是数据的归一化处理,即将数据统一映射到[0,1]区间上。

数据标准化优点 [2]

数据标准化到同一空间后有两个好处:
1. 加快了梯度下降求最优解的速度;
2. 有可能提高精度

数据标准化为什么能提高梯度下降法求解最优解的速度?

斯坦福机器学习视频做了很好的解释:

如下图所示,蓝色的圈圈图代表的是两个特征的等高线。其中左图两个特征X1和X2的区间相差非常大,X1区间是[0,2000],X2区间是 [1,5],其所形成的等高线非常尖。当使用梯度下降法寻求最优解时,很有可能走“之字型”路线(垂直等高线走),从而导致需要迭代很多次才能收敛;
而右图对两个原始特征进行了特征缩放,其对应的等高线显得很圆,在梯度下降进行求解时能较快的收敛。
因此如果机器学习模型使用梯度下降法求最优解时,特征缩放往往非常有必要,否则很难收敛甚至不能收敛。

数据标准化_第1张图片

数据标准化为什么有可能提高精度?
一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)。

常见数据标准化类型 [2][3][4]

线性标准化(Min-Max Normalization)

也叫离差标准化,是对原始数据的线性变换,使结果落到[0,1]区间,转换函数如下:

x=xmin(x)max(x)min(x)

其中 max(x) 为样本数据的最大值, min(x) 为样本数据的最小值。这种归一化方法比较适用在数值比较集中的情况。
这种方法有个缺陷,如果max和min不稳定,很容易使得归一化结果不稳定,当有新数据加入时,可能导致max和min的变化,需要重新定义。实际使用中可以用经验常量来替代max和min。

标准差标准化(zero-mean normalization)

经过处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为:

x=xμσ

其中 μ 为所有样本数据的均值, σ 为所有样本数据的标准差。

非线性标准化

经常用在数据分化比较大的场景,有些数值很大,有些很小。通过一些数学函数,将原始值进行映射。该方法包括 log、指数,正切等。需要根据数据分布的情况,决定非线性函数的曲线。

log函数转换
通过以10为底的 log 函数转换的方法同样可以实现归一下,具体方法如下:

x=log10(x)log10(max(x))

很多介绍都是 x=log10(x) ,这个结果并非一定落到 [0,1] 区间上,要落到 [0,1] 区间上应该还要除以 log10(max(x)) max(x) 为样本数据最大值,并且所有的数据都要大于等于1。

arctan函数转换
用反正切函数也可以实现数据的归一化:

x=arctan(x)2π

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

Reference:

  1. Feature scaling - Wikipedia, the free encyclopedia
  2. 为什么一些机器学习模型需要对数据进行归一化
  3. 常见的的样本数据归一化
  4. 数据标准化的几种方法

你可能感兴趣的:(机器学习)