2.单变量线性回归
单变量线性回归
模型表示
监督学习:对于每个数据来说,给出了正确的答案。在监督学习中,我们有一个给定的数据,叫做训练集training set
这里进行举例说明:这个例子是预测住房价格的,我们要使用一个数据集,数据集包含俄勒冈州波特兰市的住房价格。在这里,根据不同房屋尺寸所售出的价格,画出数据集
更具体来说,这是一个回归问题。回归一词指的是,我们根据之前的数据预测出一个准确的输出值,对于这个例子就是价格
以之前的房屋交易问题为例,假使我们回归问题的训练集(Training Set)如下表所示:
我们将要用来描述这个回归问题的标记如下:
$m $ 代表训练集中实例的数量
$x $ 代表特征/输入变量
$y $ 代表目标变量/输出变量
$(x,y) $ 代表训练集中的实例
$(x^{(i)},y^{(i)}) $ 代表第$i$ 个观察实例
$h $ 代表学习算法的解决方案或函数也称为假设(hypothesis)
这就是一个监督学习算法的工作方式
- 先把训练集喂给一个学习算法,使之输出一个函数,通常表示为小写$ h$ 表示
- $h$表示一个函数,输入是房屋尺寸大小,可以$ h $根据输入的$ x$值来得出$ y$ 值,$y$ 值对应房子的价格,因此,$h$ 是一个从$x$ 到$ y $的函数映射。
因而,要解决房价预测问题,我们实际上是要将训练集“喂”给我们的学习算法,进而学习得到一个假设$h$,然后将我们要预测的房屋的尺寸作为输入变量输入给$h$,预测出该房屋的交易价格作为输出变量输出为结果
在这个过程中,选择的学习算法对最终效果至关重要,一种可能的表达方式为:$h_\theta \left( x \right)=\theta_{0} + \theta_{1}x$,因为只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归问题。
代价函数
在线性回归中我们有一个像这样的训练集,$m$代表了训练样本的数量,比如 $m = 47$。而我们的假设函数,也就是用来进行预测的函数,是这样的线性函数形式:$h_\theta \left( x \right)=\theta_{0}+\theta_{1}x$
图中的红线代表的就是$h_\theta \left( x \right)=\theta_{0}+\theta_{1}x$这一条拟合曲线,那么,现在要做的便是为我们的模型选择合适的参数$\theta_{0}$ 和$ θ_1$,在房价问题这个例子中:$\theta_{0}$指的是直线在$y$ 轴上的截距,$\theta_{1}$指的是直线的斜率
$ θ_1$和$ θ_0$参数直接决定了拟合直线相对于我们的训练集的准确程度,模型所预测的值与训练集中实际值之间的差距就是建模误差
(下图中黑线是我们得到的直线,×代表原本的数据,蓝线则代表了误差)
我们的目标便是选择出可以使得建模误差的平方和能够最小的模型参数。 即使得代价函数最小。
将以下函数称为代价函数,也叫做平方误差函数
之所以要求出误差的平方和,是因为误差平方代价函数,对于大多数问题,特别是回归问题,都是一个合理的选择。
当$J(θ_0,θ_1)$最小的时候,说明我们得到的直线和原本的数据拟合的效果最好,就可以近似的把$h_\theta \left( x \right)=\theta_{0} + \theta_{1}x$当做拟合算法,通过$x$来预测$y$的值了
特别说明一下,这里将最后的平方和除以$2m$,只是为了之后的求导方便
总结一下:
算法函数$h_\theta \left( x \right)=\theta_{0}+\theta_{1}x$是一条拟合曲线,可近似的根据房屋面积($x$)预测房价($y$),而代价函数($J(\theta_0,\theta_1)$)是评估$h_\theta \left( x \right)$拟合效果的指标,代价函数的函数值越低,说明代价越小,即$h_\theta \left( x \right)$拟合的效果好,所以$\theta_0,\theta_1$的取值应该尽可能的使代价函数($J(\theta_0,\theta_1)$)小,这就涉及到函数的最小值问题
梯度下降
可以用梯度下降法求函数的最小值问题
它的思路很简单,想象在山顶放了一个球,一松手它就会顺着山坡最陡峭的地方滚落到谷底:
梯度下降法
首先需要学习梯度的概念,学习之后,再学梯度下降法
先从最简单的凸函数$f(x)=x^2$开始讲起。假设起点在$x_0=10$处,也就是将球放在$x_0=10$
那么,此时的梯度是1维向量,数值为该点的导数:
这是在$x$ 轴上的向量,它指向函数值增长最快的方向
将$x_0$也看作 1 维向量$(x_0)$,通过和$-\nabla f(x_0)$相加,可以将之向$-\nabla f(x_0)$移动一段距离得到新的向量$(x_1)$:
其中$\alpha$称为步长,通过它可以控制移动的距离,本节设$\eta=0.2$,那么:$x_1=10-0.2×20=6$
小球就下降到了$x_1=6$的位置
如果继续迭代,不断的计算小球当前位置的梯度,并用公式$x_1=x_0-\eta\nabla f(x_0)$,选择小球的横坐标
球就会逼近最低点,重复上述过程到第 10 次,小球基本上就到了最低点,即有$x_{10}\approx 0$
如果将每次的梯度的模长列出来,可以看到是在不断减小的,因此这种方法称为梯度下降法:
这也比较好理解,当最终趋向于 0 时有:
三维上的梯度下降法
假设函数为:$f(\boldsymbol{x})=x_1^2+2x_2^2\$
图像和等高线如下:
设初始点$\boldsymbol{x}_0=(-3.5,-3.5)$,此时梯度为:
令步长$\eta=0.1$,那么下一个点为:
如此迭代20次后:
即找到了最小值
总结
结合之前的模型和代价函数,我们将梯度下降公式$\boldsymbol{x}_1 =\boldsymbol{x}_0-\eta\nabla f(\boldsymbol{x}_0)$,带入到我们之前的的代价函数$J(θ_0,θ_1)$中去,可以得到
具体描述:对$θ$赋值,使得$J(θ)$按照梯度下降最快的方向进行,一直迭代下去,最终得到局部最小值。
学习率(步长):$α$是学习率,它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大。
- 学习率太小:收敛速度慢需要很长的时间才会到达全局最低点
- 学习率太大:可能越过最低点,甚至可能无法收敛
别忘了之前的学习算法是$h_\theta \left( x \right)=\theta_{0} + \theta_{1}x$
对我们之前的线性回归问题运用梯度下降法,关键在于求出代价函数的导数,即:
当$j=0$时:
当$j=1$时:
注意观察,在这个多元函数中,我们是对$\theta_0$和$\theta_1$求偏导,$x$和$y$都是固定的值,而$\theta_0$和$\theta_1$的值注意要同时进行更新
则算法改写成:
Repeat {
${\theta_0}:={\theta_0}-a\frac{1}{m}\sum\limits_{i=1}^{m}{ \left({h_{\theta }}(x^{(i)})-{y^{(i)}} \right)}$
${\theta_1}:={\theta_1}-a\frac{1}{m}\sum\limits_{i=1}^{m}{\left( \left({h_{\theta }}({x^{(i)}})-{y^{(i)}} \right)\cdot {x^{(i)}} \right)}$
}
这种算法也被称为批量梯度下降。实际上,在机器学习中,通常不太会给算法起名字,但这个名字”批量梯度下降”,指的是在梯度下降的每一步中,我们都用到了所有的训练样本,在梯度下降中,在计算微分求导项时,我们需要进行求和运算,所以,在每一个单独的梯度下降中,我们最终都要计算这样一个东西,这个项需要对所有$m$个训练样本求和。