机器学习之归一化

数据归一化?

数据标准化(归一化)处理是在数据挖掘中的一项常见的预处理任务,很多情况下当你在数据预处理时都会浮现出一个问题,是不是要进行数据标准化处理?

一般来说,数据归一化后有一个很明显的优点,最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解。

归一化前

归一化后

线性函数归一化(Min-Max scaling)

线性函数归一化是最常见的数据归一化的类型,它可以将原始数据用线性化的方式进行缩放,简单来说就是把数值很大的数据塞到一定的区间内。

在实际处理数据的时候会映射到[0,1]空间内,其归一化公式如下:

其中,Xnorm为归一化后的数据集,X为原始数据,Xmax、Xmin分别为原始数据集的最大值和最小值。

Z-score标准化(Z-score standardization)

Z-score标准化是将原始数据集归一化为均值为0、方差1的数据集,归一化公式如下:

其中,μ、σ分别为原始数据集的均值和方差。该种归一化方式需要原始数据的分布近似高斯分布,否则归一化的效果会变差。因为原始数据分布如果是长尾分布,那么分布的改变会影响数据原有的表现情况。

log函数转换

通过以10为底的log函数转换同样可以实现归一化,公式如下:

其中,Xmax是数据集中的最大值,并且数据集所有样本的值都要大于等于1。

atan函数转换

通过反正切函数实现归一化公式如下:

其中,当数据集都大于等于0时,映射空间在[0,1]之间,小于等于0时,映射空间在[-1,0]之间。

使用场景

在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,Z-score标准化(Z-score standardization)表现更好。通过计算证明,对数据集做Z-score标准化后的协方差为:

而使用线性函数归一化后的协方差为:

可以看到,使用线性函数变化后的协方差只产生数值上的缩放,所以这种方式无法消除量纲对方差、协方差的影响,由于量纲的存在,PCA分析和距离的计算结果会受到影响。

Z-score标准化由于计算时除以双标准差后消除了量纲的影响,可以满足算法对数据的前置要求,所以在这些场景上表现上Z-score标准化要比线性标准化的效果更优。

总结

在数据归一化后,模型在寻找最优解的过程明显会变得平缓,能够更容易收敛到最优解。

在算法过程中若涉及距离度量(聚类分析)或者协方差分析(PCA、LDA等)的,同时数据分布近似高斯分布时,应当使用Z-score标准化,而在需要缩放区间大小的数据集中可以使用其他合适的归一化算法对数据集进行优化。

posted @ 2018-07-18 22:55  诚实善良小郎君  阅读(1691)  评论(0编辑  收藏  举报