1)背景
之前学习过了梯度下降、线性回归模型、平方差代价函数J。上一节学习了梯度下降和任意代价函数J相结合,这一节学习将平方差代价函数J和梯度下降相结合,得到机器学习的第一个算法===线性回归算法,可以用线性模型来拟合数据。
我们要做的就是把梯度下降应用到最小化平方差代价函数J上。那么我们首先要做的就是做好梯度下降代码,关键是写出导数项。
2)梯度下降的导数项
计算导数项:
将计算出的导数项带回梯度下降公式,就得到线性回归算法,如下图所示:
3)线性回归算法的分析
这里注意两个参数需要同时进行更新。
- 怎么实现梯度下降?
之前解决过的关于梯度下降的一个问题,就是容易陷入局部最优解。不同的初始化经常会得到不同的局部最优解:
但是现在我们研究的是线性回归的代价函数J,他的图像总是呈现碗状,为凸函数。这种函数没有局部最优解,只有一个全局最优解。
所以当我们研究这种线性回归的代价函数J的梯度下降时,它总会收敛到全局最优解处。
如下图,观察线性回归的假设函数h(x)和代价函数J:但我们执行一次梯度下降,即进行一次初始化,对应于假设函数上的一条拟合直线,可以看到,当慢慢的梯度下降后,代价函数中的点越来越接近中心点,对应的拟合直线的拟合程度也越来越高。最后梯度下降收敛于圆心处,此时的拟合直线也是拟合程度最高的,梯度下降算法执行结束,此时,我们已经使用了线性回归算法自动的帮我们找到代价函数J的最小值,也确定了拟合程度最高的拟合直线对应的假设函数,我们现在就可以使用这个假设函数来预测新的数据。
线性回归算法也叫Batch梯度下降算法,意思是他的每一次梯度下降都遍历了训练集中的所有数据:
现在我们认识了梯度下降,在之后的很多问题中可以使用,包括很多机器学习的问题。