特征缩放(feature scaling)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31617409/article/details/82726904

机会永远留给有准备的人,不积跬步,无以至千里,厚积而薄发,与大家共勉!加油!


博主最近在学习吴恩达的机器学习课程,将一些日常学习本人认为重要的地方在此记录,与大家分享,如有错误,请大家不吝赐教! github:https://github.com/ScathonLin

在梯度下降算法运用中,如果能保证不同特征的取值在相同或者相近的范围内,比如都处于0-1之间,那么梯度下降算法将会能很很快的收敛。

例如,一个含有两个特征的训练样本集,其中

X_{1}=size(0-2000 feets)

X_{2}=number of bedrooms(1-5)

此时,X1 是远远大于X2的,所以此时J_{\Theta }对应的轮廓图将很瘦很高,如下图所示:

这样造成的结果很可能就是,梯度在下降过程中走了很多的“弯路”,来回震荡,收敛速度很慢,解决办法就是:特征缩放

  • 特征缩放方法

对于上述例子,我们可以将特征值进行如下转换,即可将两个特征值范围尽可能靠近,甚至相同:

这样,0<X_{1}\leq 1 并且 0<X_{2}\leq 1,这样的话,最终J_{\Theta }的轮廓图像就很“圆”,

这样,梯度下降算法就会很快的收敛。

  • 一般解决方案:均值归一化

假设一个训练集有m个样本,n个属性,x_{j}^{i}=\frac{x_{j}^{i}-\mu _{x_{j}}}{max(x_{j})} 其中 x_{j}^{i}代表第i个样本的第j个属性的值,\mu _{x_{j}}代表所有样本第j个属性的值的平均值,max(x_{j})代表所有样本第j个属性的最大值。下图是教程视频中的解释。

注意,不要用x_{0}因为x_{0}=1

也可以将上面的x_{j}^{i}=\frac{x_{j}^{i}-\mu _{x_{j}}}{max(x_{j})}用这个式子来替换,其实就是将分母变成了max-min,x_{j}^{i}=\frac{x_{j}^{i}-\mu_{x_{j}} }{max(x_{j})-min(x_{j})}

猜你喜欢

转载自blog.csdn.net/qq_31617409/article/details/82726904