码迷,mamicode.com
首页 > 其他好文 > 详细

为什么要对特征进行缩放(归一化)

时间:2019-11-29 10:45:09      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:最小   make   参数   公式   机器学习   增加   def   就会   大量   

在Andrew Ng的机器学习课程里面,讲到使用梯度下降的时候应当进行特征缩放(Feature Scaling)。进行缩放后,多维特征将具有相近的尺度,这将帮助梯度下降算法更快地收敛。 为了解释为什么特征缩放会帮助梯度下降算法更快地收敛,Andrew给了两幅图来解释:

Feature Scaling

Idea: Make sure features are on a similar scale.
E.g.
技术图片
技术图片

归一化前,代价函数技术图片关于参数技术图片??和技术图片??的关系等高线图可能如下图:

而如果进行了,归一化,那么其等高线图可能就变成了下图:

技术图片

而如果进行了,归一化,那么其等高线图可能就变成了下图:

技术图片

关于等高线图的变化,Andrew并没有细说原因,只是直接这么说了。一种常见的误解是:

原来技术图片技术图片的尺度不一样,所以等高线图是狭长的,而归一化以后,大家尺度(甚至取值范围)一样了,等高线图被压扁了,所以就是一个圆形了呗。

但是问题在于,等高线图的变量(即轴)是技术图片技术图片,而不是技术图片技术图片技术图片技术图片做的缩放,导致技术图片关于技术图片技术图片的等高线图产生的变化根本不是直观上的那么一目了然。

本文的目标就在于把这个问题解释清楚:技术图片技术图片的缩放是怎么把以技术图片,技术图片为变量的技术图片等高线图变得更加圆,从而使得梯度下降效率变高的。

首先我们把问题定义一下,我们是要预测房价,目前有两个特征:
技术图片: 面积,以平方英尺计,取值范围在0 ~ 2,000
技术图片 : 卧室数,取值范围在0 ~ 5

假设,房价是关于这两个特征的线性关系:

技术图片

那么,在进行梯度下降的时候,目标最小化的代价函数(Cost Function)则为:

技术图片

在缩放(scaling)前,由于技术图片的尺度比较大(0 ~ 2,000),而技术图片的尺度小(0 ~ 5),因此技术图片技术图片同等大小的变化,对技术图片的影响差距巨大,即技术图片技术图片影响要比技术图片大很多。进而,会造成技术图片技术图片更加敏感(即技术图片的单位变化比技术图片的单位变化对技术图片的影响更大)。因此在等高线图上,在技术图片方向上更扁平,即较小的变化会造成技术图片取值的剧烈变化,而在技术图片方向上更加狭长,即较大的变化才会造成技术图片取值的较大变化。

那么缩放(scaling)以后,技术图片技术图片的尺度是一致的,故技术图片技术图片同等大小的变化,对技术图片的影响不再含有特征尺度上的因素,这也同样反映在技术图片上。那么在等高线图上的表现就是,在技术图片方向上等高线图会拉长,即技术图片技术图片相较于缩放前变得"迟钝"了。

如果我们只观察技术图片技术图片,那么二者的关系在进行特征缩放前后的图形可能如下:

技术图片

技术图片关于技术图片更加缓和,且在技术图片上被拉长了(缩放后,参数技术图片的最优解跟缩放前几乎不会是同一个值,因此上图中技术图片的最小值点对应的技术图片值并不相同)。

因此,Andrew的缩放前后的图形,并不是在技术图片(纵轴)方向上被压扁了,而是在技术图片(横轴)方向上被拉长了!

而从梯度下降迭代上看,每次迭代使用的公式为:

技术图片

注意到,每次迭代的时候,技术图片的更新幅度是和技术图片相关的,因此如果某个技术图片的尺度相较其他维度特征大很多的话,势必造成该维度对应的参数技术图片的更新非常剧烈,而其他维度特征对应的参数更新相对缓和,这样即造成迭代过程中很多轮次实际上是为了消除特征尺度上的不一致。

另一个角度,技术图片实际上就是当前技术图片的梯度方向,它和技术图片是相关的,因为对于而言,技术图片是它的参数。所以,当我们迭代更新技术图片的时候,梯度下降的方向会因特征技术图片的尺度产生剧烈变化,即在尺度大(导致梯度大)的方向上持续迭代。而这种变化显然不是迭代的目的,它仅仅是为了消除尺度差距上的悬殊。

故,因为技术图片的梯度是跟特征技术图片取值相关的,而梯度下降迭代就是不断在梯度方向上寻找最优点。所以如果特征在尺度上差距显著,那么迭代中就会有一些(甚至大量)轮次主要在抹平尺度上的差异。在理论上,如果迭代轮次足够多,仍然能够得到最优解,但在实际中往往会限定一个迭代轮次上限,可能会出现找到的解并不是最优解。

因为要抹平尺度上的差异,迭代到最优解的轮次势必增加,即表现为常说的"收敛速度慢"。

为什么要对特征进行缩放(归一化)

标签:最小   make   参数   公式   机器学习   增加   def   就会   大量   

原文地址:https://www.cnblogs.com/bind/p/11956095.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!