使用特征放缩的原因
图(1)
如图所示,当有的特征取值范围的数值很大,有的特征取值范围数值很小
那么为了去匹配真实数据,就要给数值大的特征点乘一个数值比较小的权重
同理,也要给数值小的特征点乘一个数值比较大的权重
使用这样的安排的原因:
图(2)
如果不按照上述方法安排权重大小,那么取值范围小的特征将会被忽略
接着上面的说
我们做出这样的安排之后,对于代价函数的等高线图(图1的右边那个图),就会变得又高又瘦
此时,尽管我的 w1 只是进行了微小的变动,梯度下降的步幅也会变得很大
这样会导致我们在寻找局部最小点的时候,会在最优解的周围来回浮动,导致梯度下降算法运行过慢
因此,我们引入了特征放缩(feature scaling)的方法来加速梯度下降算法
特征放缩的具体方法
最大值法
把所有特征都除以它自身取值范围的最大值,就可以把特征的取值范围限制在0、1之间
均值归一化(Mean normalization)
μ1 :在训练样本中特征 X1 的均值
μ2:在训练样本中特征 X2 的均值
最终放缩之后的特征取值通常在-1 到 1 之间,会把特征取值变得有正有负
Z-score 标准化 / 归一化(Z-score normalization)
这个方法采用了正态分布的思想
μ1 :在训练样本中特征 X1 的均值
μ2:在训练样本中特征 X2 的均值
σ1:在训练样本中特征 X1 的标准差
σ2:在训练样本中特征 X2 的标准差
最终同样把特征放缩到了一个取值较小的区间内
注意
如果某个特征取值本身就较小,那么不进行特征放缩也完全OK,对梯度下降运算也没什么影响
如图所示
本篇笔记图示来源:吴恩达《机器学习》系列课程