机器学习—单变量线性回归

本篇讲述以下内容:

  • 单变量线性回归
  • 代价函数
  • 梯度下降

单变量线性回归

回顾上节,在回归问题中,我们给定输入变量,试图映射到连续预期结果函数上从而得到输出。单变量线性回归就是从一个输入值预测一个输出值。输入/输出的对应关系就是一个线性函数。

下面是一个根据房屋面积预测房屋价格的例子。

假设有一个数据集,我们称作训练集,数据集包括房屋面积和房屋价格数据。

x:表示输入变量,也叫特征变量。

y:表示输出变量,也叫目标变量。

(xi,yi):表示一个识训练样本,训练集的一行。i 表示 第 i 个训练样本。

m:表示训练样本的数量。

在接下来的学习之前,先了解一下监督学习的一般工作方式。如下图,训练集通过学习算法训练后,得到一个h(hypothesis),它表示为一个函数。

函数的输入为房屋大小,输出为房屋的价格。通过这个函数我们则可以预测房屋价格,这就是机器学习中的回归问题。

在单变量线性回归中,我们的假设函数为:hθ(x)=θ01x ,其中θ0 和θ1为模型参数。

讲到这肯定有疑惑为什么要选这个函数,实际应用可能不是线性的函数,可能会是更复杂的函数。这里只是为了从简单线性方程的例子入手,假设房屋的面积和价格是一个线性关系。

好继续, 我们有了假设函数,接下来要做的就是如何选择不同的参数θ0 和θ1。下图可以看到不同的参数值会得到不同的假设函数。

我们选择参数θ0 和θ1得到的直线,应该尽量和训练数据拟合。这样才能做出比较精准的预测。

那么如何来使它来更好的拟合数据呢?我们的想法是hθ(x) 应该最接近 y 值,即问题转化成了一个mininize(hθ(x) -y) 的问题,有没有感觉转化成数学问题了。

代价函数

接下来引入一个代价函数Cost Function,也被称作平方误差函数。

函数定义如下,每个训练样本 hθ(x)-y 的平方和,再求平均。再乘1/2是为了接下来的计算上的方便。

我们想要做的就是关于θ0 和θ1对函数J(θ0 ,θ1)求最小值。即找到使得J(θ0 ,θ1)最小值的时候,θ0 和θ1的值。接下来介绍一种算法,梯度下降。它能自动的找出使 J 最小化的参数θ0 和θ1的值

梯度下降

了解梯度下降前,我们了解一下J(θ0 ,θ1) 的函数图像。

θ0 为0时,随着的变化θ1 将会得到下图的效果。θ1取1的时候 J 为最小值 

 

 当θ0 和θ1都有值时。

 

好了,回到我们之前问题描述,我们有一个代价函数J(θ0 ,θ1),想通过一个算法来使用得 J 最小化。

那么梯度下降的思想就是:

开始给定一个(θ0 ,θ1)初始值,我们想通过不断的改变θ0 ,θ1的值,每次改都使得 J 减少。最终J 减少到最小。

下面通过图我们来看梯度下降是如何工作的。

首先想象一下,对θ0 ,θ1赋以某个初始值(一般可以初始化为0)。假设初始化后,J 对应是下图的标红的这个点。

我们想象这是一座山,你站在山上的这个点上。在梯度下降中,我们要做的是看看周周围,并问自己我想要通过小碎步下山,朝哪个方向能最快下山?并朝着这个方向前行。

每走一步都需要调整最快的那个方向。最终你走出了这么一条轨迹。最终走到一个局部最优解——山脚下。当然如果你是站在另一个点,你可以会走出另一条轨迹。

 

上面是通过图直观的感受,那么事实上在这走一步的方向,其实就是梯度的负方向。梯度其实就是J的导数,对于一个线性函数,也就是线的斜率。

如果把每一步的长度定义为学习速率。那么每走一步的这个动作,其实就是 θ0 ,θ1 都朝梯度的负方向进行更新。控制着更新的幅度。

下图是数学定义:即按照一定的学习速率,不断重复更新θ0 ,θ1 直到 J 局部收敛到最小值。

 

下图是对一元线性函数的直客感受,如下图函数上的某点,沿红色方向,即斜率的反方向下降一个步长到另一点。θ1将得到 -* 斜率的更新。

 另一个方向也是同样效果。