机器学习中,为何经常要对数据归一化?

机器学习中,为何经常要对数据归一化?原因有二:(1)归一化后加快了梯度下降求最优解的速度;(2)归一化有可能提高精度。

为什么归一化能提高梯度下降法求解最优解的速度?

假定为预测房价的例子,自变量为面积大小和房间数,因变量为房价。那么可以得到的公式为:

y=θ1x1+θ2x2 y = θ 1 x 1 + θ 2 x 2

其中, x1 x 1 代表房间数, θ1 θ 1 代表 x1 x 1 变量前面的系数; x2 x 2 代表面积, θ2 θ 2 代表 x2 x 2 变量前面的系数。

下面两张图(损失函数的等高线)代表数据是否归一化的最优解寻解过程:
未归一化:
机器学习中,为何经常要对数据归一化?_第1张图片

归一化之后:
机器学习中,为何经常要对数据归一化?_第2张图片

在寻找最优解的过程也就是在使得损失函数值最小的 θ1θ2 θ 1 , θ 2 。当数据没有归一化的时候,面积数的范围可以从0~1000,房间数的范围一般为0~10,可以看出面积数的取值范围远大于房间数。也就导致了等高面为长椭圆形,非常尖,因为变量前的系数大小相差很大,当使用梯度下降法寻求最优解时,很有可能走“之字型”路线(垂直等高线走)。而数据归一化后,损失函数变量前面的系数差距已不大,图像的等高面近似圆形,在梯度下降进行求解时能较快的收敛。

因此如果机器学习模型使用梯度下降法求最优解时,归一化往往非常有必要,否则很难收敛甚至不能收敛。

归一化有可能提高精度

一些机器学习算法需要计算样本之间的距离(如欧氏距离),例如 KNN、K-means 等。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)。

归一化与标准化的区别

归一化:把数变为(0,1)之间的小数;
标准化:将数据按比例缩放,使之落入一个小的特定区间。

常用的归一化方法

  1. 线性转换
    y=xMinValueMaxValueMinValue y = x − M i n V a l u e M a x V a l u e − M i n V a l u e
  2. 对数函数转换
    y=log10x y = l o g 10 x
  3. 反余切函数转换
    y=atan(x)2π y = a t a n ( x ) ∗ 2 π
  4. 线性与对数函数结合

关于常用的标准化方法,详情可参考博文:常用的数据标准化方法。

你可能感兴趣的:(算法,机器学习,数理统计,&,数据挖掘,人工智能,机器学习,归一化,标准化,梯度下降,归一化的好处)