Matlab数据标准化——mapstd、mapminmax

Matlab神经网络工具箱中提供了两个自带的数据标准化处理的函数——mapstd和mapminmax,本文试图解析一下这两个函数的用法。

一、mapstd

mapstd对应我们数学建模中常使用的Z-Score标准化方法。

What is Z-Score?(摘自Orange_Spotty_Cat的CSDN博客,原文链接https://blog.csdn.net/Orange_Spotty_Cat/article/details/80312154

简介


Z-Score标准化是数据处理的一种常用方法。通过它能够将不同量级的数据转化为统一量度的Z-Score分值进行比较。

一句话解释版本:

Z-Score通过(x-μ)/σ将两组或多组数据转化为无单位的Z-Score分值,使得数据标准统一化,提高了数据可比性,削弱了数据解释性。

Z-Score标准化是数据处理的方法之一。在数据标准化中,常见的方法有如下三种:

  1. Z-Score 标准化
  2. 最大最小标准化
  3. 小数定标法

Z-Score的定义


Z-Score处理方法处于整个框架中的数据准备阶段。也就是说,在源数据通过网络爬虫、接口或其他方式进入数据库中后,下一步就要进行的数据预处理阶段中的重要步骤。

数据分析与挖掘中,很多方法需要样本符合一定的标准,如果需要分析的诸多自变量不是同一个量级,就会给分析工作造成困难,甚至影响后期建模的精准度。

举例来说,假设我们要比较A与B的考试成绩,A的考卷满分是100分(及格60分),B的考卷满分是700分(及格420分)。很显然,A考出的70分与B考出的70分代表着完全不同的意义。但是从数值来讲,A与B在数据表中都是用数字70代表各自的成绩。

那么如何能够用一个同等的标准来比较A与B的成绩呢?Z-Score就可以解决这一问题。

下图描述了Z-Score的定义以及各种特征。

 

Z-Score的目的

如上图所示,Z-Score的主要目的就是将不同量级的数据统一转化为同一个量级,统一用计算出的Z-Score值衡量,以保证数据之间的可比性。

Z-Score的理解与计算
在对数据进行Z-Score标准化之前,我们需要得到如下信息:

1)总体数据的均值(μ)

     在上面的例子中,总体可以是整个班级的平均分,也可以是全市、全国的平均分。

2)总体数据的标准差(σ)

     这个总体要与1)中的总体在同一个量级。

3)个体的观测值(x)

    在上面的例子中,即A与B各自的成绩。

通过将以上三个值代入Z-Score的公式,即:

 

 

我们就能够将不同的数据转换到相同的量级上,实现标准化。

 

重新回到前面的例子,假设:A班级的平均分是80,标准差是10,A考了90分;B班的平均分是400,标准差是100,B考了600分。

通过上面的公式,我们可以计算得出,A的Z-Score是1((90-80)/10),B的Z-Socre是2((600-400)/100)。因此B的成绩更为优异。

反之,若A考了60分,B考了300分,A的Z-Score是-2,B的Z-Score是-1。因此A的成绩更差。

因此,可以看出来,通过Z-Score可以有效的把数据转换为统一的标准,但是需要注意,并进行比较。Z-Score本身没有实际意义,它的现实意义需要在比较中得以实现,这也是Z-Score的缺点之一。

Z-Score的优缺点
Z-Score最大的优点就是简单,容易计算,在R中,不需要加载包,仅仅凭借最简单的数学公式就能够计算出Z-Score并进行比较。此外,Z-Score能够应用于数值型的数据,并且不受数据量级的影响,因为它本身的作用就是消除量级给分析带来的不便。

但是Z-Score应用也有风险。首先,估算Z-Score需要总体的平均值与方差,但是这一值在真实的分析与挖掘中很难得到,大多数情况下是用样本的均值与标准差替代。其次,Z-Score对于数据的分布有一定的要求,正态分布是最有利于Z-Score计算的。最后,Z-Score消除了数据具有的实际意义,A的Z-Score与B的Z-Score与他们各自的分数不再有关系,因此Z-Score的结果只能用于比较数据间的结果,数据的真实意义还需要还原原值。
---------------------
作者:Orange_Spotty_Cat
来源:CSDN
原文:https://blog.csdn.net/Orange_Spotty_Cat/article/details/80312154
版权声明:本文为博主原创文章,转载请附上博文链接!

 

了解了Z-Score标准化是什么之后,我们来看一下matlab中该标准化对应的函数的help:

mapstd Map matrix row means and deviations to standard values.

mapstd processes input and target data by mapping its mean and standard deviations to 0 and 1 respectively.

[Y,settings] = mapstd(X) takes a matrix and returns it transformed with the settings used to perform the transform.

Here data with non-standard mean/deviations in each row is transformed.

x1 = [log(rand(1,20)*5-1); rand(1,20)*20-10; rand(1,20)-1]; [y1,settings] = mapstd(x1)

mapstd('apply',X,settings) transforms X consistent with settings returned by a previous transformation.

x2 = [log(rand(1,20)*5-1); rand(1,20)*20-10; rand(1,20)-1]; y2 = mapstd('apply',x2,settings)

mapstd('reverse',Y,settings) reverse transforms Y consistent with settings returned by a previous transformation.

x1_again = mapstd('reverse',y1,settings)

 

可以看到,mapstd的使用方法有如下几种:

[Y, PS] = mapstd(X)

[Y, PS] = mapstd(X, fp)

[Y, PS] = mapstd(X, ymeans, ystd)

Y = mapstd('apply', X, PS)

X = mapstd('reverse', Y, PS)

dx_dy = mapstd('dx_dy', X, Y, PS)

我们依次来看一下这五种使用方法:

①最常规的、一般来说最先调用的使用方法:[Y, settings] = mapstd(X)

调用形式:X是待处理的数据,数据格式如下表所示(每一列代表一个对象的m个属性,每一行是所有对象的一条属性)

x1
  • 6
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值