标准化、归一化、中心化

版权声明:本文为博主原创文章,转载请附上此地址。 https://blog.csdn.net/qq_36523839/article/details/82919412

标准化、归一化、中心化

数据分析及挖掘中常提到的几个概念(数据的 标准化、归一化、中心化),虽然经常在用,但可能还是有一些比较生僻的知识容易搞混淆,所以在十月国庆大家都出门上高速堵车的时候抽了点时间对这些概念以我的能力和理解做一个相对系统和浅显的总结。

本篇文章通过个人以前对这些知识的一个先验理解,然后主要查阅和参考了数篇相关知识文档的介绍后,做了如下的总结。(注:尤其是标准化、归一化极容易混淆两者)

标准化:

特点:

对不同特征维度的数据做伸缩变换(数据按比例缩放,使之落入一个小的特定区间),其目是使不同度量之间的特征具有可比性。并且同时不改变原始数据的分布状态。转化为无量纲的纯数值后,便于不同单位或量级的指标能够进行比较和加权。

优点:

1:使得不同度量之间的特征具有可比性;对目标函数的影响体现在几何分布(离散型概率分布)上,而不是数值上

2:不改变原始数据的分布

举例:

根据人的身高和体重预测人的健康指数,假设有如下原始数据是四维:

从上面两个坐标图可以看出,样本在数据值上的分布差距是不一样的,但其几何距离是一致的。而标准化就是一种对样本数据在不同维度上进行一个伸缩变化(而不改变数据的几何距离),也就是不改变原始数据的信息(分布)。这样的好处就是在进行特征提取时,忽略掉不同特征之间的一个度量,而保留样本在各个维度上的信息(分布)

归一化:

特点:

对不同特征维度的数据做伸缩变换,其目的是使得各个特征维度对目标函数的影响权重是一致的,即使得那些扁平分布得数据伸缩变换成类圆形。这也就改变了原始数据的一个分布。

优点:

1:提高迭代求解的收敛速度

2:提高迭代求解的精度

举例:

从采用大单位的身高和体重这两个特征来看,如果采用标准化,不改变样本在这两个维度上的分布,则左图还会保持二维分布的一个扁平性;而采用归一化则会在不同维度上对数据进行不同的伸缩变化(归一区间,会改变数据的原始距离,分布,信息),使得其呈类圆形。虽然这样样本会失去原始的信息,但这防止了归一化前直接对原始数据进行梯度下降类似的优化算法时最终解被数值大的特征所主导。归一化后,各个特征对目标函数的影响权重是一致的。这样的好处是在提高迭代求解的精度。

1、 归一化为什么能提高梯度下降法求解最优解的速度?

当两个特征X1和X2的区间相差非常大,X1区间是[0,2000],X2区间是 [1,5],其所形成的等高线非常尖。当使用梯度下降法寻求最优解时,很有可能走“之字型”路线(垂直等高线走),从而导致需要迭代很多次才能收敛;而右图对两个原始特征进行了归一化,其对应的等高线显得很圆,在梯度下降进行求解时能较快的收敛。因此如果机器学习模型使用梯度下降法求最优解时,归一化往往非常有必要,否则很难收敛甚至不能收敛。

2、归一化有可能提高精度

一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)。

修改总结原作者对提问者的回答如下:

问题:

归一化和标准化,都是将点平移然后缩短距离,从这个角度看,二者有什么区别呢?为什么标准化不改变数据分布(几何距离)?

回答:

第一,如果把加减看作平移,乘除看作放缩的话,那么从归一化和标准化的公式就能看出两者的区别。平移对于前者以一个最小值为参照,后者以均值为参照。缩放对于前者以最大差值参照,后者以标准差。第二,标准化不改变几何距离是其公式定义的原因,可以进行数学推导,类似于SVM的函数距离到几何距离,由公式可以推导。

以上对两个容易混淆的概念(标准化、归一化)做了一个解释,但是需要根据实际的数据或场景需求来使用,以免适得其反,如:归一化后虽然平衡了权重,但也会或多或少破坏数据的结构。

常用的标准化方法(z-score标准化):

需要注意上面的s为n-1,不是n,两者的区别z-score标准化方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况

常用的归一化方法(Min-max normalization、最大最小归一化):

当然还有对于两种方式其它好的解法,后面链接可以参考。

中心化:

这里以PCA为例讲述中心化:

下面两幅图是数据做中心化(centering)前后的对比,可以看到其实就是一个平移的过程,平移后所有数据的中心是(0,0),同时中心化后的数据对向量也容易描述,因为是以原点为基准的。

在做PCA的时候,我们需要找出矩阵的特征向量,也就是主成分(PC)。比如说找到的第一个特征向量是a = [1, 2],a在坐标平面上就是从原点出发到点(1,2)的一个向量。

如果没有对数据做中心化,那算出来的第一主成分的方向可能就不是一个可以“描述”(或者说“概括”)数据的方向了。还是看图比较清楚。

黑色线就是第一主成分的方向。只有中心化数据之后,计算得到的方向才能比较好的“概括”原来的数据。这里通过中心化后主成分组成的基能更好的表示原数据。

对于中心化与标准化的区别:

  1. 对数据进行中心化预处理,这样做的目的是要增加基向量的正交性

  2. 对数据标准化的目的是消除特征之间的差异性。便于对一心一意学习权重。

下图中以二维数据为例:左图表示的是原始数据;中间的是中心化后的数据,数据被移动大原点周围;右图将中心化后的数据除以标准差,得到为标准化的数据,可以看出每个维度上的尺度是一致的(红色线段的长度表示尺度)

常用的中心化方法:

变量减去它的均值

文中若有不足或有误的地方,还请指出。感谢以下资料,本文主要参考:

https://www.zhihu.com/question/20467170

https://en.wikipedia.org/wiki/Feature_scaling

https://www.zhihu.com/question/37069477

https://blog.csdn.net/bbbeoy/article/details/70185798

猜你喜欢

转载自blog.csdn.net/qq_36523839/article/details/82919412
今日推荐