数据预处理——特征缩放

发布时间 2024-01-03 10:51:15作者: 计算之道

    特征缩放(feature scaling)是在机器学习中常用的数据预处理步骤,是数据预处理步骤中及其容易被忽略的一步。

    为什么要特征缩放?考虑一下 kNN 算法,如果我们有两个特征,特征 A 的取值范围在 [1,10],特征 B 的取值范围在 [1, 100000]。那么在计算欧式距离时,特征 A 的贡献几乎被特征 B 给覆盖了。

    特征缩放的目的就是使不同特征的数值范围相似,以确保模型的性能和收敛性能良好。绝大多数机器学习算法及优化算法(比如梯度下降)都期望特征取值在同样的范围。

    #两种常见的特征缩放方法是标准化(Standardization)和归一化(Normalization)。

  1. 标准化(Standardization):

    • 公式:

    • 在标准化中,通过减去特征的均值并除以标准差,将数据转化为均值为0,标准差为1的分布。这样的变换使得数据呈现出标准正态分布的形状,适用于特征的分布近似正态分布的情况。
  2. 归一化(Normalization):

    • 公式:

    • 在归一化中,通过将数据缩放到0,1的范围内,确保所有特征都在相似的数值范围内。这对于涉及距离度量的模型(如K近邻算法)或使用梯度下降的模型(如神经网络)往往是有益的。

#选择标准化还是归一化通常取决于数据的分布和具体的模型。以下是一些建议:

  • 标准化:

    • 当特征的分布近似正态分布时,使用标准化通常是一个不错的选择。
    • 对于涉及到正态分布假设的模型(如线性回归、线性支持向量机等),标准化可能更合适。
  • 归一化:

    • 当特征的分布不一致、存在异常值或者涉及到距离度量的模型时,归一化可能更适用。
    • 对于神经网络等深度学习模型,由于它们对输入特征的尺度敏感,通常采用归一化。

在实践中,还有一种称为MinMax缩放的归一化方法,它可以将数据缩放到任意区间[a,b]。选择特定的缩放方法需要根据具体情况进行实验和比较,以找到对模型性能有益的方法。