机器学习(归一化、去中心化、标准化)

为什么要进行数据的预处理?

这需要分两种情况说明:

        1.数据数值很大

        2.数据数值很小

1.首先,对于一个数值非常之大的特征 T。

若其数值非常之大、区间也非常之大,例如区间范围为 [10^10,10^20]

        以线性拟合函数举例:

        f(w1,w2,\cdots ) = w1\times x1 + w2\times x2\cdots +b

        显然我们在进行机器学习拟合参数的时候,该数据轻微的变动将会给拟合函数带来很大的影响。

        假如说我们的特征 x1 区间范围非常之大。x1轻微的变动将会给 f() 函数带来很大的影响。如果直接进行拟合,我们可以预想到 w1 参数将会变得非常小且范围很狭窄。

        同理,有关w1的损失函数函数图像也将变得很狭窄。

        首先我们先来看一看正常的数值形成的正常的损失函数:

正常的特征带来的正常的损失函数
​​​​

        对于正常的损失函数从初始A点逐步按照步长梯度下降 ,最终会拟合到一个局部最小值,如上图。图中步长大致为2左右。

下面再让我们来看一看非正常的损失函数:

由于特征过大,使得损失函数非常狭窄

        而对于非正常的损失函数,即使初始点已经比较接近局部最小值,也会因为函数太过狭窄,步长直接跨越了中线,使得无法完成拟合,如图:反而loss越来越大。

        为了达成训练,你必须为每一个特征都设立一个单独的步长,这样才能达到全局特征的局部最小值,来完成训练,然鹅这想想就觉得爆炸,不仅是对人来说还是对代码效率来说。

2.其次,对于一个数值非常之小的特征 T。

若其数值非常之小、区间也非常之小的特征,例如区间范围为 [10^-20,10^-10]

显然,这使得loss函数非常非常的平缓且数值大。

一个非常平缓的loss函数

 对于一个模型是否完成了训练,我们大概采用了2种方案:

①设立阈值,若loss下降的量<阈值,则判断完成训练。

②看loss下降曲线,若曲线接近平滑,则判断完成训练。

显然对于一个过于平滑的loss函数,每一次的更新,loss下降数值都会很小,曲线都会非常平滑。

由此没有办法判断是否完成训练。

综上所诉:

若想要自己的模型足够优异,各个参数都能拟合到一个理想的数值,我们需要对初始数据进行标准化、去中心化、归一化等等操作。

1.去中心化:使得数据均值为0

操作:使数据每一项都减去均值:   x^{i} = x^{i} - \mu

(并没有什么软用,一般作为数据处理的中间性操作,单用去中心化没有任何实际的作用)

2.归一化:将数据映射到 [0,1] or [-1.1] 的区间之内

        ①映射到[0,1]范围内:

                操作:每一项减去最小值后都除以最大值与最小值之差 :  x^{i} = \frac{​{x^{i}-x_{min}}}{x_{max}-x_{min}}

        ②映射到[-1,1]范围内:

                操作:x^{i} = \frac{x^{i}-x_{min}}{x_{max}-x_{min}}\times 2-1

3.标准化:使得方差为1,均值为0

        操作:去中心化后,除以标准差。

        x^{i} = \frac{x^{i} - \mu }{\sigma }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值