数据分析时经常需要数据标准化处理,常见的比如:回归、主成分、因子分析等,在神经网络、聚类分析中也会经常用到数据标准化预处理,甚至感觉一切的数据分析好像都需要标准化预处理。
为什么要标准化
下面是著名的“鸢尾花”数据(R语言自带),以前做分析时用到的,看一下前六行:
显然,Sepal.Length(花萼长)与Petal.Width(花瓣宽)大小不在一个数量级,大概相差20倍。
现在,如果我们想做一个简单的数据分析:
Sepal.Width(花萼宽)~其它四个变量的线性关系
显然,Sepal.Length(花萼长)与Petal.Width(花瓣宽)作为一个变量(空间中的正交基),它们应该是平等的(如果没有线性相关关系)。如果直接用原始数据的话,Sepal.Length(花萼长)的系数绝对值应该比较小,因为相比之下,它的数量级大于Petal.Width(花瓣宽)。
这时候,就需要做常规的数据标准化处理,比如:
(每个数-均值)/标准差
用R语言简单演示一下:
直接调用函数scale():
sl.sc <- scale(iris[,1])
可以手动验证:
sl <- iris[,1]
(sl-mean(sl))/sd(sl)
最后发现它们确实用的公式:
(每个数-均值)/标准差
标准化之后的数据就是同一个范围,包括大小、也无量纲。这时候,不管是做回归还是主成分等,就可以继续进行了。
数据标准化主要功能就是消除变量间的量纲关系,从而使数据具有可比性。
标准化方法
对于原始数据序列x,可以有如下常用标准化方法:
1、最小-最大规范化(线性变换)
这样,标准化后的数据范围为0<= y <=1,可以取值0和1,分别当x取最值的时候。这是一个线性变换,因为它本身就是一个线性关系式。
2、z-score规范化
这是用每个数据首先减去均值再除以标准差,处理后序列正负值的分布反映了数据的峰度偏度。比如:处理后序列负值居多,表明数据小于均值较多,那么均值水平就是为数不多的几个异常较大的值撑起来的。这种方法最常见,用的最多。
3、小数定标规范化
这种方法是把大数据适当缩小,然后把预测的数据按照预处理公式变换即可。
4、对数Logistic模式
5、模糊量化模式
显然,这种处理后数据在【0,1】之间,好像也行。在网上以前见过,真有想象力,这么复杂的式子都能构造出来,数学家就是厉害。
还有很多其它例子。数据标准化在BP神经网络预测中经常会用到,因为生活中的数据总是大大小小、各种影响因素,需要先标准化预测再还原。想一下,其实在做聚类分析时也可以进行标准化的,对于数据值比较大,计算距离,最后误差精度可能比较大,难以控制,也可以通过标准化到0~1之间进行不断迭代聚类等。
总而言之,数据标准化在数据分析中的用处还是很广泛的!
欢迎留言、提建议,觉得不错,记得【点赞】、分享!
猜你可能喜欢
3月开工季,课程半价优惠,点击阅读原文领取福利!