标准化和归一化比较

数据预处理中的标准化和归一化异同

(最近在处理数据时,发现标准化和归一化之间并不能一概而论,但在网上的资料中发现常常将两者混淆。特将所查资料汇总如下。)
无论是归一化还是标准化,都属于特征缩放技术。首先说明为什么要进行特征缩放。首先:(后面会进一步介绍,此处是常用的两点解释)
1)特征间的单位不同,值之间的大小差别会很大,在模型中进行向量运算时会使得数值大的特征起决定性的作用,而值较小的特征的作用可能会被忽略,而我们期望的是对每个特征同等对待;
2)原始特征下,因量纲的差异,损失函数的等高线图可能是椭圆形,梯度方向垂直于等高线,此时梯度下降的方向会发生震荡,收敛慢;而经特征归一化或标准化后,其损失函数等高线图会更接近圆形,收敛更快。

1.定义

归一化:将某一特征的值缩放到0到1之间。常用min-max归一化公式如下,标准化和归一化比较_第1张图片
标准化:将特征的值缩放到均值为0、方差为1 的分布(Z-score转换为正态分布)
在这里插入图片描述

(大多数情况下原始数据是正态分布,经过标准化就变为标准正态)。标准化中隐含假设:一个特征分布服从正态分布。

总结:在机器学习中,标准化是更为常用的方法,归一化使用有限。因为

1)标准化可以更好的保持样本间距;
当样本中有异常点时,归一化有可能将正常的样本“挤”到一起去。比如三个样本,某个特征的值为1,2,10000,假设10000这个值是异常值,用归一化的方法后,正常的1,2就会被“挤”到一起去。如果不幸的是1和2的分类标签还是相反的,那么,当我们用梯度下降来做分类模型训练时,模型会需要更长的时间收敛,因为将样本分开需要更大的努力!而标准化在这方面就做得很好,至少它不会将样本“挤到一起”。
2)标准化更符合统计学假设
对一个数值特征来说,很大可能它是服从正态分布的。标准化其实是基于这个隐含假设,只不过是略施小技,将这个正态分布调整为均值为0,方差为1的标准正态分布而已。

2.标准化的使用场景

    下图是对几种监督算法的对比,最右侧两列表明了是否需要特征缩放。(特征缩放时大多用标准化)

标准化和归一化比较_第2张图片
什么时候需要特征缩放(大多用标准化方法)
涉及或隐含__距离计算__的算法,比如K-means、KNN、PCA、SVM等。因为:

  1. __zero-mean(化为标准正态分布)__一般可以增加样本间余弦距离或内积结果的差异,区分力更强;假设数据集集中分布在第一象限的右上角,将其平移到原点处,可以使样本间余弦距离的差异被放大。
  2. 对于__欧氏距离__,某一个特征的尺度很大,相当于在距离计算时为该特征加入了更大的权重;如果没有先验知识证明该特征更重要,那么就应该先对特征做特征缩放,使得各特征同等重要。
    3.对于PCA降维算法,其倾向于关注方差较大的特征所在的坐标轴方向,而量纲大的特征往往方差也大,其他量纲小的特征会被忽略掉。
    4.损失函数中有__正则项__时,一般需要进行标准化。对于线性模型y= wx+b,x的任何线性变换,都可以被w和b‘吸收’,例如x由1变为100,相应的w缩小100倍即可保证y不变,理论上 这种变化不会影响模型的拟合能力。但若在损失函数中引入正则项,如λ||w||^2,其对w的每一个参数施加同样的惩罚,但对于某一维特征xi而言,若取值越大则对应的系数wi就会越小,其在正则化中的比重就会变小,相当于对wi的惩罚变小,这并不合理,我们希望损失函数可以平等的对待每一维特征。
    __总结__以上四点,做特征缩放均是为了在计算中能对所有特征平等对待,使不同特征处于相同的重要性。
  3. 梯度下降算法 需要特征缩放;梯度下降收敛速度 取决于:参数的初始位置到极小值的距离,及学习率的大小。对于高维,收敛意味着在每个参数维度上都取得极小值,每个参数维度上的偏导数都为0。一般所有参数维度共用同一个学习率,但是每个参数维度上的下降速度是不同的,为了每个维度上都能收敛,学习率应取所有维度在当前位置合适 步长中最小 的那个。特征缩放对梯度下降的影响
    (1)缩短参数初始化位置到极小值位置的距离 ,加快收敛速度。
    (2) 通过特征缩放改变损失函数的形状,减小不同方向上的曲率差异 ,使得不同维度上曲率相对更接近,更容易选择到合适的学习率,使下降过程更稳定。
    6.对于 传统的神经网络 ,对输入做特征缩放也很重要,因为采用sigmoid等有饱和区的激活函数,如果输入分布范围很广,参数初始化时没有适配好,很容易直接 陷入饱和区,导致梯度消失,所以,需要对输入做Standardization或映射到[0,1]、[−1,1],配合精心设计的参数初始化方法,对值域进行控制。

不需要做特征缩放的情况
与距离计算无关的 概率模型,不需要特征缩放,比如Naive Bayes;
与距离计算无关的 基于树的模型,不需要特征缩放比如决策树、随机森林等,树中节点的选择只关注当前特征在哪里切分对分类更好,即只在意特征内部的相对大小,而与特征间的相对大小无关。

3.归一化的使用

有时候,我们必须要特征在0到1之间,此时就只能用归一化。

注意事项:先拆分出test集,不要在整个数据集上做标准化,因为那样会__将test集的信息引入到训练集中__,这是一个非常容易犯的错误!(分别做即可)

你可能感兴趣的:(机器学习,深度学习,人工智能)