【机器学习】Andrew Ng——02单变量线性回归

来源:互联网 发布:应变数据采集仪 编辑:程序博客网 时间:2024/06/07 13:17

单变量线性回归


房屋价格问题

  首先我们来看卖房问题,如果有朋友想要出售房屋,如何根据已有数据来预测房屋的销售价格。下图所展示的是在第一章概述中提及的有监督学习的回归问题,对于每个样本的输入,都有正确的输出或者答案。如果以直线来表示房屋价格问题,那么当房屋价格为1250平方英尺时,房屋销售价格约为22万。

  m 为训练样本的数目
  x’s 为“输入”变量,也称之为 特征
  y’s 为“输出”变量,也称之为“目标”变量

  房价预测问题的大致学习过程如上图所示,其中x表示房屋的面积大小,y表示预测的价格,h(hypothesis)将输入变量 x 映射到输出变量 y,那么我们该如何表示h?
  我们定义h为:。简写为 h(x),即是单变量线性回归问题。


代价函数(Cost Function)

  对于训练集(x, y),选取参数θ0, θ1使得hθ(x)尽可能的接近y。我们选择的参数 θ0 和 θ1 决定了我们得到的直线相对于我们的训练集的准确程度,模型所预测的值与训练集中实际值之间的差距就是建模误差(modeling error)。

  我们采用的方法就是求训练集的平方误差函数(squared error function)并选取合适的参数使其最小化。


  我们用三维图来观察θ0, θ1和J(θ0, θ1)的关系,可以看出,在三维空间中存在一个使得J(θ0,θ1)最小的点。


梯度下降(Gradient Descent )

  梯度下降算法可应用于多种多样的函数求解,定义一个函数J(θ0, θ1, θ2, …,θn ),通过最小化 θ0 到 θn 来最小化此代价函数J(θ0 到θn)。为简化问题,我们只用到两个参数θ0, θ1,并且将θ0,和θ1初始化为零。

  在梯度下降算法中,所要做的就是不停地一点点改变 θ0 和 θ1 ,试图通过这种改变使得 J(θ0 ,θ1) 变小,直到找到 J(θ0 ,θ1) 的最小值,或者是局部最小值。我们可以把它想象成一座山,我们正在一步一步寻找最快下山的路。

  现在我希望大家把这个图像想象为一座山。想像类似这样的景色,公园中有两座山,想象一下你正站立在山的这一点上,站立在你想象的公园这座红色山上。在梯度下降算法中,我们要做的就是旋转360度,看看我们的周围,并问自己,如果我想要下山,如果我想尽快走下山,我们需要朝什么方向?
  如果我们站在山坡上的某一点,你看一下周围 ​,你会发现最佳的下山方向大约是那个方向。好的,现在你在山上的新起点上,你再看看周围,然后再一次想想我应该从什么方向迈着小碎步下山? 然后你按照自己的判断又迈出一步,往那个方向走了一步。然后重复上面的步骤,从这个新的点,你环顾四周并决定从什么方向将会最快下山,然后又迈进了一小步,又是一小步…并依此类推,直到你接近局部最低点的位置。
  此外这种下降有一个有趣的特点,不同的起始点开始进行梯度下降算法,你会得到一个非常不同的局部最优解,这就是梯度下降算法的一个特点。


梯度下降算法

  梯度下降算法公式如上图所示。在梯度下降算法中,我们需要同时更新 θ0 和 θ1。

  如果α过小,梯度下降可能很慢;如果过大,梯度下降有可能迈过最小点,导致收敛失败而分散。

  如果参数已经处于局部最低点,即使α 保持不变,梯度下降也已收敛到局部最低点。

  梯度下降一步后,新的导数会变小一点点。随着梯度下降法的运行,移动的幅度会自动变得越来越小,直到最终移动幅度非常小,便已收敛到局部极小值。

  在梯度下降算法中,当接近局部最低点时,梯度下降法会自动采取更小的幅度。这是因为接近局部最低点(导数等于零)时,导数值会自动变得越来越小,所以梯度下降将自动采取较小的幅度,这就是梯度下降的做法,所以实际上没有必要再另外减小α。

  梯度下降算法应用于线性回归模型:

  可以看出,用于线性回归的代价函数总是呈现一个弓形,即凸函数。凸函数没有任何局部最优解,只有一个全局最优解。

  目前我们所介绍的梯度下降,是批量梯度下降,就是说在梯度下降的每一步中我们都用到了所有的训​​练样本。在每一个单独的梯度下降中,我们都要对所有训练样本的微分求导项进行求和,这项需要对所有m个训练样本求和。

阅读全文
1 0
原创粉丝点击