特征缩放是提升线性回归收敛速度的技巧,什么是特征缩放? 又是什么场景下需要特征缩放,有哪些特征缩放的方法呢?
特征值差异
我们还是以之前房间预测为例:
这里面是特征房屋大小 房间数目 与房价的关系
本文为简化,只用房屋面积和房间数目来举例, 预测房价的线性回归函数:
f(x) = w1 * x1 + w2 * x2 + b, 其中x1和x2分别是房屋面积和房间数目特征
显而易见的是,x1特征的数值相对大,而x2的数值相对小,这种情况下,w1和w2的不同选择会导致什么情况呢?
假设此时x1 = 2000, x2 = 5,房价500k:
- 如果w1 = 50 w2 = 0.1 b = 50,此时房价计算出来为100050.5k,显然此时房价天价,预测的房价不合理
- 反过来 w1 = 0.1 w2 = 50 b = 50 此时预测房价500k,刚好真实结果相同
这跟梯度下降有什么关系呢?
梯度下降
我们画一张特征的散点图就会发现,房屋面积的这个特征值的范围相对 房屋个数这个特征值大的多,散点就集中很矮的一个区域,这就会导致损失函数等高图形式像下面右图一样,
损失函数是一种瘦高的形式,这种形式带来的坏处就是:
w1 变化很小,损失变动就会很大,因为w1会乘上一个很大的数字
而反过来w2则需要变更很大损失才会有变化。
如果我们用原样的数据,那么这时候损失就会来回震荡,直到很久才能找到最小值,也就是梯度下降很慢,收敛慢,这种情况下,我们可以用的一个方法就是特征缩放
特征缩放
特征缩放的目的就是把特征值都缩放在相差不大的范围,这时候x1和x2分布就会比较均衡,损失函数J就会像下面这样,接近一个圆形:
归一化
怎么做到让x1和x2缩放到区间差别不大的范围上呢?
方法有很多,如下:
- 除以最大值。比如x1最大值是5,那么x1就变更成x1/5
- 均值归一化。重新缩放到-1到1之间。方法就是减去均值后除以最大和最小值的差值,如下x1举例:
3. z-score 归一化。x1的原值减去均值除以标准差,如下X1举例: