归一化的好处及归一化,标准化的处理方法

转自:数据标准化/归一化normalization

 

这里主要讲连续型特征归一化的常用方法。

连续型特征还有一种处理方式是,先分桶/分箱(如等频/等距的分)[待写]进行离散化后再使用离散数据的处理方法。

离散数据处理参考[数据预处理:独热编码(One-Hot Encoding)]。

基础知识参考:

[均值、方差与协方差矩阵]

[矩阵论:向量范数和矩阵范数]

数据的标准化(normalization)和归一化

     数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。

    目前数据标准化方法有多种,归结起来可以分为直线型方法(如极值法、标准差法)、折线型方法(如三折线法)、曲线型方法(如半正态性分布)。不同的标准化方法,对系统的评价结果会产生不同的影响,然而不幸的是,在数据标准化方法的选择上,还没有通用的法则可以遵循。

其中最典型的就是数据的归一化处理,即将数据统一映射到[0,1]区间上。

归一化的目标

1 把数变为(0,1)之间的小数
        主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速,应该归到数字信号处理范畴之内。
2 把有量纲表达式变为无量纲表达式
        归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。 比如,复数阻抗可以归一化书写:Z = R + jωL = R(1 + jωL/R) ,复数部分变成了纯数量了,没有量纲。
另外,微波之中也就是电路分析、信号系统、电磁波传输等,有很多运算都可以如此处理,既保证了运算的便捷,又能凸现出物理量的本质含义。

归一化后有两个好处

1. 提升模型的收敛速度

如下图,x1的取值为0-2000,而x2的取值为1-5,假如只有这两个特征,对其进行优化时,会得到一个窄长的椭圆形,导致在梯度下降时,梯度的方向为垂直等高线的方向而走之字形路线,这样会使迭代很慢,相比之下,右图的迭代就会很快(理解:也就是步长走多走少方向总是对的,不会走偏)


2.提升模型的精度

归一化的另一好处是提高精度,这在涉及到一些距离计算的算法时效果显著,比如算法要计算欧氏距离,上图中x2的取值范围比较小,涉及到距离计算时其对结果的影响远比x1带来的小,所以这就会造成精度的损失。所以归一化很有必要,他可以让各个特征对结果做出的贡献相同。

    在多指标评价体系中,由于各评价指标的性质不同,通常具有不同的量纲和数量级。当各指标间的水平相差很大时,如果直接用原始指标值进行分析,就会突出数值较高的指标在综合分析中的作用,相对削弱数值水平较低指标的作用。因此,为了保证结果的可靠性,需要对原始指标数据进行标准化处理。

    在数据分析之前,我们通常需要先将数据标准化(normalization),利用标准化后的数据进行数据分析。数据标准化也就是统计数据的指数化。数据标准化处理主要包括数据同趋化处理和无量纲化处理两个方面。数据同趋化处理主要解决不同性质数据问题,对不同性质指标直接加总不能正确反映不同作用力的综合结果,须先考虑改变逆指标数据性质,使所有指标对测评方案的作用力同趋化,再加总才能得出正确结果。数据无量纲化处理主要解决数据的可比性。经过上述标准化处理,原始数据均转换为无量纲化指标测评值,即各指标值都处于同一个数量级别上,可以进行综合测评分析。

从经验上说,归一化是让不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。

3. 深度学习中数据归一化可以防止模型梯度爆炸。

数据需要归一化的机器学习算法

需要归一化的模型:

        有些模型在各个维度进行不均匀伸缩后,最优解与原来不等价,例如SVM(距离分界面远的也拉近了,支持向量变多?)。对于这样的模型,除非本来各维数据的分布范围就比较接近,否则必须进行标准化,以免模型参数被分布范围较大或较小的数据dominate。
        有些模型在各个维度进行不均匀伸缩后,最优解与原来等价,例如logistic regression(因为θ的大小本来就自学习出不同的feature的重要性吧?)。对于这样的模型,是否标准化理论上不会改变最优解。但是,由于实际求解往往使用迭代算法,如果目标函数的形状太“扁”,迭代算法可能收敛得很慢甚至不收敛(模型结果不精确)。所以对于具有伸缩不变性的模型,最好也进行数据标准化。

        有些模型/优化方法的效果会强烈地依赖于特征是否归一化,如LogisticReg,SVM,NeuralNetwork,SGD等。

