特征缩放是对数值输入变量进行变换,以改变其取值范围、中心位置或离散程度。在机器学习中,它是一种预处理操作,可防止计量单位或数值大小的差异主导模型的行为。常见方法包括标准化、最小—最大缩放和稳健缩放。这些方法的参数通常根据训练数据估计,并在变换后续观测数据时沿用。(scikit-learn.org)
目的与数学解释
数据集中的变量可能代表尺度差异很大的量,例如以年为单位的年龄和以美元为单位的收入。依赖数值距离或优化过程的算法可能受到这些差异的影响,即使这些差异仅源于计量惯例,而非变量对预测的重要程度。缩放会改变各特征在数值上的相对贡献,但并不能确定哪些特征本身具有实际价值。(scikit-learn.org)
许多常见方法按照下式对每个特征分别进行变换:
其中, 是第 个观测的第 个特征, 是位置统计量, 是正的尺度因子。标准化使用均值和标准差,而稳健缩放通常使用中位数和四分位距。这些变换保留原有的特征列,而不是将其组合成新的维度。(scikit-learn.org)
常见方法
标准化。 也称为标准分数缩放,其变换公式为:
其中使用训练数据的均值 和标准差 。按照计算 时采用的约定,变换后的非恒定训练特征均值为零,方差为一。标准化本身不会将任意分布转换为正态分布:这一操作改变的是位置和尺度,而不是分布形状。均值和标准差仍然对极端观测值较为敏感。(scikit-learn.org)
最小—最大缩放。 将训练数据中观测到的取值范围映射到选定区间 的变换为:
通常使用的区间为 。由于该变换依赖最小值和最大值,极端值可能使大多数观测值被压缩到区间内的一小段范围中。超出训练数据取值范围的新值可能产生落在 之外的输出,除非进行截断。截断可以将输出限制在区间内,但会丢失观测值超出拟合范围多少的信息。(scikit-learn.org)
稳健缩放。 一种常见形式为:
其中分母为四分位距。与均值和标准差相比,这些统计量对极端值的敏感程度较低。稳健缩放不会移除离群值,也不保证输出有界,通常也不会使方差变为一。其所用的分位数范围可以配置。(scikit-learn.org)
最大绝对值缩放。 将特征除以其在训练数据中的最大绝对值,可将训练值映射到 内。这种方法不减去中心值,因此零值仍为零。这使其适用于稀疏矩阵,不过拟合得到的尺度仍然对极端值较为敏感。(scikit-learn.org)
对学习算法的影响
对于K近邻算法等近邻方法,以及K均值聚类等基于距离的聚类方法,缩放会改变比较观测数据时所依据的几何关系。在欧几里得距离中,各坐标上的差值平方相加;数值变动幅度远大于其他特征的某个特征,可能主导这一总和。因此,标准化可能改变哪些观测互为近邻,而不仅仅是加快原本相同的计算过程。(scikit-learn.org)
缩放对支持向量机也很重要,尤其是使用径向基函数核的支持向量机。特征方差的差异会影响核函数值以及最终得到的模型。在线性模型中,正则化惩罚作用于系数的大小,而系数大小取决于输入的计量单位。因此,在保持惩罚设置不变的情况下改变特征尺度,可能改变拟合得到的解。(scikit-learn.org)
对于逻辑回归,缩放可以改善优化过程的收敛性。在包括多层感知机在内的人工神经网络中,输入尺度会影响采用梯度下降及相关优化器时的训练行为。因此,缩放既关系到数值训练过程的动态特性,也关系到模型拟合。(scikit-learn.org)
主成分分析对特征之间的相对方差较为敏感。分析未经缩放的数据时,可能会更突出高方差变量;而预先标准化则使每个非恒定特征的方差都为一。这两种数据表示方式没有哪一种在所有情况下都更好:原始变异可能具有实际意义,而缩放可能增大低方差噪声的影响。基于决策树学习的模型通常受特征缩放的影响小得多。(scikit-learn.org)
拟合与评估
即使不涉及目标标签,估计缩放参数也是模型拟合的一部分。利用留出的观测数据计算均值、分位数或极值,会在评估中引入数据泄漏(机器学习)。因此,应在训练数据部分上拟合缩放器,再将其原样应用于验证集、测试集以及后续用于预测的输入。在测试数据上另行拟合第二个缩放器,也会改变模型所预期的数据表示方式。(scikit-learn.org)
在交叉验证过程中,缩放参数应在每个训练折内分别估计。预处理流水线将缩放器与估计器组合起来,使拟合和变换在相应的数据子集上进行。模型用于预测时,也必须同时使用完整的、已拟合的预处理流程。(scikit-learn.org)
相关操作与实际限制
逐特征缩放不同于将每个观测归一化为单位长度向量。后者对同一观测的各个坐标进行整体处理,适用于方向比大小更重要的情况。非线性的幂变换和分位数变换还可以改变分布形状,而普通的仿射缩放不能。(scikit-learn.org)
对稀疏矩阵进行中心化通常会破坏其稀疏性,因为隐含的零元素会变成非零元素。不进行中心化的缩放可以保留这种结构。恒定特征需要特殊处理,因为其标准差为零;例如,StandardScaler 使用一作为尺度因子,使中心化后的恒定列保持为零。(scikit-learn.org)