三、数据标准化、正则化
3.1. 数据标准化
数据标准化是将样本的属性取值缩放到某个指定的范围。
数据标准化的两个原因:
某些算法要求样本数据的属性取值具有零均值和单位方差。
样本不同属性具有不同量级时,消除数量级的影响。如下图所示为两个属性的目标函数的等高线。
数量级的差异将导致量级较大的属性占据主导地位。
从图中看到:如果样本的某个属性的量级特别巨大,将原本为椭圆的等高线压缩成直线,从而使得目标函数值仅依赖于该属性。
数量级的差异将导致迭代收敛速度减慢。
原始的特征进行梯度下降时,每一步梯度的方向会偏离最小值(等高线中心点)的方向,迭代次数较多,且学习率必须非常小,否则非常容易引起宽幅震荡。
标准化后进行梯度下降时,每一步梯度的方向都几乎指向最小值(等高线中心点)的方向,迭代次数较少。
所有依赖于样本距离的算法对于数据的数量级都非常敏感。
如 近邻算法需要计算距离当前样本最近的 个样本。当属性的量级不同时,选取的最近的 个样本也会不同。
设数据集 。常用的标准化算法有:
min-max
标准化:对于属性 ,设所有样本在属性 上的最大值为 ,最小值为 。则标准化后的属性值为:标准化之后,所有样本在属性 上的取值都在
[0,1]
之间。z-score
标准化:对于属性 ,设所有样本在属性 上的均值为 ,方差为 。则标准化后的属性值为:标准化之后,样本集的所有属性的均值都为 0,标准差均为 1。
注意:如果数据集分为训练集、验证集和测试集,则:训练集、验证集、测试集使用相同标准化参数,该参数的值都是从训练集中得到。
- 如果使用
min-max
标准化,则属性 的标准化参数 都是从训练集中计算得到。 - 如果使用
z-score
标准化,则属性 的标准化参数 都是从训练集中计算得到。
- 如果使用
3.2. 数据正则化
数据正则化是将样本的某个范数(如 范数)缩放到单位1。
设数据集 。 则样本 正则化后的结果为:
其中 为范数: 。
正则化的过程是针对单个样本的,对每个样本将它缩放到单位范数。
标准化是针对单个属性的,需要用到所有样本在该属性上的值。
通常如果使用二次型(如点积)或者其他核方法计算两个样本之间的相似性时,该方法会很有用。