不需要归一化的模型:

    (0/1取值的特征通常不需要归一化,归一化会破坏它的稀疏性。)

    有些模型则不受归一化影响,如DecisionTree。

    ICA好像不需要归一化(因为独立成分如果归一化了就不独立了?)。

    基于平方损失的最小二乘法OLS不需要归一化。
    [线性回归与特征归一化(feature scaling)]

 

常见的数据归一化方法

最常用的是 min-max标准化 和 z-score 标准化。

min-max标准化(Min-max normalization) / 0-1标准化(0-1 normalization) / 线性函数归一化 / 离差标准化

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

     ,其中max为样本数据的最大值,min为样本数据的最小值。

    def Normalization(x):
        return [(float(i)-min(x))/float(max(x)-min(x)) for i in x]

    如果想要将数据映射到[-1,1],则将公式换成:

    x* = x* * 2 -1

    或者进行一个近似

    x* = (x - x_mean)/(x_max - x_min), x_mean表示数据的均值。

    def Normalization2(x):
        return [(float(i)-np.mean(x))/(max(x)-min(x)) for i in x]

    这种方法有一个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义

z-score 标准化(zero-mean normalization)

    最常见的标准化方法就是Z标准化,也是SPSS中最为常用的标准化方法,spss默认的标准化方法就是z-score标准化。

    也叫标准差标准化,这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。

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

    x* = (x - μ ) / σ

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

    z-score标准化方法适用于属性A的最大值和最小值未知的情况或有超出取值范围的离群数据的情况。该种归一化方式要求原始数据的分布可以近似为高斯分布,否则归一化的效果会变得很糟糕

    标准化的公式很简单,步骤如下

  1.求出各变量(指标)的算术平均值(数学期望)xi和标准差si ;
  2.进行标准化处理:
                  zij=(xij-xi)/si
      其中:zij为标准化后的变量值;xij为实际变量值。
  3.将逆指标前的正负号对调。
      标准化后的变量值围绕0上下波动,大于0说明高于平均水平,小于0说明低于平均水平。

问答

1.问:归一化也就是标准化的一种,比如做一般线性回归的时候,XY轴中只有一个是变量,那请问是否需要对变量数据进行标准归一化呢?

答:一维数据一般没有太大必要归一化,它的归一化相当于通过学习率调节了,但是反过来归一化后,学习率可能就没有太大必要了,这样就可以减少一个学习率的设置。(即学习率初始值的选择需要参考输入的范围,直接将数据归一化,学习率就不必再根据数据范围作调整。)

2.问:为什么线性归一化对用距离来度量相似度的方法在精度上会有影响?

线性变换其协方差产生倍数值的缩放,无法消除量纲对方差、协方差的影响,由于量纲的存在,使用不同的量纲、距离的计算结果会不同,在精度上当然会有影响。使用0均值对方差进行了归一化,这时候每个维度的量纲其实已经等价了。而且用于最大值和最小值未知的时候,或者说最大值和最小值并不准确时尤其重要,当最大值和最小值未知或者不准备时当然在精度上有更大影响,0均值方法这种问题就少很多,对异常点也更鲁棒。

:首先 谢谢博主的耐心解答,

    1.我可不可以理解为线性归一化,不会消除量纲的影响,因为它是一种对原始数据的放缩(根据公式,应该不是等比例的放缩),这种放缩,可能会减小量纲的影响,比如一个量纲为1的特征和一个量纲为100的特征都归一化到0到1之间,差距就没有1到100那么大了,但量纲的不同的依然存在,也就是说,一定程度上减小了量纲的影响,但是还是不能消除,

    2.但是-均值归一化,就是使数据分布一致,完全消除量纲的影响了对吧,但是会改变数据分布。

    3.最后一个疑问就是,是否数据分布一致,量纲就相同。

答:1.所有的归一化方法都会在一定程度上消除量纲的影响,但是zscore还可以消除量纲对方差、协方差的影响(线性的会使方差也变化);

       2.对,zscore会使数据分布都变成高斯分布;

       3.“数据分布一致,量纲就相同”,数据分布相同指完全一样的分布,如均值和方差相同的高斯分布,这时量纲是 相同的。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值