coursera斯坦福大学机器学习笔记(2):线性回归(Linear Regression)和梯度下降(Gradient Decent)

上一篇文章coursera斯坦福大学机器学习笔记(1)主要讲了机器学习概念及intruduction

这一篇文章我将继续讲述回归的概念及表示方法。

线性回归(Linear Regression)应该是机器学习中最基本的东西了。所谓回归,想必大家在高中时期的课程里面就接触过,给定一系列离散的点(x0,y0),求一条直线 f(x)=ax+b 以使得各点与直线的距离之和最小。在machine learning 中,线性回归要做的就是求得最优的 ab,以此达到对未来数据能够有一个足够好的预测。

    假设我们有样本数据(x表示):

coursera斯坦福大学机器学习笔记(2):线性回归(Linear Regression)和梯度下降(Gradient Decent)

列出这些数据:

coursera斯坦福大学机器学习笔记(2):线性回归(Linear Regression)和梯度下降(Gradient Decent)

x代表房屋的面积,y代表价格,m代表样本数量。我们想通过这些数据训练出一个函数h,它能比较好的拟合上图所示的数据。h函数称之为拟合函数也就是预测函数。假设上图中绿线为h,则我们可以用它来预测其他面积比如1250时房屋的大概售价为220

如何得到预测函数h呢?

根据样本在二维坐标的分布情况,样本大致分布在一条直线周围。因此假设h时一次函数

hθ(x)=θ0+θ1x

我们需要找θ0θ1 确定预测函数。这里我么需要引入代价函数的概念:

我们选择关于 θ0θ1 的函数

coursera斯坦福大学机器学习笔记(2):线性回归(Linear Regression)和梯度下降(Gradient Decent)

作为误差函数。后面的求和部分与求方差无异,前面的系数 1/2n 本应该是1/n,但是为了方便后面的求导,所以写成 1/2n ,但是这并不会影响我们用这个函数来度量误差。那么到底怎么求得最合适的 θ0θ1 呢?下面将引入一种叫做梯度下降(Gradient Decent)的方法。稍后我们再来证明为什么要选择上面这个函数作为误差函数以及这个函数的正确性。

coursera斯坦福大学机器学习笔记(2):线性回归(Linear Regression)和梯度下降(Gradient Decent)

上面这张图是二元函数 J(θ0,θ1)的图像,先不论其方法细节,我们要做的就是在这张图上找到那个使误差函数 J(θ0,θ1) 最小的点。我们可以画出商数图形的等高线来继续研究。

coursera斯坦福大学机器学习笔记(2):线性回归(Linear Regression)和梯度下降(Gradient Decent)

如图所示,当 J(θ0,θ1)在图中三点, J(θ0,θ1)的值是一样的,这三个点对应三个不同的 θ0θ1 ,即为对应三个不同的代价函数。毋庸置疑,中心点对应着代价函数值最低的点。如图:

coursera斯坦福大学机器学习笔记(2):线性回归(Linear Regression)和梯度下降(Gradient Decent)

梯度下降

如何求得代价函数最小时所对应的 θ0θ1 ,我们需要使用梯度下降算法。

梯度下降的概念:

    coursera斯坦福大学机器学习笔记(2):线性回归(Linear Regression)和梯度下降(Gradient Decent)

上面这张图是一个二元函数 J(θ0,θ1)的图像,先不论其方法细节,我们要做的就是在这张图上找到那个使误差函数 J(θ0,θ1) 最小的点。

       1. 随意给定一组点(θ0,θ1)的值,比如上图中的左边那个红色的“山顶”上的那个起始点;

  2. 在该点上转一圈,选择最陡峭的那个方向,然后向那个方向迈出一步。

  3. 得到新的点,然后继续重复第二步,直到到达最低的地方。

首先给出梯度下降公式

    repeat until Convergence{

  coursera斯坦福大学机器学习笔记(2):线性回归(Linear Regression)和梯度下降(Gradient Decent)

    }

j=0,1;本例中J(θ0,θ1)/ θj 表示函数J(θ0,θ1)在点 (θ0,θ1) 处的偏导数。只要我们取一个合适的 α (学习速率)然后重复地对这个式子进行运算,直到 θj 不再变化,或者说一阶偏导数J(θ0,θ1)/ θj为零时,我们就得到了代价函数对于其偏导数J(θ0,θ1)/ θjθj收敛位置。

进一步解释上述过程:

    costJ代价函数

coursera斯坦福大学机器学习笔记(2):线性回归(Linear Regression)和梯度下降(Gradient Decent)

看成是θj的函数,则costJ是一个一元二次函数。

如果我们选取合适的 αα 应该是一个比较小的数),根据上面的收敛公式,我们就会使 θj 逐渐靠近斜率为 0 的位置。需要注意的是,不管我们的起始点选在最低点的左边还是右边,因为斜率在左边为负数,在右边为正数,所以收敛公式都会向中间点靠近,但是前提是 α 的选取要合适:

coursera斯坦福大学机器学习笔记(2):线性回归(Linear Regression)和梯度下降(Gradient Decent)

加入α选取过大可能导致如下情况:可能会使得下降的过程中错过最小值。

对于更复杂的高次幂函数而言对于θj的函数使用梯度下降将会收敛到局部最小值。

coursera斯坦福大学机器学习笔记(2):线性回归(Linear Regression)和梯度下降(Gradient Decent)

所以分别对 θ0θ1 求偏导数后,对于θ0有如下公式:
(求偏导数:把最开始的那个假设函数hθ(x)=θ0+θ1x 代入上面的收敛函数,注意不是对x,y

求偏导)

coursera斯坦福大学机器学习笔记(2):线性回归(Linear Regression)和梯度下降(Gradient Decent)

对于θ1

有如下公式:

coursera斯坦福大学机器学习笔记(2):线性回归(Linear Regression)和梯度下降(Gradient Decent)


可以根据求导公式(uv)'=u'v+uv'求得θ0θ1的偏导数,代入梯度下降公式得到:

    coursera斯坦福大学机器学习笔记(2):线性回归(Linear Regression)和梯度下降(Gradient Decent)

不断更新此公式将得到局部最小值下的θ0θ1

coursera斯坦福大学机器学习笔记(2):线性回归(Linear Regression)和梯度下降(Gradient Decent)