特征缩放
是什么?
特征缩放:将不同特征的值量化到同一区间的方法。
简单来说就是将原本由于单位不同而导致数值范围上存在较大差异的特征放到同一个数值区间内。
为什么?
特征的数值范围差异较大,在采用欧式距离来衡量两个特征间的距离时,就会导致最终距离仅取决于取值范围跨度最大的特征。举个例子。
假设我们要从身高特征和年龄特征来区分两个人,其中我们根据常识可以知道年龄的取值范围为 [1, 100],身高的取值范围在 [0.4, 2.5] (单位:m)。那么按照欧式距离计算,特征间的距离严重取决于年龄的影响,而身高对两者的距离影响极小,也就是说即便我们对两个特征同时考察,实际上我们无意识地仅考察了一个影响因素,这在模型训练中是致命的。
而导致类似身高、体重、年龄这些不同特征的取值范围不同的原因就是他们的单位不同。
另一方面,对于没有进行特征缩放的训练集使用梯度下降法训练时,会导致迭代次数增加的情况。
通过图片我们可以很直观地看出,在使特征相近区域内(不一定要相同)有助于减少提高梯度下降法的迭代次数,从而提升模型训练速度,使模型更快地收敛。
怎么做?
1.最小-最大值归一化(min-max normalization)
也常称为归一化,将特征值缩放到区间[0, 1]内。
其中,表示原始值,
表示该特征维度的最小值,
表示该特征维度的最大值,
表示缩放后的值。该方法具有更加泛化的形式,即将特征值缩放到区间[a, b]之间,其计算公式如下所示:
2.均值归一化(Mean normalization)
3.标准化(Standardization)
该方法的主要功能是将数据按比例缩放,使之落入一个小的特定区间,可以使得输入数据的每个特征维度都具有均值0、方差1的性质。
表示特征维度
的均值,
表示特征向量
的标准差。
优点
- 缩放后的特征矩阵,各个维度都具有相同的重要性。
- 可以加快梯度下降的收敛速度。
- 可以加快支持向量机的速度,但是会影响最终的结果。