梯度下降实用技巧I之特征缩放 Gradient Descent in practice I - feature scaling
当多个特征的范围差距过大时,代价函数的轮廓图会非常的偏斜,如下图左所示,这会导致梯度下降函数收敛的非常慢。因此需要特征缩放(feature scaling)来解决这个问题,特征缩放的目的是把特征的范围缩放到接近的范围。当把特征的范围缩放到接近的范围,就会使偏斜的不那么严重。通过代价函数执行梯度下降算法时速度回加快,更快的收敛。如下图右所示。
特征缩放的范围:一般把特征的范围缩放到-1到1,和这接近就行,没必要同一范围。梯度下降就能很好的工作。如下图所示,x1 的范围为0到3,x2的范围为-2到0.5都是可以的。但不能相差的很大,-100到100则是不可以的。
特征缩放的方法:直接先看图再解释,主要是均值归一化
一般的均值归一化公式为:
,其中
为均值,s为特征的范围,即max-min。也可以用标准差。
其实归一化主要有两种方法:
- 第一种是min-max标准化(Min-Max Normalization)
它把原始数据映射到[0-1]之间,公式为:
- 第二种是0均值标准化(z-score标准化)
公式为:
其中,
为均值,
标准差。标准差是方差的开方,把标注差公式也贴上来吧:
这两种归一化方法的适用场景为:
- 在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用第一种方法或其他归一化方法。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0 255]的范围
- 在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,第二种方法(Z-score standardization)表现更好。