数据归一化和两种常用的归一化方法

数据归一化和两种常用的归一化方法数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。以下是两种常用的归一化方法:一、min-max标准化(Min-MaxNormalization)也称为离差标准…

大家好,又见面了,我是你们的朋友全栈君。

数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。以下是两种常用的归一化方法:

一、min-max标准化(Min-Max Normalization)

也称为离差标准化,是对原始数据的线性变换,使结果值映射到[0 – 1]之间。转换函数如下:

clip_image002

      其中max为样本数据的最大值,min为样本数据的最小值。这种方法有个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。

二、Z-score标准化方法

    这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1,转化函数为:

clip_image004

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

 

Z-score标准化的sklearn方法:http://blog.csdn.net/u011630575/article/details/79406612


数据的标准化(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的重要性吧?)。对于这样的模型,是否标准化理论上不会改变最优解。但是,由于实际求解往往使用迭代算法,如果目标函数的形状太“扁”,迭代算法可能收敛得很慢甚至不收敛。所以对于具有伸缩不变性的模型,最好也进行数据标准化。

不需要归一化的模型:

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152287.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Oracle数据恢复顾问(Data Recovery Advisor)「建议收藏」

    Oracle数据恢复顾问(Data Recovery Advisor)「建议收藏」Oracle数据恢复顾问用于当数据发生错误或故障时,进行自动收集数据故障信息,并生成恢复脚本,用于完成数据恢复。数据恢复顾问也可以主动检查故障。在这种模式下,它可以在数据库进程发现数据损坏并发出错误之前进行潜在的检测并分析数据故障。数据故障可能非常严重。例如,如果您当前的日志文件丢失,则无法启动你的数据库。。。。。

    2022年7月17日
    14
  • react对象控制台输出 null 的问题

    react对象控制台输出 null 的问题

    2021年7月2日
    84
  • Scala中 fastjson Object转JsonObject

    Scala中 fastjson Object转JsonObjectScala中,fastjson的Object转JsonObject相比于Java有些差别,不支持像Java一样强转。//java中Object转JsonObjectJSONObjectjsonObject=(JSONObject)JSON.toJSON(eventBean);导包<!–阿里巴巴开源json解析框架–><dep…

    2022年4月29日
    180
  • DM368开发 — 视频监控系统相关技术研究(转毕设)[通俗易懂]

    DM368开发 — 视频监控系统相关技术研究(转毕设)[通俗易懂]基于DM368的高清视频监控系统设计与实现–文波

    2022年8月13日
    7
  • oracle 存储过程返回结果集

    oracle 存储过程返回结果集因为以前一直用sqlserver多,现在一下子用oracle,工具什么都不熟,局限于sqlserver的思想 网上搜,和问朋友,跟我讲了一大堆,什么loop啊,decalre啊,package啊,什么命令窗口啊,什么sqlplus啊,什么不支持pl/sql啊.耽误了好几个小时..完全都是在误导人,其实什么都不需要。只需要定义一个结果集,把东西存到结果集中就结束(这个结果集叫做游标),先…

    2022年7月17日
    20
  • 数组的splice方法和slice方法_splice方法返回值

    数组的splice方法和slice方法_splice方法返回值功能强大的splice方法数组中最强大的方法splice(),可以对数组进行添加、删除、替换操作删除arr=[‘0赵’,‘1钱’,‘2孙’,‘3李’,‘4周’,‘5吴’]arr.splice(index,num)第一个参数表示开始删除的索引位置,num表示删除的个数如arr.splice(1,2)返回的结果为:arr=[‘0赵’,‘3李’,‘4周’,‘5吴’]添加arr=[‘0赵’,‘1钱’,‘2孙’,‘5吴’]arr.splice(index,0,‘x’,‘y’)第一个参数表示

    2022年9月25日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号