转载请注明出处

什么是特征缩放

 特征缩放其实就是标准化数据特征的范围。
 

为什么要进行特征缩放

  特征缩放可以使得ML方法工作的更好,比如在k-nn的算法中,分类器主要是计算两点之间的欧几里得距离,如果一个feature比其他另外一个feature大超过一个数量级的情况下,那么两者之间的距离就会更大的偏向于这个feature。因此,我们必须对每个feature都进行归一化,将其规范到[0,1]的范围内,这样就可以加速model收敛的速度

特征缩放的一些方法

  调节比例( rescaling)
  这种方法是将我们的数据都规范到[0,1]或者[-1,1]之间,至于缩放到什么范围,完全由数据的性质来决定。计算公式如下:深度学习第四讲之特征缩放
 ,其中,x 是最初的特征值,x’x′是缩放后的值。
  标准化( normalization)
  特征标准化使每个特征的值有零均值(zero-mean)和单位方差(unit-variance),计算公式如下:
  深度学习第四讲之特征缩放
标准差计算公式如下:
深度学习第四讲之特征缩放
  接下来,通过具体的实例来表达下上面的意思。如下图所示:
  深度学习第四讲之特征缩放
  假如说我们现在有一个nn的网络结构,
  input的 是1,2,,,数量级的
  input的 是100,200,,,数量级的
  那么,此时为了让output的a维持一定的标准态, w1的取值就应该是一个很大的数, w2的取值就应该是一个很小的数,这样乘起来的结果再相加才能作为一个比较合理的数。不然,如果 还是一个很小的数,那么乘出来的结果会慢慢吞噬 的作用。那么,如果我们不做feature scaling,会带来什么问题呢?
通过上图左边的这个图,我们发现,其是一个椭圆形的loss曲线。原因就是loss在w1 方向上的梯度变化缓慢,而在 w2方向上的梯度变化剧烈,使得整个曲线的形状像一个椭圆形。如果在训练的过程中,我们为了避免这种情况发生,可以在w1 方向上使用较大learning_rate,而在 w2方向上使用较小的learning_rate。做完feature scaling后,我们的loss曲线就是一个圆形的曲线了,这个时候,不管在哪个方向上的梯度都是一样的,在train的过程中,model很快就能收敛了。

相关文章:

  • 2021-04-27
  • 2021-06-29
  • 2021-07-24
  • 2021-07-03
  • 2021-07-17
  • 2021-07-09
  • 2021-09-18
  • 2021-09-05
猜你喜欢
  • 2021-10-02
  • 2021-04-19
  • 2021-06-21
  • 2021-04-24
  • 2021-03-31
相关资源
相似解决方案