查看原文
其他

165cm大于50kg吗——数据标准化有理

柯广 大数据技术派 2022-10-15

数据分析时经常需要数据标准化处理,常见的比如:回归、主成分、因子分析等,在神经网络、聚类分析中也会经常用到数据标准化预处理,甚至感觉一切的数据分析好像都需要标准化预处理。

为什么要标准化

下面是著名的“鸢尾花”数据(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)

最后发现它们确实用的公式:


(每个数-均值)/标准差


标准化之后的数据就是同一个范围,包括大小、也无量纲。这时候,不管是做回归还是主成分等,就可以继续进行了。


数据标准化主要功能就是消除变量间的量纲关系,从而使数据具有可比性。


标准化的目标

1 把数变为(0,1)之间的小数

主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速,应该归到数字信号处理范畴之内。


2 把有量纲表达式变为无量纲表达式

归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。比如,复数阻抗可以归一化书写:Z = R + jωL = R(1 + jωL/R) ,复数部分变成了纯数量了,没有量纲。

另外,微波之中也就是电路分析、信号系统、电磁波传输等,有很多运算都可以如此处理,既保证了运算的便捷,又能凸现出物理量的本质含义。


标准化方法

对于原始数据序列x,可以有如下常用标准化方法:

1、最小-最大规范化(线性变换)



这样,标准化后的数据范围为0<= y <=1,可以取值0和1,分别当x取最值的时候。这是一个线性变换,因为它本身就是一个线性关系式。


2、z-score规范化

这是用每个数据首先减去均值再除以标准差,处理后序列正负值的分布反映了数据的峰度偏度。比如:处理后序列负值居多,表明数据小于均值较多,那么均值水平就是为数不多的几个异常较大的值撑起来的。这种方法最常见,用的最多。


3、小数定标规范化

这种方法是把大数据适当缩小,然后把预测的数据按照预处理公式变换即可。


4、对数Logistic模式

5、模糊量化模式

显然,这种处理后数据在【0,1】之间,也行。


还有很多其它例子。数据标准化在BP神经网络预测中经常会用到,因为生活中的数据总是大大小小、各种影响因素,需要先标准化预测再还原。想一下,其实在做聚类分析时也可以进行标准化的,对于数据值比较大,计算距离,最后误差精度可能比较大,难以控制,也可以通过标准化到0~1之间进行不断迭代聚类等。


欢迎留言、提建议,觉得不错,记得【点赞】、分享!


猜你可能喜欢

基于最小二乘法的线性回归拟合

多元线性回归、逐步回归、逻辑回归的总结

K-Means算法、非负矩阵分解(NMF)与图像压缩

Python系列之——好用的Python开发工具


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存