这是数据预处理的步骤,适用于数据的自变量或特征。从根本上说,它有助于标准化特定范围内的数据。
在大多数情况下,您的数据集将包含大小,单位和范围高度不同的要素。但是由于大多数机器学习算法在其计算中都使用了两个数据点之间的欧几里得距离,因此这是一个问题。
如果放任不管,这些算法只会考虑忽略单位的特征。结果在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),朴素贝叶斯(Naive Bayes)之类的算法经设计可处理此问题,并相应地赋予特征权重。在这些算法中执行特征缩放可能效果不大。