机器学习中为什么需要梯度下降_机器学习——多元梯度下降

一、多维特征

前面所述的房价预测的线性模型,只用到了一维特征,即size,房屋尺寸,要用这个特征量来预测房屋价格:

b99f3b8843687909f8c0cde0886c665f.png

当数据集的信息不止一种时,便有了多维特征,比如:

288c6581bdf5ab2c62982abbe6fe7a6d.png

上图有四个X,即四个特征,来预测房屋价格。于是房价预测的假设函数h(x)也从一元线性回归变成了多元线性回归

5b2e183d15cdd6320c406db459af35cc.png

上述假设函数中的θo可以看作:有一个额外的Xo ,Xo = 1 。那么多元线性回归的假设函数可以 简化成:θ的转置乘以X (θ和X都可看作n+1维向量)

9f2456f7047c1b75f5b7e3eaefddb9ae.png

二、多元梯度下降法

与一元线性回归的代价函数与多元线性回归的代价函数都是针对所有的θ,只是多元线性回归的θ个数更多

8fd4172dbc3fc0185d05dee10460d85d.png

梯度下降算法的实质也是一样的,如果不清楚可看往期内容:机器学习——梯度下降、梯度下降的线性回归算法(https://mp.weixin.qq.com/s?__biz=Mzg2MDExMTU3NA==&mid=2247483916&idx=3&sn=6d56f2f60ed834b2f97bd1893b64dd07&chksm=ce2a15b5f95d9ca3cdfbc96acc24cdc5f4a957a4633a7d72826465923a997ce4c5197b9561e7&token=247129081&lang=zh_CN#rd)

ccf825d6225896e8ca3fa287a9607bec.png

计算代价函数J(θ)的python代码实现:

0f8d9ca22114c73dfcfbe69551a41fdc.png
def computeCost(X, y, theta):    inner = np.power(((X * theta.T) - y), 2)    return np.sum(inner) / (2 * len(X))

三、梯度下降之特征缩放

面对多维特征问题的时候,保证这些特征都具有相近的尺度,这将帮助梯度下降算法更快地收敛。当各个特征间的数值差距很大,梯度下降算法需要非常多次的迭代才能收敛。以房价问题为例,假设我们使用两个特征,房屋的尺寸和房间的数量,尺寸的值为 0-2000平方英尺,而房间数量的值则是0-5,以两个参数分别为横纵坐标,绘制代价函数的等高线图,能看出图像会显得很扁,梯度下降算法需要非常多次的迭代才能收敛。

8b25b1c15bb8a68d7b42dda1e0bf1235.png

解决的方法是尝试将所有特征的尺度都尽量缩放到-1到1之间。如图:即 将特征的值除以该特征的最大值

5b36a5c913d44fd89b53e2b1d7583bf2.png

有时候也不需要完全在-1:1的范围内,相近即可,比如下图-3:3也可以,但是如果差的太多则不行。

abe18856fca0d7ccfa13afed5b0eeb13.png

特征缩放的另一种方法:

78f5d50e6e90ce89b7a32422a41e77c8.png

上述的Sn也可以用特征的( max-min )

四、梯度下降之学习率

梯度下降算法收敛所需要的迭代次数根据模型的不同及学习率的不同而不同,不能提前预知,我们可以绘制代价函数J随θ迭代次数变化的图来观测算法在何时趋于收敛

3081df2940b8a5871b6ce9c98653158c.png

判断代价函数是否在逐渐收敛,即梯度下降算法是否在正确的work,可以将迭代后与迭代前的代价函数的变化值与某个阀值(例如0.001)进行比较,但绘制代价函数J随θ迭代次数变化的图更加直观。当梯度下降算法不是在正确的work时:下图两种情况均是学习率过大导致,可以采用更小的学习率

daf55ad8744efee8ac4fb70b7009ddb8.png

下图(X轴应为θ)蓝色箭头的多次迭代则是学习率太小导致

7e8a0e9db5b0b8cc6e1f183b84a4bcd3.png

当学习率过大时:代价函数可能不是每次迭代都下降,也可能最终不会收敛(可见上图的红色箭头所示)。而当学习率过小时,代价函数可能需要很多很次才能最终收敛。因此确定合适的学习率很重要,可以通过尝试一系列不同的学习率来确定,比如:

68dbb03620a4ab51726da24c3d622439.png

合理的大可以保证速度而不牺牲太多的精度;合理的小可以保证精度而不牺牲太多的速度。

微信公众号:BioLearner 会定期更新,欢迎关注

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值