精华内容
下载资源
问答
  • 数据标准化/归一化normalization

    万次阅读 多人点赞 2016-08-19 09:42:40
    这里主要讲连续型特征归一化的常用方法。 连续型特征还有一种处理方式是,先分桶/分箱(如等频/...离散数据处理参考[数据预处理:独热编码(One-Hot Encoding)]。 基础知识参考: [均值、方差与协方差矩阵] [...

    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:

     

    展开全文
  • 数据标准

    问题1:

    • 为什么要进行数据标准化?

    在现实生活中,一个目标变量(y)可以认为是由多个特征变量(x)影响和控制的,那么这些特征变量的量纲和数值的量级就会不一样,比如x1 = 10000,x2 = 1,x3 = 0.5 可以很明显的看出特征x1和x2、x3存在量纲的差距;x1对目标变量的影响程度将会比x2、x3对目标变量的影响程度要大(可以这样认为目标变量由x1掌控,x2,x3影响较小,一旦x1的值出现问题,将直接的影响到目标变量的预测,把目标变量的预测值由x1独揽大权,会存在高风险的预测)而通过标准化处理,可以使得不同的特征变量具有相同的尺度(也就是说将特征的值控制在某个范围内),这样目标变量就可以由多个相同尺寸的特征变量进行控制,这样,在使用梯度下降法学习参数的时候,不同特征对参数的影响程度就一样了。比如在训练神经网络的过程中,通过将数据标准化,能够加速权重参数的收敛。
    简而言之:对数据标准化的目的是消除特征之间的差异性,便于特征一心一意学习权重。

    问题2:

    • 什么时候需要进行数据标准化,什么时候不需要进行数据标准化?

    由(1)我们可以知道当原始数据不同维度上的特征的尺度(单位)不一致时,需要标准化步骤对数据进行预处理,反之则不需要进行数据标准化。
    例如下面这几类问题一般都需要进行数据标准化:

    a 回归问题
    b 机器学习算法
    c 训练神经网络
    d 聚类问题
    e 分类问题
    f 主成分分析(PCA)问题

    关于数据标准化的方法以及知识点可以查看本博主的另外一篇博文(***python(经典)数据标准化方法、聚类方法、分类方法总结:***https://blog.csdn.net/data_bug/article/details/81586412)

    展开全文
  • 数据治理系列3:数据标准管理

    万次阅读 多人点赞 2019-05-30 16:39:48
    转载请注明,作者:石秀峰,公众号:learning-bigdata(谈数据) 导读:提到“标准”二字,我们...而我们所说的数据标准却不单单是指与数据相关的标准文件,数据标准是一个从业务、技术、管理三方面达成一致的规范...

    转载请注明,作者:石秀峰,公众号:learning-bigdata(谈数据)

    导读:提到“标准”二字,我们第一时间能够想到的就是一系列的标准化文档,例如:产品设计标准、生产标准、质量检验标准、库房管理标准、安全环保标准、物流配送标准等,这些标准有国际标准、国家标准、行业标准、企业标准等。而我们所说的数据标准却不单单是指与数据相关的标准文件,数据标准是一个从业务、技术、管理三方面达成一致的规范化体系。

    数据标准是什么?

    数据标准化是指研究、制定和推广应用统一的数据分类分级、记录格式及转换、编码等技术标准的过程。——维基百科。

    笔者理解:数据标准是一套由管理制度、管控流程、技术工具共同组成的体系,是通过这套体系的推广,应用统一的数据定义、数据分类、记录格式和转换、编码等实现数据的标准化。

    企业数据标准管理的内容

    1、数据模型标准,即元数据的标准化。自己从事IT行业10多年,一路走来,曾经做开发的时候一度认为数据模型没什么,只不过就是表结构、存储过程的设计,后来接触了数据集成ETL、ESB,虽然也知道ETL脚本本身也是元模型的一部分,但对其重要程度也没放在心上。

    后来慢慢发现之前的想法还过于简单,如果把企业信息化比作是人体的话,数据模型就是其骨架,数据之间的关系和流向是其血管和脉络,数据是其血液,数据模型的标准化是其数据血液能够正常流动和运行的根本。数据模型标准是元数据管理的主要内容,是企业数据治理的基础。请参考《数据治理系列2:元数据管理—企业数据治理的基础

    2、主数据和参照数据标准。主数据是用来描述企业核心业务实体的数据,比如客户、供应商、员工、产品、物料等;它是具有高业务价值的、可以在企业内跨越各个业务部门被重复使用的数据,被誉为企业的“黄金数据”。参考数据是用于将其他数据进行分类或目录整编的数据,是规定数据元的域值范围。参照数据一般是有国标可以参照的,固定不变的,或者是用于企业内部数据分类的,基本固定不变的数据。个人认为主数据与参照数据的标准化是企业数据标准化的核心。请参考《主数据管理实施四部曲概论

     

     

    3、指标数据标准。指标数据是在实体数据基础之上,增加了统计维度、计算方式、分析规则等信息加工后的数据。指标数据标准是对企业业务指标所涉及的指标项的统一定义和管理。企业的财务、销售、采购、生产、质量、售后等各业务域均分布都有其相应的业务指标。这些指标不仅需要在业务系统中统计和展现还需要在数据分析系统中展现,有的指标数据需要多个从不同的业务系统中进行获取。

     

    没有指标数据标准化,你可以想象在每次数据平台有新分析主题构建或旧的分析主题变革,都需要从所涉及的各个系统、库表中进行分析和定义,需要耗费的成本巨大。同时,目前大数据分析都提倡业务人员的自助化分析,没有指标数据标准,业务人员要从不同系统中拿到自己想要的数据进行分析几乎是不可能的。

     

    企业数据标准的梳理

    企业数据标准项目的实施,要根据业界经验和企业实际情况确定实施范围,并根据优先级和难易度制定计划。需要从企业业务域、业务活动、对象实体、实体关系等方面层层递进,逐步展开。对于数据梳理的方法主要用到IRP(企业信息资源规划)和数据仓库的数据梳理法。这两种方式我在《主数据管理实施四部曲概论》的文章进行过分享,有兴趣可以关注。

     

    企业数据标准梳理一般需要以下步骤:

     

     

    首先,对企业业务域进行定义,并对每个业务域中的业务活动进行梳理,同时需要收集各类业务单据、用户视图,梳理每个单据和用户视图的数据对象。

     

    其次,针对数据对象的进行分析,明确每个数据实体所包含的数据项,同时,梳理并确定出该业务域中所涉及的数据指标和指标项。分析并定义每个数据实体或指标的数据项标准,包括:数据项的名称、编码、类型、长度、业务含义、数据来源、质量规则、安全级别、域值范围、管理部门等。

     

    第三,梳理和明确所有数据实体、数据指标的关联关系,并对数据之间的关系进行标准化定义。数据关系也是数据标准管理的内容。

     

    第四,通过以上梳理、分析和定义,确定出主数据标准管理的范围。

     

    数据标准梳理和建设的方法并不难掌握,关键是建设过程中需要收集并整理大量的业务规范、制度章程、法律法规、监管规定、国家标准,并将这些规定具象到数据标准定义的信息项中。对于一个从未做过数据标准的实施团队而言,这将意味着巨大的工作量。

     

    数据标准管理组织

    数据标准管理是企业数据治理的一部分,数据标准管理是一个涉及范围广、业务复杂、数据繁杂的工程。数据标准管理的实施绝非是一个部门的事情,不能在企业的单一部门得到解决。需要从整个组织考虑,建立专业的数据治理组织体系,制定企业数据战略和实施路线图,明确各阶段数据标准工作的目标和内容,并监督及考核数据标准的贯彻与执行。

     

    数据标准管理组织或数据治理组织从职能划分上可以分为三层,如下图所示:

     

    1、数据标准管理委员会,即数据治理的决策层,主要负责制定企业数据战略、把控数据治理的总体策略,审查数据标准的贯彻执行情况。

    2、数据标准管理办公室,是数据治理的经营管理层,主要负责企业数据标准的制定、审查数据质量,贯彻数据标准落地。

    3、数据标准执行层或业务操作层,主要负责数据标准的贯彻执行,并为数据标准的编制和优化提供数据和意见。

     

    数据标准设计流程

    数据标准的设计从需求发起到落地执行,一般需要经过标准编制、标准审查、标准发布、标准贯彻四个阶段:

     

     

    1. 数据标准编制:数据标准管理办公室根据数据需求开展数据标准的编制工作,确定数据数据项,数据标准管理执行组根据所需数据项提供数据属性信息,例如:数据项的名称、编码、类型、长度、业务含义、数据来源、质量规则、安全级别、域值范围等。数据标准管理办公室参照国际、国家或行业标准对这些数据项进行标准化定义并提交审核。注:如没有参考标准,则数据标准管理办公室可根据企业情况制定相应的企业级数据标准。

     

    2. 数据标准审查:数据标准管理委员会对数据标准初稿进行审查,判断数据标准是否符合企业的应用和管理需求,是否符合企业数据战略要求。如数据标准审查不通过,则有数据标准管理办公室进行修订,直到满足企业数据标准的发布要求。

     

    3. 数据标准发布:数据标准审查通过后,由数据标准管理办公室面向全公司进行数据标准的发布。该过程数据标准管理执行组需要配合进行数据标准发布对现有应用系统、数据模型的影响评估,并做好相应的应对策略。

     

    4. 数据标准贯彻:把已定义的数据标准与业务系统、应用和服务进行映射,标明标准和现状的关系以及可能影响到的应用。该过程中,对于企业新建的系统应当直接应用定义好的数据标准,对于旧系统应对一般建议建了相应的数据映射关系,进行数据转换,逐步进行数据标准的落地。

     

    企业进行数据标准化时,除了对数据本身标准化规则构建外,相当大一部分需要考虑标准化流程的管理。而在管理过程中必然会涉及到新旧系统、不同部门、不同业务的冲突,这些冲突如果解决不好将会直接导致标准化的失败。所以,数据标准落地过程要充分做好影响评估和各干系方的沟通。

     

    数据标准管理价值总结:

    一个数据一般有业务属性、技术属性和管理属性组成,例如:数据项的业务定义、业务规则、质量规则为该数据的业务属性;数据项的名称、编码、类型、长度等为该数据的技术属性;数据的存储位置、管理部门、管理人员为该数据的管理属性。而数据标准管理的过程就是对数据以及数据的属性信息的标准化定义和应用的过程。

     

    数据标准目标是为业务、技术和管理提供服务和支持。

    业务方面:通过对实体数据的标准化定义,解决数据不一致、不完整、不准确等问题,消除数据的二义性,使得数据在企业有一个全局的定义,减少了各部门、各系统的沟通成本,提升企业业务处理的效率;标准统一的数据指标体系,让业务人员也能够轻松获取数据,并能够自助式的进行数据分析,为基于数据的业务创新提供可能。

    技术方面:统一、标准的数据及数据结构是企业信息共享的基础;标准的数据模型和标准数据元为新建系统提供支撑,提升应用系统的开发实施效率;数据标准化清晰定义数据质量规则、数据的来源和去向、校验规则,提升数据质量。

    管理方面:通过数据的标准化定义,明确数据的责任主体,为数据安全、数据质量提供保障;统一、标准的数据指标体系为各主题的数据分析提供支持,提升数据处理和分析效率,提供业务指标的事前提示、事中预警、事后提醒,实现数据驱动管理,让领导能够第一时间获取决策信息。

     

    数据标准与主数据、元数据、数据质量的关系

     

    数据治理项目的根本诉求在于提升数据质量

     

    数据标准与主数据的关系

    从范围上看,数据标准包括数据模型标准、主数据标准、参照数据标准、数据指标标准和其他数据元标准,主数据是数据标准的一个子集;从数据梳理和识别、能力成熟度评估、数据标准编制、数据管理和应用、管理体系建设、实施涉及的业务面等方面,数据标准和主数据都是基本相同的。企业在数据治理项目中,有整体建设的,包含了:元数据、主数据、数据标准等领域;也有分开建设的,例如:主数据项目单独立项,数据标准管理和数据仓库放在一起实施;企业应根据自身的实际情况和需求,明确实施范围和内容,制定适合企业发展需要的数据治理路线图。

     

    数据标准与元数据的关系

    元数据是数据标准的基础,企业在制定数据标准的时候最先需要明确的就是数据业务属性、技术属性和管理属性,而这三类属性就是我们所说的业务元数据、技术元数据和管理元数据。基于元数据的数据标准管理,为业务实体的定义、关系和业务规则到IT实现之间提供清晰、标准的语义转换,提高业务和IT之间的一致性,保障IT系统能够真实反映业务事实。并为数据标准系统与其他业务系统的集成,提供有关数据标准、数据映射关系和数据规则的描述,为业务系统的集成提供支撑。

    数据标准与数据质量的关系

    没有标准化就没有信息化,那就更谈不上数据质量了。通过对数据标准的统一定义,明确数据的归口部门和责任主体,为企业的数据质量和数据安全提供了一个基础的保障。通过对数据实体、数据关系以及数据处理阶段,定义统一的标准、数据映射关系和数据质量规则,使得数据的质量校验有据可依,有法可循,为企业数据质量的提升和优化提供支持。

    (文:石秀峰 2019年5月)

    注:本文的首发平台为微信公众号:learning-bigdata(谈数据),如需要了解第一手数据治理相关内容,请关注微信公众号,CSDN微博不定期更新。

    欢迎转载,转载请注明,作者:石秀峰,公众号:learning-bigdata(谈数据)

    展开全文
  • 一、数据标准化(归一化) 首先,数据标准化处理主要包括数据同趋化处理(中心化处理)和无量纲化处理。同趋化处理主要解决不同性质数据问题,对不同性质指标直接加总不能正确反映不同作用力的综合结果,须先考虑...

    一、数据标准化(归一化)

    首先,数据标准化处理主要包括数据同趋化处理(中心化处理)和无量纲化处理。
    同趋化处理主要解决不同性质数据问题,对不同性质指标直接加总不能正确反映不同作用力的综合结果,须先考虑改变逆指标数据性质,使所有指标对测评方案的作用力同趋化,再加总才能得出正确结果。
    无量纲化处理主要为了消除不同指标量纲的影响,解决数据的可比性,防止原始特征中量纲差异影响距离运算(比如欧氏距离的运算)。它是缩放单个样本以具有单位范数的过程,这与标准化有着明显的不同。简单来说,标准化是针对特征矩阵的列数据进行无量纲化处理,而归一化是针对数据集的行记录进行处理,使得一行样本所有的特征数据具有统一的标准,是一种单位化的过程。
    即标准化会改变数据的分布情况,归一化不会,标准化的主要作用是提高迭代速度,降低不同维度之间影响权重不一致的问题。

    数据标准化(归一化)的方法有很多种,常用的有"最小-最大标准化"、"Z-score标准化"和"按小数定标标准化"等等。经过标准化处理后,原始数据均转换为无量纲化指标测评值,即各指标值都处于同一个数量级别上,可以进行综合测评分析。

    本篇只介绍常用的三种常见的转换方法:

    1. 极值法(区间缩放法)

        线性比例变换法:正向指标:y = (x)/(max),即新数据=(原数据)/(最大值)。
                                     负向指标:y = (min)/(x),即新数据=(最小值)/(原数据)。

        极差变换法:正向指标:y = (x- min)/(max - min),即新数据=(原数据-最小值)/(最大值-最小值)。
                              负向指标:y = (max - x)/(max - min),即新数据=(最大值-原数据)/(最大值-最小值)。
        使用这种方法的目的包括:
           1、即0-1标准化,又称最大值-最小值标准化,核心要义是将原始指标缩放到0~1之间的区间内,但不改变原始数据的分布
           1、对于方差非常小的属性可以增强其稳定性;
           2、维持稀疏矩阵中为0的条目。

    2. 比重法

        L2正则化:y = x/sqrt(Σx^2),即新数据=(原数据)/sqrt(平方和),被称为L2正则转换。
        正则化则是通过范数规则来约束特征属性,通过正则化我们可以降低数据训练处来的模 型的过拟合可能,和机器学习中所讲述的L1、L2正则的效果一样。在进行正则化 操作的过程中,不会改变数据的分布情况,但是会改变数据特征之间的相关特性。

    3. 标准化
        Z-score:y = (x - mean)/σ,基于原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化,经过处理的数据符合标准正态分布,即均值为0,标准差为1。

    4. 二值化

    对于定量数据(特征取值连续),根据给定的阈值将其进行转换,如果大于阈值赋值为1,否则赋值为0;对于定性数据(特征取值离散,也有可能是文本数据),根据给定规则将其进行转换,符合规则的赋值为1,否则赋值为0。

    二、特征转换

    特征转换主要指将原始数据中的字段数据进行转换操作,从而得到适合进行算法 模型构建的输入数据(数值型数据),在这个过程中主要包括但不限于以下几种数据的处理: 文本数据转换为数值型数据、缺省值填充、定性特征属性哑编码、定量特征属性二值化、特征标准化与归一化

    • 文本特征属性转换:机器学习的模型算法均要求输入的数据必须是数值型的,所以对于文本类型的特 征属性,需要进行文本数据转换,也就是需要将文本数据转换为数值型数据。常 用方式如下: 词袋法(BOW/TF)、TF-IDF(Term frequency-inverse document frequency)、HashTF、Word2Vec(主要用于单词的相似性考量)。
    • 缺省值填充:缺省值是数据中最常见的一个问题,处理缺省值有很多方式,主要包括以下四个 步骤进行缺省值处理: 确定缺省值范围->去除不需要的字段->填充缺省值内容->重新获取数据。
    • 哑编码(OneHotEncoder):也称哑变量处理,对于定性的数据(也就是分类的数据),可以采用N位的状态寄存器来对N个状态进行编码,每个状态都有一个独立的寄存器位,并且在任意状态下只有一位有效;是一种常用的将特征数字化的方式。比如有一个特征属性:['male','female'],那么male使用向量[1,0]表示,female使用[0,1]表
    • 二值化:第一节已经说明。
    • 标准化(归一化):第一节已经说明。
    # Python相关代码:
    # 注意:代码只是展示方法,并不是连贯的,实际数据处理的时候需要调整
    from sklearn import preprocessing
    from sklearn.model_selection import train_test_split
    from sklearn.datasets import load_iris
    import pandas as pd
    import numpy as np
    
    # 数据标准化(归一化)
    iris = load_iris()
    iris_data = pd.DataFrame(data=iris['data'], columns=iris['feature_names'])
    iris_data['Species'] = iris['target']
    # 将字符串转化为数字,用pd.Categorical
    # pd.Categorical(data)
    # iris_data['Species'] = iris_data["Species"].map({0:"setosa",1:"versicolor",2:"virginica"})
    X, y = iris_data.iloc[:, :-1], iris_data.iloc[:, -1]
    train_data, test_data, train_target, test_target = train_test_split(X, y, test_size=0.25, stratify=y)
    
    # 数据清洗
    # 重复值处理
    print('存在' if any(train_data.duplicated()) else '不存在', '重复观测值')
    train_data.drop_duplicates()
    # 缺失值处理
    print('存在' if any(train_data.isnull()) else '不存在', '缺失值')
    train_data.dropna()  # 直接删除记录
    train_data.fillna(method='ffill')  # 前向填充
    train_data.fillna(method='bfill')  # 后向填充
    train_data.fillna(value=2)  # 值填充
    train_data.fillna(value={'sepal length (cm)':train_data['sepal length (cm)'].mean()})  # 统计值填充
    # 异常值处理
    data1 = train_data['sepal length (cm)']
    # 标准差监测
    xmean = data1.mean()
    xstd = data1.std()
    print('存在' if any(data1>xmean+2*xstd) else '不存在', '上限异常值')
    print('存在' if any(data1<xmean-2*xstd) else '不存在', '下限异常值')
    # 箱线图监测
    q1 = data1.quantile(0.25)
    q3 = data1.quantile(0.75)
    up = q3+1.5*(q3-q1)
    dw = q1-1.5*(q3-q1)
    print('存在' if any(data1> up) else '不存在', '上限异常值')
    print('存在' if any(data1< dw) else '不存在', '下限异常值')
    data1[data1>up] = data1[data1<up].max()
    data1[data1<dw] = data1[data1>dw].min()
    # 0-1标准化
    X_train_minmax = preprocessing.minmax_scale(train_data, feature_range=(0, 1), axis=0, copy=True)  # 直接用标准化函数
    min_max_scaler = preprocessing.MinMaxScaler()  # 也可以用标准化类,然后调用方法
    X_train_minmax2 = min_max_scaler.fit_transform(train_data)
    
    # z-score标准化
    X_train_zs = preprocessing.scale(train_data, axis=0, with_mean=True, with_std=True, copy=True)  # 直接用标准化函数
    zs_scaler = preprocessing.StandardScaler()  # 也可以用标准化类,然后调用方法
    X_train_zs2 = zs_scaler.fit_transform(train_data)
    
    # 归一化处理
    X_train_norm = preprocessing.normalize(train_data, norm='l2', axis=1)  # 直接用标准化函数
    normalizer = preprocessing.Normalizer()  # 也可以用标准化类,然后调用方法
    X_train_norm2 = normalizer.fit_transform(train_data)
    
    # 数据的缩放比例为绝对值最大值,并保留正负号,即在区间[-1, 1]内。唯一可用于稀疏数据scipy.sparse的标准化
    X_train_ma = preprocessing.maxabs_scale(X, axis=0, copy=True)
    
    # 通过 Interquartile Range(IQR) 标准化数据,即四分之一和四分之三分位点之间
    X_train_rb = preprocessing.robust_scale(train_data, axis=0, with_centering=True, with_scaling=True, copy=True)
    
    # 二值化
    X_train_binary = preprocessing.binarize(train_data, threshold=0, copy=True)  # 按照阈值threshold将数据转换成成0-1,小于等于threshold为 0
    
    # 亚编码操作
    encoder = preprocessing.OneHotEncoder()
    X_OH = encoder.fit_transform(train_data)  #
    df = pd.DataFrame(X_OH.toarray())
    print(df.head(5))
    
    # 缺失值插补
    x = [[np.nan, '1', '3'], [np.nan, '3', '5']]
    imputer = preprocessing.Imputer(missing_values='NaN', strategy='mean', axis=1)
    y = imputer.fit_transform(x)
    
    # 根据分位点将特征转换成均匀分布或正态分布
    # preprocessing.quantile_transform()
    # 和 OneHotEncoder 类似,将类别特征转换为多维二元特征,并将每个特征扩展成用一维表示
    # preprocessing.label_binarize()
    # 多项式转换
    # preprocessing.PolynomialFeatures
    # 增加一列伪特征
    # preprocessing.add_dummy_feature()
    # 核函数
    # a=preprocessing.KernelCenterer

    最后简要介绍下增维/降维方法,以及特征选择相关建议,后续如果用上会在详细补充:
    1. 增唯方法
    多项式扩展:多项式数据变换主要是指基于输入的特征数据按照既定的多项式规则构建更多的 输出特征属性,比如输入特征属性为[a,b],当设置degree为2的时候,那么输出 的多项式特征为[1, a, b, a^2, ab, b^2]
    核函数:高维空间到低维空间的映射
    GBDT+LR:认为每个样本在决策树落在决策树的每个叶子上就表示属于一个类别, 那么我们可以进行基于GBDT或者随机森林的维度扩展,经常我们会将其应用在GBDT将数据进行维度扩充, 然后使用LR进行数据预测。

    2. 降维方法

    PCA、LDA

    3. 特征选择

    在选择模型的过程中,通常从两方面来选择特征:
        1. 特征是否发散:如果一个特征不发散,比如方差接近于0,也就是说这样的特征对于样本的区分没有什么作用。
        2. 特征与目标的相关性:如果与目标相关性比较高,应当优先选择。
        特征选择的方法主要有以下三种:

    • Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,从而选择特征;常用方法包括方差选择法、相关系数法、卡方检验、 互信息法等。
    • Wrapper:包装法,根据目标函数(通常是预测效果评分),每次选择若干特征或者排除若干特征;常用方法主要是递归特征消除法。
    • Embedded:嵌入法,先使用某些机器学习的算法和模型进行训练,得到各个特征的权重系数,根据系数从大到小选择特征;常用方法主要是基于惩罚项的特征选择法。

    部分内容参考网址:https://cloud.tencent.com/developer/article/1111767

    展开全文
  • python数据预处理 :数据标准

    万次阅读 2018-11-25 17:14:41
    在数据分析之前,我们通常需要先将数据标准化(normalization),利用标准化后的数据进行数据分析。数据标准化也就是统计数据的指数化。数据标准化处理主要包括数据同趋化处理和无量纲化处理两个方面。数据同趋化...
  • 1.1.1 数据标准体系建设 ...配合数据标准落地搭建相关的数据标准管理平台,用户管理和维护数据标准,并提供数据标准的查询浏览和导出等相关功能,标准监控通过数据质量监控平台完成。如下图所示: 图 6...
  • 数据标准

    千次阅读 2016-10-30 23:01:19
    数据标准化,是指将数据按比例缩放,使之落到一个特定的区间,数据标准化目的是为消除单位的影响,方便进行比较分析,常用的数据标准化方法有【0-1标准化】和【Z标准化】。 0-1标准化 0-1标准化也称为离差...
  • 返回数据标准(后端反馈数据标准化)

    千次阅读 2018-04-14 10:34:47
    返回数据标准 我们做了一个后台管理项目(lotteryCMS),为了解析时好解析,我们会对从db中拿到的数据进行封装,当前端接受到数据的时候根据反馈的code就可以决定自己是否要解析这次查询的数据了。 我们定义一个...
  • 数据标准化处理

    千次阅读 2019-03-28 21:11:36
    数据标准化是一个常用的数据预处理操作,目的是处理不同规模和量纲的数据,使其缩放到相同的数据区间和范围,以减少规模、特征、分布差异等对模型的影响。除了用作模型计算,标准化后的数据还具有了直接计算并生成...
  • 3.4.2数据标准化(一) - Z-Score标准化

    万次阅读 多人点赞 2018-05-14 18:05:25
    数据标准化中,常见的方法有如下三种:Z-Score 标准化最大最小标准化小数定标法本篇主要介绍第一种数据标准化的方法,Z-Score标准化。此方法在整个数据分析与挖掘体系中的位置如下图所示。Z-Score处理方法处于整个...
  • Python3实现常用数据标准化方法

    万次阅读 多人点赞 2018-06-16 12:32:50
    常用数据标准化方法python实现 数据标准化是机器学习、数据挖掘中常用的一种方法。包括我自己在做深度学习方面的研究时,数据标准化是最基本的一个步骤。数据标准化主要是应对特征向量中数据很分散的情况,防止小...
  • 一、数据归一化的好处:数据标准化和归一化的区别和联系: 在进行处理数据的时候,标准化的方法是比较多的,其中数据归一化是一种常见的数据的标准化,只不过标准化只是将数据进行规范到一个范围之内,对于数据的...
  • 数据标准化【0~1标准化和Z标准化】

    千次阅读 2020-05-29 15:37:58
    数据标准化 一、Z标准化 经过处理后,数据的均值为0,标准差为1。 二、0~1标准化 1.自定义函数: """ 1.0~1标准化:也称离差标准化,它是对原始数据进行线性变换, 使结果落到 [0,1] 区间. X=(x - min)/(max -...
  • 数据标准化是数据仓库建立过程中的另一个难点和重点。可以说如果企业没有建立自己的数据标准,基本上是无法建立统一的、整合的数据仓库模型的。数据标准有很多理论标准的,比如,国家标准有一个叫《数据元的规范与...
  • 数据标准化处理方法

    千次阅读 2017-10-31 11:56:53
    数据标准化处理方法 在数据分析之前,我们通常需要先将数据标准化(normalization),利用标准化后的数据进行数据分析。数据标准化也就是统计数据的指数化。数据标准化处理主要包括数据同趋化处理和无量纲化处理两个...
  • 数据分析——数据标准

    千次阅读 2015-10-27 17:07:08
    一、为何要将数据标准化? 为了消除量纲影响和变量自身变异大小和数值大小的影响,故将数据标准化。  由于不同变量常常具有不同的单位和不同的变异程度。不同的单位常使系数的实践解释发生困难。例如:第1个变量...
  • 在数据分析与挖掘、算法建模的都会用到数据标准化。数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的...
  • 数据标准化中数据域的确定

    千次阅读 2016-03-30 08:28:46
    在进行数据标准化的过程中需要确定属性或者实体的域,通过该域可完成属性或者实体的类别划分以及属性的某些类型约束。例如我们可以在域中确定域的描述信息例如类型、长度以及解释信息,从而实现了域某种程度上的约束...
  • python中的数据标准

    万次阅读 2017-10-14 21:32:46
    在python中进行数据标准化可以通过sklearn中的StandardScaler模块来实现。 1)模块的导入 我们可以通过下边的命令来导入StandardScaler模块   from sklearn.preprocessing import StandardScaler 2)常用...
  • Pandas之数据标准

    千次阅读 2018-05-21 19:34:55
    数据标准化:将数据按比例缩放,使之落入到特定区间,一般我们使用0-1标准化。公式:X=(x-min)/(max-min)from pandas import read_csv; df = read_csv("E:\\pythonlearning\\datacode\\firstpart\\4\\4.14\\...
  • 数据的标准化和归一化 数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。...目前数据标准化方法有多种,归结起来可以分为直线型方法(如极值法、标准差法)、折线型方法(...
  • 数据标准化的方法与意义

    万次阅读 多人点赞 2017-07-01 16:28:54
    含义数据标准化和归一化存在区别 数据归一化是数据标准化的一种典型做法,即将数据统一映射到[0,1]区间上. 数据的标准化是指将数据按照比例缩放,使之落入一个特定的区间.意义 求解需要 比如在SVM中处理分类问题是...
  • 数据标准化方法z-score讲解(matlab)

    万次阅读 2016-11-10 17:19:17
    在数据分析之前,我们通常需要先将数据标准化(normalization),利用标准化后的数据进行数据分析。z-score 标准化(正太标准化)是基于原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。将A的...
  • 数据标准化与数据模型的管理流程

    千次阅读 2016-03-30 08:30:32
    当一个企业进行数据标准化或数据模型管理时,除了对数据本身标准化规则或者相应表格的构建外,相当大一部分需要考虑标准化流程的管理。而在管理过程中必然会设计到新旧系统、不同部门、不同业务的冲突,这些冲突如果...
  • 三种常用数据标准化方法

    千次阅读 2019-02-25 17:02:07
    什么是数据标准化(Normalization)? 数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于...
  • 超详细:R语言数据标准

    千次阅读 2018-01-26 17:20:11
    数据标准化(Normalization)将数据按比例缩放,使之落入一个小的特定区间。去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。数据标准化处理主要包括数据同趋化处理和...
  • 企业数据标准规划、建设和应用

    千次阅读 2016-11-29 10:32:21
    什么是数据标准,业界数据标准体系架构,数据标准具体表现形式是什么样的,数据标准包含内容有哪些; 第二部分结合我们数据标准实施经验,介绍标准如何建立、落地、维护的整个流程;并介绍几个标准落地的几个关键点...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 186,358
精华内容 74,543
关键字:

数据标准