斯坦福机器学习笔记-单变量线性回归

斯坦福机器学习笔记-单变量线性回归

本节通过房价预测问题来学习第一个学习算法线性回归算法

基本概念

监督式学习-回归

  • 监督式学习:由于对于数据样本来说,都包含与之对应的正确答案,故为监督式学习
  • 回归:预测值为连续值,故为回归问题
    斯坦福机器学习笔记-单变量线性回归

训练集

首先明确几个数学符号, 如下图所示

  • m:表示训练集样本数目
  • xs表示输入向量,也叫输入特征, 比如本例房价预测问题中的面积,居住区域等
  • ys表示输出变量,也叫目标变量
  • x(i), y(i))表示训练集中第i个训练样本
    斯坦福机器学习笔记-单变量线性回归

假设函数(Hypothesis Function)

通过给定的训练集学习到的函数h : X -> Y叫做假设函数(Hypothesis Function),如图所示,本例房价预测问题中的假设函数就是一个房价(Y)关于面积(X)的函数。一个好的假设函数可以预测出对应X的Y值。

我们通过如下形式表示假设函数,为了方便,hθ(x)也叫作h(x), 当然会有更复杂的函数,也许是非线性函数,但是由于线性函数是简单的形式,所以我们先从线性方程的例子开始学习,逐渐建立复杂的模型。
斯坦福机器学习笔记-单变量线性回归

上图所示是单个变量的线性回归,这个变量就是x,根据x来预测房价的函数,这个模型也叫作Univariate linear regression。
斯坦福机器学习笔记-单变量线性回归

代价函数(Cost Function)

引入代价函数的目的是为了更好的将我们的线性方程和数据相拟合。当我们设定了假设函数外,我们就可以进行预测。但是如何选择假设函数的参数θ0θ1呢?选择不同的参数θ0θ1时,就会有不同的假设函数。下图列举了三种不同θ0, θ1情况下的假设函数
斯坦福机器学习笔记-单变量线性回归

问题是如何选择参数呢?我们的想法是选择某个参数θ0, θ1,使得对于训练集的训练样本(x, y), hθ(x)尽可能的接近y. 如果预测值和真实值越接近,表示假设函数越准确。这里我们使用均方误差来作为衡量标准,即我们的目标是最小化训练样本的预测值和真实值的平方的均值,公式如下
斯坦福机器学习笔记-单变量线性回归

其中m为训练集中样本数目,上标i表示某训练样本, 1/2是为了简化计算

现在我们定义一个代价函数
斯坦福机器学习笔记-单变量线性回归

我们的目标就是关于θ0, θ1, 对代价函数J(θ0,θ1), 求最小值, 即
斯坦福机器学习笔记-单变量线性回归
斯坦福机器学习笔记-单变量线性回归

代价函数也叫作平方误差代价函数, 也有其他代价函数,不过对于回归问题来说,平方误差代价函数是一个合理的选择。

代价函数直观理解

为了更好的理解代价函数,我们使用简化的假设函数,即令θ0为0, 简化版的假设函数是经过原点的直线,如果所示
斯坦福机器学习笔记-单变量线性回归

我们需要更好的理解两个函数,一个是代价函数,另一个是假设函数。需要注意的是,假设函数是关于x的函数,对于本例就是关于房子面积x的函数。与此不同的是代价函数是关于θ1的函数, 而θ1控制着假设函数的斜率。如图所示,令θ1为1, 训练集包含三个样本
斯坦福机器学习笔记-单变量线性回归

左边为假设函数,x轴为房子面积,现在我们计算下当θ1为1的情况下,代价函数的值为0

继续更改θ1的值,计算对应的代价函数的值, 得到下图
斯坦福机器学习笔记-单变量线性回归

对于不同的θ1, 有着不同的假设函数hθ(x)和不同的J(θ1), 我们学习算法的优化目标就是寻找某个θ1使得代价函数J(θ)值最小,从图中可以看出,当θ1为1的时候,假设函数能够完美的拟合训练数据,代价函数取得最小值

代价函数直观理解II

上节中,我们令θ0等于0, 故代价函数J(θ)是关于θ1的函数。但本节有两个参数θ0, θ1, 所以代价函数图像有些复杂。当只有一个参数θ1的时候,代价函数图像是一个弓形函数,两个参数的代价函数在某种意义上也是一种弓形函数,是一个三维坐标的弓形曲面
斯坦福机器学习笔记-单变量线性回归

其中,参数θ1, θ1分别为底面坐标轴,某点高度表示J(θ)

