从下面两个问题解释一下

一、目的

1. 提升模型的收敛速度

如果选择不归一化,对于数量级相差比较大的数据,绘制的图就类似于椭圆,梯度下降运算会很慢。
【机器学习】归一化是训练必不可少的环节吗
选择归一化,对于数量级相差比较大的数据,绘制的图就类似圆形,梯度下降速度很快,少走很多弯路。
【机器学习】归一化是训练必不可少的环节吗
具体说下是如何影响速度的呢?
如下图,θ1{θ_1}的取值范围为[0,2000],而θ2{θ_2}的取值范围为[1,5],假如只有这两个特征,对其进行优化时,会得到一个窄长的椭圆形,导致在梯度下降时,梯度的方向为垂直等高线的方向而走之字形路线,这样会使迭代很慢,相比之下,右图的迭代就会很快(理解:也就是步长走多走少方向总是对的,不会走偏)
【机器学习】归一化是训练必不可少的环节吗

2、提高训练精度

归一化的另一好处是提高精度,这在涉及到一些距离计算的算法时效果显著,比如算法要计算欧氏距离,上图中θ2{θ_2}的取值范围比较小,涉及到距离计算时其对结果的影响远比θ1{θ_1}带来的小,所以这就会造成精度的损失。所以归一化很有必要,他可以让各个特征对结果做出的贡献相同。

3、深度学习中,可以预防梯度爆炸

二、为什么树形结构不需要归一化呢?

因为数值缩放不影响分裂点位置,对树模型的结构不造成影响。
按照特征值进行排序的,排序的顺序不变,那么所属的分支以及分裂点就不会有不同。
树模型是不能进行梯度下降的,因为构建树模型(回归树)寻找最优点时是通过寻找最优分裂点完成的,因此树模型是阶跃的,阶跃点是不可导的,并且求导没意义,也就不需要归一化。

既然树形结构(如决策树、RF)不需要归一化,那为何非树形结构比如Adaboost、SVM、LR、Knn、KMeans之类则需要归一化呢?

对于线性模型,特征值差别很大时,比如说LR,我有两个特征,一个是(0,1)的,一个是(0,10000)的,运用梯度下降的时候,损失等高线是椭圆形,需要进行多次迭代才能到达最优点。
但是如果进行了归一化,那么等高线就是圆形的,促使SGD往原点迭代,从而导致需要的迭代次数较少。

参考链接1链接2

相关文章:

  • 2021-04-02
  • 2021-04-19
  • 2022-01-07
  • 2021-04-30
  • 2022-12-23
  • 2021-06-26
  • 2022-12-23
  • 2021-11-30
猜你喜欢
  • 2022-12-23
  • 2021-11-07
  • 2021-12-27
  • 2021-11-06
  • 2021-09-30
  • 2021-11-09
  • 2021-06-08
相关资源
相似解决方案