精华内容
下载资源
问答
  • 归一化与标准化区别

    2020-09-16 10:41:01
    归一化与标准化区别 归一化 常用的方法是通过对原始数据进行线性变换把数据映射到[0,1]之间,变换函数为: 不同变量往往量纲不同,归一化可以消除量纲对最终结果的影响,使不同变量具有可比性。在不涉及距离度量、...

    归一化与标准化区别

    归一化

    常用的方法是通过对原始数据进行线性变换把数据映射到[0,1]之间,变换函数为:

    image-20200916103724244

    不同变量往往量纲不同,归一化可以消除量纲对最终结果的影响,使不同变量具有可比性。在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用归一化方法。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0 255]的范围。

    ( transfroms.Normalize)

    标准化

    常用的方法是z-score标准化,经过处理后的数据均值为0,标准差为1,公式是:

    image-20200916103823127

    (BatchNorm2d)

    如果对输出结果范围有要求,用归一化
    如果数据较为稳定,不存在极端的最大最小值,用归一化
    如果数据存在异常值和较多噪音,用标准化,可以间接通过中心化避免异常值和极端值的影响

    我们在对输⼊数据做标准化处理:处理后的任意⼀个特征在数据集中所有样本上的均值为0、标准差为1。标准化处理输⼊数据使各个特征的分布相近:这往往更容易训练出有效的模型。
    通常来说,数据标准化预处理对于浅层模型就⾜够有效了。随着模型训练的进⾏,当每层中参数更新时,靠近输出层的输出较难出现剧烈变化。但对深层神经⽹络来说,即使输⼊数据已做标准化,训练中模型参数的更新依然很容易造成靠近输出层输出的剧烈变化。这种计算数值的不稳定性通常令我们难以训练出有效的深度模型。
    批量归⼀化的提出正是为了应对深度模型训练的挑战。在模型训练时,批量归⼀化利⽤⼩批量上的均值和标准差,不断调整神经⽹络中间输出,从⽽使整个神经⽹络在各层的中间输出的数值更稳定

    展开全文
  • 数据标准化/归一化normalization

    万次阅读 多人点赞 2016-08-19 09:42:40
    这里主要讲连续型特征归一化的常用方法。 连续型特征还有一种处理方式是,先分桶/分箱(如等频/等距的分)[待写]进行离散化后再使用离散数据的处理方法。 离散数据处理参考[数据预处理:独热编码(One-Hot ...

    http://blog.csdn.net/pipisorry/article/details/52247379

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

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

    离散数据处理参考[数据预处理:独热编码(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,PCA降维[PCA将原来高维的数据投影到某个低维的空间上并使得其方差尽量大。如果数据其中某一特征数值特别大,那么它在整个误差计算的比重上就很大,那么可以想象在投影到低维空间之后,为了使低秩分解逼近原数据,整个投影会去努力逼近最大的那一个特征,而忽略数值比较小的特征,这很可能导致了大量的信息缺失。此外,从计算的角度讲,因为PCA通常是数值近似分解,而非求特征值、奇异值得到解析解,所以当我们使用梯度下降等算法进行PCA的时候,归一化有利于梯度下降收敛]等。

    不需要归一化的模型:

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

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

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

        基于平方损失的最小二乘法OLS不需要归一化。

    [线性回归与特征归一化(feature scaling)]

    皮皮blog

     

     

    常见的数据归一化方法

    最常用的是 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的变化,需要重新定义。

    ps: 将数据归一化到[a,b]区间范围的方法:

    (1)首先找到原本样本数据X的最小值Min及最大值Max
    (2)计算系数:k=(b-a)/(Max-Min)
    (3)得到归一化到[a,b]区间的数据:Y=a+k(X-Min)  或者 Y=b+k(X-Max)

    即一个线性变换,在坐标上就是求直线方程,先求出系数,代入一个点对应的值(x的最大/最小就对应y的最大/最小)就ok了。

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

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

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

    经过处理的数据符合标准正态分布,即均值为0,标准差为1,注意,一般来说z-score不是归一化,而是标准化,归一化只是标准化的一种[lz]。

    其转化函数为:

    x* = (x - μ ) / σ

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

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

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

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

    def z_score(x, axis):
        x = np.array(x).astype(float)
        xr = np.rollaxis(x, axis=axis)
        xr -= np.mean(x, axis=axis)
        xr /= np.std(x, axis=axis)
        # print(x)
        return x

    为什么z-score 标准化后的数据标准差为1?

    x-μ只改变均值,标准差不变,所以均值变为0

    (x-μ)/σ只会使标准差除以σ倍,所以标准差变为1

    这两种最常用方法使用场景:

    1、在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,第二种方法(Z-score standardization)表现更好。

    2、在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用第一种方法或其他归一化方法。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0 255]的范围。
    原因是使用第一种方法(线性变换后),其协方差产生了倍数值的缩放,因此这种方式无法消除量纲对方差、协方差的影响,对PCA分析影响巨大;同时,由于量纲的存在,使用不同的量纲、距离的计算结果会不同。而在第二种归一化方式中,新的数据由于对方差进行了归一化,这时候每个维度的量纲其实已经等价了,每个维度都服从均值为0、方差1的正态分布,在计算距离的时候,每个维度都是去量纲化的,避免了不同量纲的选取对距离计算产生的巨大影响。
    [再谈机器学习中的归一化方法(Normalization Method) ]

    皮皮blog

    log函数转换

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

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

    atan函数转换

    用反正切函数也可以实现数据的归一化。

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

    Decimal scaling小数定标标准化

    这种方法通过移动数据的小数点位置来进行标准化。小数点移动多少位取决于属性A的取值中的最大绝对值。

    将属性A的原始值x使用decimal scaling标准化到x'的计算方法是:
    x'=x/(10^j)
    其中,j是满足条件的最小整数。
    例如 假定A的值由-986到917,A的最大绝对值为986,为使用小数定标标准化,我们用每个值除以1000(即,j=3),这样,-986被规范化为-0.986。
    注意,标准化会对原始数据做出改变,因此需要保存所使用的标准化方法的参数,以便对后续的数据进行统一的标准化。

    Logistic/Softmax变换

    [Sigmod/Softmax变换 ]

    模糊量化模式

    新数据=1/2+1/2sin[派3.1415/(极大值-极小值)*(X-(极大值-极小值)/2) ] X为原数据

    皮皮blog

     

    数据标准化/归一化的编程实现

    1 python库实现和调用

    [Scikit-learn:数据预处理Preprocessing data ]

    2 pandas dataframe实现标准化

    [pandas小记:pandas数据规整化-正则化、分组合并及重塑]

    两者的区别在于:df_norm = (df - df.mean()) / (df.std())会保留nan值,而preprocessing.scale(X)会直接报错:ValueError: Input contains NaN, infinity or a value too large for dtype('float64')。

    对于dense数据,建议先填充再标准化,否则需要标准化后再通过最小值来填充。

    from: http://blog.csdn.net/pipisorry/article/details/52247379

    ref:

     

    展开全文
  • 归一化标准化特征预处理定义两者的区别一定要从公式上区别相同不同归一化标准化:弥补了归一化受异常点的不足总结 特征预处理定义 定义:通过一些转换函数将数据特征转化成更加适合算法模型的特征数据过程 两者...

    特征预处理定义

    定义:通过一些转换函数将数据特征转化成更加适合算法模型的特征数据过程

    两者的区别一定要从公式上区别

    相同与不同

    归一化

    公式:
    在这里插入图片描述
    缺点:归一化中的最大值和最小值容易受到异常数据影响,导致每个特征的最大值和最小值发生变化(当异常值就是最大值和最小值的情况下),对归一化结果影响大。
    适用场景:由于最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景。

    标准化:弥补了归一化受异常点的不足

    在这里插入图片描述
    作用于每一列,mean为每一列的平均值,σ为每一列的标准差 ,方差是标准化的平方。方差的作用是研究数据的稳定性,即数据偏离程度。例如 两人的5次测验成绩如下:X: 50,100,100,60,50,平均值E(X)=72;Y:73, 70,75,72,70 平均值E(Y)=72。平均成绩相同,但X 不稳定,对平均值的偏离大。标准差、方差越大,离散程度越大。方差越小,表明数据越来越集中,方差越大,数据越来越离散。方差为0表示所有的数据都是一个值即一样,M为平均值

    在这里插入图片描述

    总结

    相同点:都是作用于每一列特征
    不同点:都是默认映射到0,1区间,但归一化中的0,1区间可更改。另一个是0,1含义不同,标准化中的0,1表示将数据都聚集在均值为0,方差为1的范围

    • 区别:归一化和表转化都是针对每一列数据而言的
    • 对于归一化来说:如果出现异常点,影响了最大值和最小值,那么结果显然会发生改变
    • 对于标准化来说:如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响并不大,从而方差改变较小。
    • 总结:因此在做无量钢化的时候首选标准化来做,而不用归一化来做
    展开全文
  • 归一化与标准化

    2018-04-19 23:12:14
    在机器学习和数据挖掘中,经常会听到两个名词:归一化(Normalization)与标准化(Standardization)。它们具体是什么?带来什么益处?具体怎么用?本文来具体讨论这些问题。一、是什么1. 归一化常用的方法是通过对...

    在机器学习和数据挖掘中,经常会听到两个名词:归一化(Normalization)与标准化(Standardization)。它们具体是什么?带来什么益处?具体怎么用?本文来具体讨论这些问题。

    一、是什么

    1. 归一化

    常用的方法是通过对原始数据进行线性变换把数据映射到[0,1]之间,变换函数为:


        其中max为样本数据的最大值,min为样本数据的最小值。这种方法有个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。另外,最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景。

    2. 标准化

    常用的方法是z-score标准化,经过处理后的数据均值为0,标准差为1,处理方法是:


    其中,其中μ是样本的均值, σ是样本的标准差,。该种归一化方式要求原始数据的分布可以近似为高斯分布,否标准化的效果会变得很糟糕。它们可以通过现有样本进行估计。在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。

    二、带来什么

    归一化的依据非常简单,不同变量往往量纲不同,归一化可以消除量纲对最终结果的影响,使不同变量具有可比性。比如两个人体重差10KG,身高差0.02M,在衡量两个人的差别时体重的差距会把身高的差距完全掩盖,归一化之后就不会有这样的问题。

    标准化的原理比较复杂,它表示的是原始值与均值之间差多少个标准差,是一个相对值,所以也有去除量纲的功效。同时,它还带来两个附加的好处:均值为0,标准差为1。

    均值为0有什么好处呢?它可以使数据以0为中心左右分布(这不是废话嘛),而数据以0为中心左右分布会带来很多便利。比如在去中心化的数据上做SVD分解等价于在原始数据上做PCA;机器学习中很多函数如SigmoidTanhSoftmax等都以0为中心左右分布(不一定对称)。

    以上为两种比较普通但是常用的归一化技术,那这两种归一化的应用场景是怎么样的呢?什么时候第一种方法比较好、什么时候第二种方法比较好呢?下面做一个简要的分析概括:
    1、在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,第二种方法(Z-score standardization)表现更好。
    2、在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用第一种方法或其他归一化方法。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0 255]的范围。

    三、怎么用

    在涉及到计算点与点之间的距离时,使用归一化或标准化都会对最后的结果有所提升,甚至会有质的区别。那在归一化与标准化之间应该如何选择呢?,如果把所有维度的变量一视同仁,在最后计算距离中发挥相同的作用应该选择标准化,如果想保留原始数据中由标准差所反映的潜在权重关系应该选择归一化。另外,标准化更适合现代嘈杂大数据场景。

    实现:

    • 使用sklearn.preprocessing.scale()函数,可以直接将给定数据进行标准化。

    • from sklearn import preprocessing

    • x=np.array([[1., -1., 2.]

    •                     [2., 0., 0.]

    •                     [0., 1., -1.]])

       x_scaled = preprocessing(x)



    转自:https://blog.csdn.net/u012101561/article/details/72506273

    展开全文
  • 一、归一化与标准化的概念 1.数据归一化标准化的目的   归一化/标准化可以去除数据单位对计算带来的影响,也就是所谓的去量纲行为,归一化/标准化实质是一种线性变换,线性变换有很多良好的性质,这些性质决定了...
  • numpy 归一化 标准化

    千次阅读 2019-09-13 02:06:25
    代码 import numpy as np def normalization(x): ... 归一化到区间{0,1] 返回副本 """ _range = np.max(x) - np.min(x) return (x - np.min(x)) / _range def standardization(x): """" 将...
  • 概念归一化:缩放仅仅跟最大、最小值的差别有关;输出范围在a-b之间标准化:缩放和每个点都有关系,通过均值μ和标准差σ体现出来;输出范围是负无穷到正无穷相同点:归一化标准化的本质都是一种线性变换,线性...
  • 机器学习中归一化与标准化 1、归一化 2、标准化
  • 归一化 标准化比较

    万次阅读 2018-01-08 23:26:06
    归一化(标准化)两种常用方法 数据标准化归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据...
  • 归一化与标准化的概念和区别 1. 归一化与标准化的概念和区别 1. 归一化: 1) 把数据变成(0,1)或者(-1,1)之间的小数。主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速。 2) 把有...
  • L1、L2正则化;归一化与标准化

    千次阅读 2019-03-12 14:51:31
    矩阵numpy、sklearn操作 ... 0-1标准化处理 0-1缩放处理 0-1归一化处理 均值归一化 sig归一化处理 Github项目地址:https://github.com/yongzhuo/Tensorflow-Examples/blob/master/Features_Project/normali...
  • 特征处理中,归一化标准化是不变的话题。最近看了不少归一化标准化相关的文献,发现还是有点坑的。但是我不管也不打算讲清楚这俩的区别,当工业界模型要求不高,数据量又大的时候,冲上去一通操作就行了。不过...
  • 归一化与标准化简介

    2020-05-17 05:54:08
    什么是归一化归一化是一种缩放技术,其中对值进行移位和重新缩放,以使它们最终在0到1之间变化。这也称为“最小-最大”缩放。 这是归一化的公式: 在这个公式中,Xmax和Xmin分别是特征的最大值和最小值。 当X的值...
  • 图像归一化与标准化

    2021-03-27 16:31:15
    归一化(Normalization) 一般来说用的是min-max归一化,缩放到0-1之间,即: Xi−Xmin⁡Xmax⁡−Xmin⁡ \frac{X_{i}-X_{\min }}{X_{\max }-X_{\min }} Xmax​−Xmin​Xi​−Xmin​​ 对于图片来说,由于max是255,min...
  • python中归一化标准化模型保存加载,python中归一化标准化模型保存加载
  • 参考: https://www.jianshu.com/p/95a8f035c86c
  • 归一化标准化

    2019-08-25 22:08:49
    归一化标准化有什么区别?什么时候要用到归一化标准化?什么时候不需要用到归一化标准化? 引言 我查阅了网上的一些资料发现他们对这个标准化归一化的区分并不是特别一致,有的是将归一化方法归结到标准化...
  • 关于归一化与标准化

    2020-04-11 13:22:12
    1、归一化是什么 狭义的归一化(最大最小归一化)是指对多维数据(特征)x=[x1,...,xi,...xd]x=[x_1,...,x_i,...x_d]x=[x1​,...,xi​,...xd​]的每一维进行xi′=xi−min(xi)max(xi)−min(xi)x'_i=\frac{x_i-min(x_i...
  • 归一化与标准化详解

    千次阅读 2016-12-27 10:50:00
    归一化(Normalization)1.把数据变为(0,1)之间的小数。主要是为了方便数据处理,因为将数据映射到0~1范围之内,可以使处理过程更加便捷、快速。2.把有量纲表达式变换为无量纲表达式,成为纯量。经过归一化处理...
  • 数据规范中的归一化与标准化

    千次阅读 2014-04-12 18:54:25
    数据规范中的归一化与标准化: A.归一化 vs. 标准化  归一化:要把你需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。首先归一化是为了后面数据处理的方便,其次是保正程序运行时收敛...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 59,634
精华内容 23,853
关键字:

归一化与标准化的区别