数据标准化的原因及方法-一起大数据
来自 http://blog.sina.com.cn/s/blog_4ee13c2c0100o92b.html
一、为何要将数据标准化?
由于不同变量常常具有不同的单位和不同的变异程度。 不同的单位常使系数的实践解释发生困难。例如:第1个变量的单位是kg,第2个变量的单位是cm,那么在计算绝对距离时将出现将两个事例中第1个变量观察值之差的绝对值(单位是kg)与第2个变量观察值之差的绝对值(单位是cm )相加的情况。使用者会说5kg的差异怎么可以与3cm的差异相加? 不同变量自身具有相差较大的变异时,会使在计算出的关系系数中,不同变量所占的比重大不相同。例如如果第1个变量(两水稻品种米粒中的脂肪含量)的数值在2%到4%之间,而第2个变量(两水稻品种的亩产量)的数值范围都在1000与5000之间。为了消除量纲影响和变量自身变异大小和数值大小的影响,故将数据标准化。
二、数据标准化的方法:
1、对变量的离差标准化
离差标准化是将某变量中的观察值减去该变量的最小值,然后除以该变量的极差。即
x’ik=[xik -Min (xk)]/Rk
经过离差标准化后,各种变量的观察值的数值范围都将在〔0,1〕之间,并且经标准化的数据都是没有单位的纯数量。离差标准化是消除量纲(单位)影响和变异大小因素的影响的最简单的方法。 有一些关系系数(例如绝对值指数尺度)在定义时就已经要求对数据进行离差标准化,但有些关系系数的计算公式却没有这样要求,当选用这类关系系数前,不妨先对数据进行标准化,看看分析的结果是否为有意义的变化。
2,对变量的标准差标准化
标准差标准化是将某变量中的观察值减去该变量的平均数,然后除以该变量的标准差。即
x’ik= (xik - )/sk
经过标准差标准化后,各变量将有约一半观察值的数值小于0,另一半观察值的数值大于0,变量的平均数为0,标准差为1。经标准化的数据都是没有单位的纯数量。对变量进行的标准差标准化可以消除量纲(单位)影响和变量自身变异的影响。但有人认为经过这种标准化后,原来数值较大的的观察值对分类结果的影响仍然占明显的优势,应该进一步消除大小因子的影响。尽管如此,它还是当前用得最多的数据标准化方法。
3,先对事例进行标准差标准化,再对变量进行标准差标准化
第一步,先对事例进行标准差标准化,即将某事例中的观察值减去该事例的平均数,然后除以该事例的标准差。即
x’ik= (xik - )/si
第二步,再对变量进行标准差标准化,即将某变量中的观察值减去该变量的平均数,然后除以该变量的标准差。即
x’’ik= (x’ik - ’k)/s’k
使用这种标准化的目的也在于消除性状间的量纲(单位)影响和变异大小因子的影响,使性状间具有可比性。
4,先对变量、后对事例、再对变量的标准差标准化
这种标准化的目的也在于消除性状间的量纲(单位)影响和变异大小因子的影响,使性状间具有可比性。具体做法是:
第一步,先对变量进行标准差标准化,即将某变量中的观察值减去该变量的平均数,然后除以该变量的标准差。即
x’ik= (xik - )/sk
第二步,后对事例进行标准差标准化,即将某事例中的观察值减去该事例的平均数,然后除以该事例的标准差。即
x’’ik= (x’ik - ’i)/s’i
第三步,再对变量进行标准差标准化,即将某变量中的观察值减去该变量的平均数,然后除以该变量的标准差。即
x’’’ik= (x’’ik - ’’k)/s’’k
进行了前两步之后,还要进行第三步的原因,主要是为了计算的方便。
来自:http://blog.csdn.net/xiaoyu714543065/article/details/7837668
在数据分析过程中,我们经常需要对数据进行标准化(normalization),数据标准化主要功能就是消除变量间的量纲关系,从而使数据具有可比性。可以举个简单的例子,一个百分制的变量与一个5分值的变量在一起怎么比较?只有通过数据标准化,都把它们标准到同一个标准时才具有可比性。即通过将属性数据按照比例缩放,使之落入一个小的特定区间,如[-1,+1]、[0,1]等,以进一步分析数据的属性。
有许多中数据标准化方法,常用的有最小-最大标准化、Z-score标准化和按小数定标标准化等。下面对数据标准化的常用方法进行了介绍:
一、Min-Max标准化
min-max标准化方法是对原始数据进行线性变换。设minA和maxA分别为属性A的最小值和最大值,将A的一个原始值x通过min-max标准化映射成在区间【0,1】中的值,其公式为:
新数据=(原数据-极小值)/(极大值-极小值)
这种方法适用于原始数据的取值范围已经确定的情况。
例如:假定属性income的最小与最大值分别为98,000。我们想映射income到区间[0,1]。根据min-max标准化,incom值$73,600将变换为
(73,600-12,000)/(98,000-12,000)×(1-0)=0.716。
二、z-score标准化
这种方法基于原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。将属性A的原始值v使用z-score标准化到v’的计算方法是:
新数据=(原数据-均值)/标准差
z-score标准化方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。
spass的默认的标准化方法就是z-score标准化。
用Excel进行z-score标准化的方法:在Excel中没有现成的额函数,需要自己分步计算,其实标准化的公式很简单。
步骤如下:
1、求出各变量(指标)的算术平均值(数学期望)xi和标准差si
2、进行标准化处理:zij=(xij-xi)/si。其中:zij为标准化后的变量值;xij为实际变量值。
3、将逆指标钱的正负号对调。标准化后的变量值围绕0上下波动,大雨0说明高于平均水平,小于0说明低于平均水平。
三、Decimal scaling(小数定标标准化)
这种方法通过移动数据的小数点位置来进行标准化。小数点移动多少位取决于属性A的取值中的最大绝对值。将属性A的原始值x使用decimal scaling标准化到y’的计算方法是:y=x/(10*j) 其中,j是满足条件的最小整数。
例如 假定A的值由-986到917,A的最大绝对值为986,为使用小数定标标准化,我们用1000(即,j=3)除以每个值,这样,-986被规范化为-0.986。
注意,标准化会对原始数据做出改变,因此需要保存所使用的标准化方法的参数,以便对后续的数据进行统一的标准化。
参考资料:
1. Data Mining: Concepts and Techniques, Jiawei Han and Micheline Kamber, 2006
来自:http://www.cnblogs.com/nanpo/archive/2012/11/04/2754353.html
处理数据时经常会遇到比较两个不同数据集的情况(比如比较具有不同教育水平地区学生的成绩,比较不同网页的受欢迎程度),这时就需要先将数据标准化,再进行比较。
数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。
网站数据分析上有一篇很好的帖子《数据的标准化》,里面详细分析了归一化(可以看成是特殊的数据标准化)常用的四种方法:
- min-max标准化
- log函数转换:百度知道里确实有很多人说用log10归一化。。。
- atan函数转换
- z-score标准化
另外,在《统计数据标准化–无量纲化方法》中按照所使用的函数分为三种方法(这篇论文超级水):
- 直线型无量纲法
- 折线形无量纲法
- 曲线型无量纲法
在选择标准化方法前必须要先了解数据,再决定使用哪种方法。工程上需要保证性能且数据量很大的时候不适合用min-max, z-score, 他们都需要先遍历所有数据一次,找出极值或均值后才能计算;一般情况下,如果数据的绝大部分集中分布在某个区间,折线法会让数据具有可控的区分度,而且实现起来简单,快速(虽然看上去有点糙)。
也推荐同学们看看数据小兵的文章