Python - 特征缩放如何以及在哪里应用?


它是数据预处理的一个步骤,应用于数据的自变量或特征。它基本上有助于将数据规范化到特定范围内。

为什么要缩放?

大多数情况下,您的数据集将包含幅度、单位和范围差异很大的特征。但是,由于大多数机器学习算法在其计算中使用两个数据点之间的欧几里得距离,因此这是一个问题。

如果置之不理,这些算法只会考虑特征的幅度,而忽略单位。结果在不同单位之间差异很大,例如 5kg 和 5000gms。

幅度较大的特征在距离计算中的权重会远大于幅度较小的特征。

为了抑制这种影响,我们需要将所有特征都提升到相同的幅度级别。这可以通过缩放来实现。

如何缩放特征?

  • **标准化** - 标准化用其 Z 分数替换值。
  • $$x^{\prime}=\frac{x\:-\:\bar{x}}{\sigma}$$这将特征重新分布到其均值 μ = 0 和标准差 σ =1。sklearn.preprocessing.scale 帮助我们在 python 中实现标准化。
  • **均值归一化** -
  • $$x^{\prime}=\frac{x\:-\:mean(x)}{\max(x)\:-\:\min(x)}$$

    此分布的值介于**-1 和 1**之间,且 μ=0。**标准化**和**均值归一化**可用于假设数据以零为中心的算法,例如**主成分分析 (PCA)**。

  • 最小-最大缩放
  • $$x^{\prime}=\frac{x\:-\:\min(x)}{\max(x)\:-\:\min(x)}$$

    此缩放将值介于 0 和 1 之间。

  • **单位向量** -
  • $$x^{\prime}=\frac{x}{\lVert\:x\:\rVert}$$

    缩放是考虑到整个特征向量长度为单位。**最小-最大缩放**和**单位向量**技术生成范围 [0,1] 的值。在处理具有硬边界的特征时,这非常有用。例如,在处理图像数据时,颜色只能介于 0 到 255 之间。

何时缩放?

这里要遵循的经验法则是,任何计算距离或假设正态性的算法,都应缩放其特征。

一些特征缩放起作用的算法示例:

  • 使用欧几里得距离测量的k近邻算法对幅度敏感,因此应缩放所有特征以使其权重相等。

  • 在执行**主成分分析 (PCA)**时,缩放至关重要。PCA 试图获取方差最大的特征,而方差对于幅度较大的特征较高。这会使 PCA 偏向于幅度较大的特征。

  • 我们可以通过缩放来加速**梯度下降**。这是因为 θ 在较小范围内下降得很快,而在较大范围内下降得缓慢,因此当变量非常不均匀时,它会无效地上下振荡到最优值。

  • 基于树的模型不是基于距离的模型,可以处理不同范围的特征。因此,在对树建模时不需要缩放。

  • 像**线性判别分析 (LDA)**、**朴素贝叶斯**这样的算法在设计上配备了处理此问题并相应地为特征赋予权重的方法。在这些算法中执行特征缩放可能不会产生太大影响。

更新于:2020 年 8 月 6 日

194 次查看

启动您的职业生涯

通过完成课程获得认证

开始
广告