后面为了简便,将会用轮廓图(contour plots),也叫等高线图来表示。如下图所示,最小值就是这一系列同心椭圆的中心点。举个例子,下图中右侧x点,θ1等于800, θ1等于-0.15,左边就是该参数下的假设函数,可以看到,假设函数不能很好的拟合训练数据,并且x点距离中心点还很远,即此处代价值比较大
斯坦福机器学习笔记-单变量线性回归

类似的,我们逐渐尝试不同的参数值,最后我们找到某个点,虽然不是最小值,但已经很接近最小值点了,如下图所示
斯坦福机器学习笔记-单变量线性回归

当然,我们需要一种有效的算法,能够自动的找到使得代价函数J取得最小值的参数。因为我们会遇到更复杂,更高纬度,更多参数的情况,那时无法将其可视化。这就引出我们下节要将的算法梯度下降算法。

由本两节可知,假设函数是我们拟合数据的函数,而代价函数是评价假设函数拟合数据的拟合程度。

梯度下降算法

梯度下降

梯度下降算法是一种很常用的优化算法,他不仅被用在线性回归中,也被用于机器学习领域中的众多领域。梯度下降算法寻找最有参数θ的思想是:首先随机初始化参数,比如θ0, θ1(例如θ0=0, θ1=0), 不断地改变参数θ0, θ1, 减小J(θ), 直到找到最小值点。
斯坦福机器学习笔记-单变量线性回归

下图片表明了梯度下降法的工作过程, 可以把梯度下降的过程想象成一个人下山,如果想要尽快的下山,则每次都应该向坡度最大的方向下山。
斯坦福机器学习笔记-单变量线性回归

梯度下降算法会收到初始状态的影响,如果我们选择不同的初始点,可能会到达不同的局部最小值。比如下图
斯坦福机器学习笔记-单变量线性回归

下面具体看一下梯度下降算法的定义,如图所示,
斯坦福机器学习笔记-单变量线性回归

其中,:=表示赋值,α为学习速率,控制着下降的歩幅, J(θ0,θ1)θj叫做梯度。算法的微妙之处在于要同时(simultaneously)更新θ0θ1

梯度和学习速率

本节将深入介绍梯度和学习速率对于梯度下降算法的意义。为了简化问题,我们使得θ0等于0. 假设我们选择的初始点θ1在最小值的右侧,此时的斜率是正数。根据算法更新参数公式,θ1减去学习速率α 乘以 梯度, 相当于左移参数,逐渐靠近最低点。如果初始点选择在最低值的左边,则此时的斜率为负数,更新公式会增大,逐渐靠近最低点
斯坦福机器学习笔记-单变量线性回归

如果初始点选取在最优处或者局部最低点,那么局部最优点的导数为0, 所以θ1将不再改变
斯坦福机器学习笔记-单变量线性回归

学习率会影响梯度下降的幅度。如果α太小,则θ的更新速度会很小,那么梯度下降需要很久才能到达最低值。反之,如果α太大,则θ的可能会直接越过最低值,甚至可能无法收敛,即无法达到最低值。
斯坦福机器学习笔记-单变量线性回归

随着逐渐接近局部最优点,相应的导数也会变小,所以参数更新的幅度也会减小,并不需要额外减小α的值来减小下降程度
斯坦福机器学习笔记-单变量线性回归

应用

本节将结合梯度下降和代价函数,并将其应用到线性回归模型中。梯度下降重要的部分就是计算梯度,也就是偏导数项。
斯坦福机器学习笔记-单变量线性回归

我们将假设函数hθ(x(i))=θ0+θ1x(i)带入到代价函数中,并且分别对θ0θ1求偏导得
斯坦福机器学习笔记-单变量线性回归

由此我们得到了完整的梯度下降算法
斯坦福机器学习笔记-单变量线性回归

上节提到,梯度下降算法会受到初始点的影响,可能会收敛到局部最优点。但是用于线性回归问题的代价函数总是一个凸函数(Convex Function), 而凸函数没有局部最优解,只有一个全局最优解。故对于线性回归问题,使用梯度下降算法,总会得到一个全局最优解。

现在我们看一下梯度下降算法的运行过程,下图是关于假设函数和代价函数的图像
斯坦福机器学习笔记-单变量线性回归

使用梯度下降逐渐更新参数θ0θ1的值,最后得到下图所示
斯坦福机器学习笔记-单变量线性回归

最后我们得到最优解,用最优解下的假设函数对房价进行预测,比如一个1,250平方英尺的房子大概能卖到250k$,如下图所示
斯坦福机器学习笔记-单变量线性回归

参考

coursera machine learning week 1

Coursera机器学习笔记(二) - 单变量线性回归

单变量线性回归