bamboocqh 2018-07-28
大多数时候,数据中不同的特征可能有不同的大小。举个例子,在购物数据集的例子中,我们通常用克或磅来观察产品的重量,这将是一个更大的数字,而产品的价格可能是美元,而这将是较小的数字。许多机器学习算法在计算中使用数据点之间的欧式距离。拥有两个具有不同数量范围的特征将使具有更大范围的特征在算法中占主导地位。
特征缩放是一种预处理技术,可以改变数字特征的范围。主要有三种可以在数字特征上完成的事情:
Rescaling意味着从向量中加上或减去一个常数,然后将该向量乘以或除以常数(f(x)= ax + b)。示例是单位的变化,如摄氏度到华氏度。
归一化意味着将特征与向量的范数分开。我们基本上希望向量的欧氏距离为1。
有两种可以完成的归一化:
1.Min-Max归一化:
我们将取值范围扩展到[-1,1]或[0,1]。这个公式是
2.均值归一化:
我们不使用最小值进行调整,而是使用特征的平均值。
标准化意味着将向量的均值设为0,将标准差设为1.通常通过减去均值并除以标准差来完成。标准化值也称为Z得分
有很多算法都是标量不变的,比如基于树的算法,它们不需要缩放,因为它们不是基于距离的模型。
线性判别分析(LDA)、朴素贝叶斯(Naive Bayes)等算法根据特征的范围赋予特征权重,因此缩放不影响这些算法。
其他的算法,如主成分分析(PCA)、k最近邻(Knn)、线性/逻辑回归(当正则化时)可以帮助我们避免向高强度特征倾斜。甚至神经网络也受益于特征缩放。
但一般来说,特性是可伸缩的,因为它有助于更快地收敛梯度算法。如下所示
scikit-learn预处理模块在这里提供了优秀的api和特征缩放文档(http://scikit-learn.org/stable/modules/preprocessing.html#standardization-or-mean-removal-and-variance-scaling)。