深度学习-标准化、归一化以及数据处理

标准化、归一化以及数据处理

  • 1.标准化和归一化
    • 1.1.什么是数据归一化
    • 1.2.归一化和标准化的区别
    • 1.3.为什么要进行数据的归一化
  • 2.数据预处理中的归一化
    • 2.1.训练集、测试集和验证集如何进行归一化
    • 2.2.常用的归一化手段
      • Zero-mean normalization均值方差归一化
      • Min-max normalization
      • Non-linear normaliztions
      • Length-one normalization

1.标准化和归一化

1.1.什么是数据归一化

归一化(标准化)可以定义为:归一化就是要把你需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。首先归一化是为了后面数据处理的方便,其次是保证模型运行时收敛加快。

1.2.归一化和标准化的区别

归一化的分母是大于等于标准化的分母的,且归一化的分子是小于分母,故归一化是把x限制在[0,1]之间,常见的归一化方法:(xi -min(xi))/(max(xi) -min(xi))
标准化没有限制,且对噪点不敏感缩放是更加 “弹性” 和 “动态” 的,和整体样本的分布有很大的关系。常见的标准化方法:(xi -mean(xi))/sd(xi )
一般情况下:

  • 如果对输出结果范围有要求,用归一化。
  • 如果数据较为稳定,不存在极端的最大最小值,用归一化
  • 如果数据存在异常值和较多噪音,用标准化,可以间接通过中心化避免异常值和极端值的影响
    在机器学习中,标准化是更常用的手段,归一化的应用场景是有限的。其原因在于:
  • 标准化更好保持了样本间距。当样本中有异常点时,归一化有可能将正常的样本“挤”到一起去。比如三个样本,某个特征的值为1,2,10000,假设10000这个值是异常值,用归一化的方法后,正常的1,2就会被“挤”到一起去。如果不幸的是1和2的分类标签还是相反的,那么,当我们用梯度下降来做分类模型训练时,模型会需要更长的时间收敛,因为将样本分开需要更大的努力!而标准化在这方面就做得很好,至少它不会将样本“挤到一起”。
  • 标准化更符合统计学假设。对一个数值特征来说,很大可能它是服从正态分布的。标准化其实是基于这个隐含假设,只不过是略施小技,将这个正态分布调整为均值为0,方差为1的标准正态分布而已。

1.3.为什么要进行数据的归一化

取消量纲,使得梯度始终朝着最小值的方向前进 ,少走弯路, 加速收敛
若样本x的一个特征A是从10000-100000,另一个特征B是从0.1-1,这样训练神经网络时候会导致B的作用非常小,这是不希望看到的。同时这样会导致求偏导时A的参数变化大,B的参数变化小,这样会导致loss最小化是不停的走弯路,浪费时间

2.数据预处理中的归一化

2.1.训练集、测试集和验证集如何进行归一化

训练时,数据的归一化参数来自训练集,测试集的归一化的均值和标准偏差也应该来源于训练集,对于验证集也是使用训练集的均值和标准偏差
可以这么理解:
在真正的部署过程中,测试数据实际上就是那些源源不断刚刚出现的数据,你不知道它什么分布,也不知道它出现什么样的数值。所以你要用训练数据得到的均值和标准偏差,去转换它。这更加贴近部署的实际。
所以在使用数据时,一般先划分数据集再使用训练集的各项数据进行归一化。

2.2.常用的归一化手段

Zero-mean normalization均值方差归一化

x=(x-x- )/σ
处理后的数据将符合标准正态分布,常用在一些通过距离得出相似度的聚类算法中,比如 K-means。

Min-max normalization

(xi -min(xi))/(max(xi) -min(xi))
min-max 归一化的手段是一种线性的归一化方法,它的特点是不会对数据分布产生影响。不过如果你的数据的最大最小值不是稳定的话,你的结果可能因此变得不稳定。min-max 归一化在图像处理上非常常用,因为大部分的像素值范围是 [0, 255]。

Non-linear normaliztions

非线性的归一化函数包含 log,exp,arctan, sigmoid等等。用非线性归一化的函数取决于你的输入数据范围以及你期望的输出范围。比如 log() 函数在[0,1] 区间上有很强的区分度,arctan() 可以接收任意实数并转化到[−π/2,π/2]区间,sigmoid 接收任意实数并映射到( 0 , 1 )

Length-one normalization

x=x/(||x||)
将特征转为单位向量的形式,可以剔除特征的强度的影响。这种处理用在不考虑向量大小而需要考虑向量方向的问题中,比如在一些文本情感的分类中,我们可能并不需要知道情感表达的强弱,而只要知道情感的类型,比如开心,生气等等。

你可能感兴趣的:(深度学习,深度学习,神经网络,机器学习)