数据规格化(Scaling)又称数据尺度归一化,就是将特征的某个属性(特征向量的某一维)的取值范围映射到一个特定范围之内,以消除数值型属性因大小范围不一而影响基于距离的分类方法结果的公正性。
可以毫不夸张地说,Scaling 在一个模式识别问题占据着举重轻重的地位,甚至关系到整个识别系统的成败。然而不幸的是,如此重要的一个环节却往往已被初学者忽视。当读者在同一个数据集上应用了相同的分类器却得到远不如他人的结果时,往往请确定读者是否进行了正确的Scaling。
1. Scaling 的必要性
(1)防止那些相对较大的数值范围(Numeric Ranges)的特征压倒那些相对较小的数值范围的特征。很多分类器,都是基于欧式距离的,如处在小范围的身高(1.2-2.5m)对于距离的计算几乎没有什么贡献,分类器将几乎只根据体重特征(35-120kg)来分类而不考虑样本间身高的差异。
(2)避免计算过程中出现的数值问题,例如在计算 SVM 的核函数时通常需要计算特征向量的内积(线性核函数和多项式核函数),较大的特征取值可能造成最终的内积结果太大以至于超出计算机的表示范围而溢出。针对这种情况本文建议线性地缩放各个属性到统一的范围 [-1,+1] 或 [0, 1]。
还比如计算复合概率的情况(Marcov Model,马尔科夫模型),此时需要计算很多值的连乘积,由于概率取值都在0-1之间,很容易造成浮点数的下溢。这就需要在每步运算之后对数据进行等比例的缩放,使计算中间结果始终保持在表示精度的范围以内。
2. 数据规格化的方法
在训练之前,需要对训练集中的全体样本进行规格化,一般来说,有以下两种常见的数据规格化策略。
(1)最大最小规格化方法
该方法对初始数据进行一种线性转换,设 minA 和 maxA 分别为属性 A 的最小和最大值,最大最小规格化方法将属性 A 的一个值 v 映射为
v′ ,且 v′∈[new_maxA,new_maxB] (你想最终变换的范围),具体映射计算公式如下:
v′=v−minAmaxA−minA⋅(new_maxB−new_maxA)+new_minA(2)零均值规格化
该方法根据属性 A 的均值
μA 和偏差 σA 进行规格化,可将训练集中的每个样本特征的均值统一变换为0,并且都具有统一的方差(如1)。属性 A 的值v 可通过如下计算公式获得其映射值 v′ :
v′=v−μAσA