特征缩放

特征缩放:
如果你有一个机器学习问题。这个问题有很多特征,如果你能确保这些特征都处在一个相近的范围,这样梯度下降法就能很快地收敛。假设你有2个特征,第一个是房屋面积,他的取值在0-2000之间。第二个是房屋数量,他的取值在0-5之间,如果你画出代价函数J(θ)的等值线, 会非常细高
特征缩放
如果在这种代价函数上运行梯度下降的话,你的梯度最终可能需要花很长时间,并且来回波动
特征缩放
怎么处理这种问题呢。一种有效的方法就是进行特征缩放,如果把x1房子面积大小除以2000,把X2除以5,图像就会看起来很圆,这时候的使用梯度下降的话,很非常快。
特征缩放
我们刚才处理的x1和x2,使他们的取值范围都在0-1之间,就叫做特征缩放,使用特征缩放会使他们的值范围相近,这样的使用梯度下降算法会很快的收敛。

如果你有一个特征,取值0-3之间,那没有问题,同样的,-2-0.5之间也没有问题,但是如果有特征范围在-100-100之间就可以了,同样,-0.0001-0.0001之间也不可以, 一般来说,一个特征在-3-3之间,或者是-1/3-1/3之间是可以接受的,但是超出了这个范围, 就可以考虑特征缩放了。

除了除以最大值之外,特征缩放有的时候会使用均值归一化
如果有一个特征x_i,就是用x_i-μi来替换。假如还是上面的两个特征,房子面积:0-2000之间,他的平均值是1000.房屋数量:0-5之间,他的平均值是2.
那么现在就可以使用归一化(x1-1000)/2000,(x2-2)/5,这样可以算出新的特征
特征缩放其实没有必要太精确,只能为了能让梯度下降运行的更快