事情是这样的,就是某天在本菜日常"飙车"回宿舍的途中,想着曾经有个项目在对数据进行预处理的时候,用过一个操作,本来就已经对数据进行了标准化处理,然而在甲方(注意这里是万恶之源)对我算法代码的阅读时提出了,没有进行归一化处理的疑惑,顿时间,我想了想,好像是这么一回事哈,一个转身像超人一样消失在甲方面前,回去加了两行代码(归一化处理),跑完发现,咦~~好像真的效果提高了不少诶。故引发了我对下面的内容的思考,并想多说两句,望各位看官批评指点!!!
(上面不算,不能计时哈o(╥﹏╥)o)
其实有很多博主已经做了对标准化、归一化和中心化的理解介绍,但我始终感觉还是有一一点的繁琐,下面 本菜鸡 就尝试⚡一分钟⚡让你搞懂标准化、归一化和中心化,且他们的适用场景!
指明一点其中标准化和归一化其实都属于特征缩放(Feature scaling)的方法,被人误解很久(估计是翻译问题),下面只讲简单的标准化和归一化,复杂的在后续Blog呈现。
(o(╥﹏╥)o上面也不算哈,不能计时呀o(╥﹏╥)o)
标准化(Standardized)
简单粗暴的定义:将数据按比例缩放,使之落入一个小的特定区间,缩放到均值为0,方差为1。
首先,上公式,
参考sklearn的数据预处理官方文档,这里引用一下假设的身高和体重数据特征,且均满足正态分布
原始数据集
当我们通过标准化后,得到的为,
标准化后的数据
可见标准化后也同样满足正态分布,可以看出每个维度上的尺度是一致的,适合进行综合对比。
适用范畴:常用于数据之间差异过大。
归一化(Normalization)
简单的归一化指的就是,缩放到0和1之间,且保留原始数据的分布。
同样,简单归一化后的数据为,
归一化
数据的分布不变,去除了量纲的影响,缩小到(0,1)之间。
适用范畴:主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速。提高收敛速度,提高模型精度。
中心化处理(Decentralized)
在回归分析中,中心化处理(又叫零均值化)常常指的是将变量减去它的均值,可得到均值为0,标准差为1的服从标准正态分布的数据。
简单来说就是将数据平移到坐标中心原点处。
引用一张网络上的元老级图来解释
中心化和标准化
左边为原始数据,中间为中心化处理,右边则为标准化处理数据。
中心化处理后的数据则是以原点为基准的,对向量也更容易描述。在做PCA时有所用到。