当前位置: 首页 > >

规格化数据方法

发布时间:

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


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


min-max标准化(Min-max normalization)


min-max标准化方法是对原始数据的线性变换。设minA和maxA分别为属性A的原始值中的最小值和最大值,将属性A的一个原始值v通过min-max标准化映射成在区间[new_minA, new_maxA]中的值v’的计算方法是:



若新的取值区间是[0,1],则公式可简化为:



min-max标准化方法保留了原始数据之间的相互关系,但是如果标准化后,新输入的数据超过了原始数据的取值范围,即不在原始区间[minA, maxA]中,则会产生越界错误。因此这种方法适用于原始数据的取值范围已经确定的情况。


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


这种方法基于原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。将属性A的原始值v使用z-score标准化到v’的计算方法是:



其中A是属性A原始值得均值,σA是属性A原始值的标准差。标准差σA即为方差σ^2的*方根。方差的计算公式如下:



z-score标准化方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。


Decimal scaling


这种方法通过移动数据的小数点位置来进行标准化。小数点移动多少位取决于属性A的取值中的最大绝对值。将属性A的原始值v使用decimal scaling标准化到v’的计算方法是:



其中,j是满足条件的最小整数。


注意,标准化会对原始数据做出改变,因此需要保存所使用的标准化方法的参数,以便对后续的数据进行统一的标准化。


log函数转换


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



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


atan函数转换

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



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


而并非所有数据标准化的结果都映射到[0,1]区间上,其中最常见的标准化方法就是Z标准化,也是SPSS中最为常用的标准化方法。




相关方法及matlab实现:http://www.docin.com/p-643578744.html



友情链接: