深度学习每日一问:为什么要对数据归一化(数据预处理)

首先,我们要知道在机器学习某些算法中,是不需要数据归一化的,比如树型model;而当数据的多个特征属性,其量纲不一,但是其需要使用GD迭代更新构建模型,此时加入归一化就可以一定程度上增加模型学习能力。

归一化的好处:

  1. 一定程度提高模型精度
    在机器学习或者深度学习中,大多模型的loss计算,需要假定数据的所有特征都是零均值并且具有同一阶方差的。这样在计算loss时,才能将所有特征属性统一处理。
    比如,在KNN中,我们需要计算样本之间的欧式距离,如果样本两个属性的量纲差距过大,则大量纲的属性在距离计算中就占据了主导地位。而现实中,可能恰恰相反。所以,加入归一化,将数据的特征属性scale到统一量纲,可以一定程度解决这个问题。
  2. 提升收敛速度
    对于使用梯度下降优化的模型,每次迭代会找到梯度最大的方向迭代更新模型参数。但是,如果模型的特征属性量纲不一,那么我们寻求最优解的特征空间,就可以看做是一个椭圆形的,其中大量冈的属性对应的参数有较长的轴。在更新过程中,可能会出现更新过程不是一直朝向极小点更新的,而是呈现‘Z’字型。使用了归一化对齐量纲之后,更新过程就变成了在近似圆形空间,不断向圆心(极值点)迭代的过程:
    未使用归一化
    使用归一化

为什么树形model不需要归一化:

因为数值的缩放是不影响分裂点的位置,对数据进行缩放预处理并不会对树模型造成任何影响。分裂点的位置是和特征值的相对分布相关的。
而且,树模型的构建是一个不断寻找最佳分裂点的过程,而不像LR、NN等,使用梯度下降不断迭代更新生成的。

归一化方法

标准化
对数据的特征属性减去均值,除以方差。转化为均值为0,方差为1的标准正态分布。 x = ( x − μ ) / σ x=(x-\mu) / \sigma x=(xμ)/σ.
一般,我们会记录训练集上的均值和方差,对训练集进行标准化之后,在后续测试使用模型时,对测试数据使用训练集上的方差和均值标准化测试集。
这种方法对离群噪声点的鲁棒性较高。但是,离群点也会参与方差和均值的计算,如果离群点太多,还是会影响性能。
max-min归一化
通过 x = ( x − min ⁡ ) / ( max ⁡ − min ⁡ ) x=(x-\min ) /(\max -\min ) x=(xmin)/(maxmin)将数据线性缩放到【0,1】之间,缺点是,有新点加入时,可能影响min、max,进而改变归一化结果。所以,其对噪声点很敏感。
优点就是,这种方法可以保留稀疏特征中的0, 并且可以解决到特征的方差很小的情况时的数据。

还一个类似的方法,就是Maxabsscale, 每个特征除以该特征的绝对值最大的特征值,将特征缩放到【-1, 1】之间。图像处理中,经常一个操作就是将int型图片矩阵,除以255转化为double型图片矩阵

参考

机器学习数据预处理——标准化/归一化方法

  • 12
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值