线性回归

房价问题

如果我们给出一组房屋面积和房间之间关系的属于,该如何用这组数据去预测某个房屋面积的价格?在机器学习中这个问题满足下面两个条件:

  • 一组有确定输出值(房屋价格)得得输入值(房屋面积):监督学习
  • 根据一个输入值预测一个确定的输出值:回归

这就是本文中所要解释的话题:监督学习中的回归。如果把这组数据放在一个二维坐标内,然后来画一条直线,让这条直线尽可能的经过点所在的区域,则通过这条直线就可以预测房屋的价格,回归算法将帮助你找到这条直线

符号的解释

样例标号 房屋面积 价格
1 150 15000
2 120 600
3 60 300
4 70 450
n …… ….
  • x(i):第i个输入值。例如:x(1)=150
  • y(i):第i个输出值。例如:y(2)=600
  • (x(i),y(i)):一组训练样例。例如: (x(3),y(3))=(60,300)
  • m:训练样例组的个数。例如上面训练集的m=n

有了上面这些约定我们再来描述一下回归问题:给定一个数据集,并通过他来学习到一个方程h : X → Y , h(x)可以通过x预测y。h(x)被称为假设函数

代价方程

线性回归

在本次讲解中我们假设这个方程式h为:hθ(x)=θ0+θ1*x,这里是y关于x的线性函数那么为什么是一个线性函数呢? 有时候 我们会有更复杂的函数 也许是非线性函数 但是 由于线性方程是简单的形式,我们将先从线性方程的例子入手 当然 最终我们将会建立更复杂的模型以及更复杂的学习算法。我们也给这模型 起一个名字 这个模型被称为线性回归(linear regression)模型。另外,这实际上是关于单个变量的线性回归,这个变量就是x 根据x来预测所有的价格函数。同时,对于这种模型有另外一个名称 称作单变量线性回归,单变量是对一个变量的一种

代价方程的解释

在我们确定使用线性回归模型后我们需要一个值来描述hθ(x)=θ0+θ1x的准确性,这就是*代价方程。代价方程实质上就是hθ(x)计算出的ys值和真实ys之间的平均差,在二维坐标轴可解释为实际的点到直线之间的平均垂直距离。所以我们的任务就变成了通过调整θ0和θ1,似的代价方程J(θ0,θ1)的值最小

代价方程的轮廓一

如果我们把J(θ0,θ1)的一个值固定,则线性回归方程和代价方程之间的关系可以用下图表示:

代价方程的轮廓二

如果我们把J(θ0,θ1)中的J(θ0,θ1)值都在变化,则线性回归方程和代价方程之间的关系可以用下图表示:

上图片右侧是轮廓图,扩展成三维坐标后是这样子的:

梯度下降法

到此我们已近有了确定了假设函数h的模型为线性回归,并确定了代价方程J(θ0,θ1)用了测量线性回归方程的准确性,现在需要一个算法来得代价方程的最小值,这个算法就是梯度下降法。

什么叫梯度

在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。比如函数f(x,y), 分别对x,y求偏导数,求得的梯度向量就是(∂f/∂x, ∂f/∂y)T,简称grad f(x,y)或者▽f(x,y)。对于在点(x0,y0)的具体梯度向量就是(∂f/∂x0, ∂f/∂y0)T.或者▽f(x0,y0),如果是3个参数的向量梯度,就是(∂f/∂x, ∂f/∂y,∂f/∂z)T,以此类推。那么这个梯度向量求出来有什么意义呢?他的意义从几何意义上讲,就是函数变化增加最快的地方。具体来说,对于函数f(x,y),在点(x0,y0),沿着梯度向量的方向就是(∂f/∂x0, ∂f/∂y0)T的方向是f(x,y)增加最快的地方。或者说,沿着梯度向量的方向,更加容易找到函数的最大值。反过来说,沿着梯度向量相反的方向,也就是 -(∂f/∂x0, ∂f/∂y0)T的方向,梯度减少最快,也就是更加容易找到函数的最小值。

梯度下降的直观解释

首先来看看梯度下降的一个直观的解释。比如我们在一座大山上的某处位置,由于我们不知道怎么下山,于是决定走一步算一步,也就是在每走到一个位置的时候,求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的位置向下走一步,然后继续求解当前位置梯度,向这一步所在位置沿着最陡峭最易下山的位置走一步。这样一步步的走下去,一直走到觉得我们已经到了山脚。当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山峰低处。从上面的解释可以看出,梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。

梯度下降表达式

Repeat until convergence:{

}

  • ==$\frac{d}{d\theta_1} J(\theta_1)$==:下降时的斜率,在下山的例子中就是坡度
  • ==$\alpha$==: 代表我们以多大的幅度更新$\theta_1$,在下山的例子中,就是我们下山步子的大小,称为学习速率
  • ==:=== 代表我们给这个$\theta_1$重新赋值
$\alpha$的取值大小

$\alpha$如果取值过小,将下坡的很慢。$\alpha$如果取值过大,则可能一脚跨过最低点。

梯度

在梯度下降法中,当我们接近局部最低点时 梯度下降法会自动采取更小的幅度。这是因为当我们接近局部最低点时,很显然在局部最低时导数等于零,所以当我们接近局部最低时导数值会自动变得越来越小,所以梯度下降将自动采取较小的幅度