标点符(钱魏 Way)

规格化数据方法

数据的标准化(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中最为常用的标准化方法。

码字很辛苦,转载请注明来自标点符《规格化数据方法》

评论

  1. k #1

    好高深啊~~ 看了半天脑子还是浆糊~~ 为啥非要写姓名和邮箱才能留言啊

    回复
    2010-11-19
  2. tedlz123 #2

    Decimal scaling 本质上是科学计数法吧,这种归一化应该几乎不用的,因为它会破坏数据的数量级。

    回复
    2015-09-3