之杰的机器学习笔记:2.单变量线性回归

现在我们开始讨论监督学习中的回归问题,这里我们从最简单的例子开始。

我们不妨可以思考一个非常理想化的问题:假设有一棵小树苗,当我们给它浇水时它会生长,如果营养足够可以认为浇水量x和树苗的高度h服从一定的线性关系。也就是说,如果我们浇水x升树苗会长高θx米,那么浇水2x升的话树苗就会长高2θx米...这听上去非常理想,事实上树苗的生长仍受到自然环境的影响。

上述问题的简单之处主要体现在两点:第一,我们假设浇水量x和树苗高度h服从线性关系,这种问题被称作线性回归(Linear Regression);第二,我们只考虑了浇水量对树苗高度的影响,即这是单变量的。因此我们在这里讨论的问题被叫做单变量线性回归

现在我想要知道当我任意浇水x升时小树苗会长多高,一种方法是我们可以进行实验,但是这种方法是离散的、有限的,无论如何也不可能记录x的连续区间内的全部结果。那么如何让计算机解决这个问题呢?

首先需要对这个问题进行建模,这里即建立单变量线性回归模型的一种形式:

其中hθ被称作假设函数(Hypothesis),也就是我们渴望得到的目标函数——即树苗生长后的高度。θ0和θ1是模型的参数,分别表示树苗的初始高度和生长率(即每浇1升水增高的高度),x表示浇水量。

对于计算机来说,他不能理解这些参数的生动含义,事实上我们也可以理解为x是一个特征,h是一个目标变量,我们需要通过回归建立h与x的关系,这种思路更普适于一般问题。对人类来说,当你搞不清楚这个关系,不妨去做一些实验,从实验数据中寻找规律。计算机与人类一样,是需要经过训练的。我们可以采集足够多的离散(x,h)数据,这些数据被称作训练样本(Training Example),我们把这些样本称作一个训练集(Training Set)。提供给计算机一个训练集,往往是机器学习中首要的甚至是唯一的人类干涉的问题。

那么计算机接下来需要干什么呢?当我们收集到训练集提供给计算机,事实上我们也只得到了若干离散点上对应的函数关系(假设这些实验数据是足够可信的),仍然不能在x的整个连续区间上找到h-x对应关系。这里我们的思路是能否让计算机通过已知数据找到一个函数,使得这个函数在这些数据点上的值与实际数据值(即若干测量点上回归得到的树苗长高量与实际测得的长高量)偏差最小。如果读者有一定的误差分析理论,会立即意识到一个更好的方法是使其残差平方和最小。残差即上述偏差,取平方的原因是对正负偏差一视同仁。

于是我们引入代价函数(Cost Function),也叫做平方误差函数:

这里的y和h分别是指实验测得值与回归得到的目标函数值,m是训练集的大小。至于前面的系数可以看做是对结果的归一化,实际上系数的有无并不影响最后的结果。

现在我们来理解这个式子:读者可能注意到这个公式的自变量变成了θ0和θ1,这是为什么呢?事实上,决定一个单变量线性函数的自由度只有2个,也就是说在一个2维笛卡尔坐标系中需要2个变量来确定我们的回归函数。我们只需要找到合适的θ0和θ1,就可以拟合出和实验数据足够拟合的函数。当函数值J足够小时,也就意味着回归直线足够体现出测量数据的规律,这正是我们希望通过计算机实现的。

现在让我们来总结一下解决树苗高度预测问题我们现在的进展:

似乎离胜利只有一步之遥了。现在我们的问题是如何求出代价函数的最小值,最值的求法有很多种,这里我们介绍机器学习中常用的一种算法:梯度下降(Gradient Descent)。

梯度是分析学中提出的名词。如果读者感到陌生也没关系,我们可以这样来理解梯度:梯度体现的是一个函数上升(下降)最快的方向。对于大家最熟悉的二维笛卡尔坐标系,梯度即一个函数的斜率。由于斜率符号的定义,具体表现为:二维函数的梯度是指函数上升最快的方向,其大小等于函数在该点的斜率值。那么对于求最小值问题,我们只需要对目标函数沿梯度的反向不断进行修正,不就可以求得它的最小值了吗?

梯度下降的公式可以表达如下:

其中α被称作学习率(Learning Rate),α与梯度共同决定每次更新时的步长。如果α太小,梯度下降速度慢,算法耗费的时间长;如果α太大,梯度下降无法收敛(Fail to Converge)甚至发散(Diverge)。

                            

读者朋友应该注意到,这里我们引入了两个参量θ0和θ1,因此在进行梯度下降时需要注意参数必须同步更新;也就是说在一次更新中必须使用θ0和θ1进行更新之前的值,而不能够在更新θ1时使用刚刚更新过的θ0。

下面我们尝试求出损失函数的梯度,这实际是一个求一阶微分的过程,具体过程列写如下:

有的读者可能会提出疑问:利用梯度下降,如果没有搜索到函数的全局最优解,而是在陷入一个局部最优解附近,该怎么办呢?事实上,我们这里处理的问题大多是一个凸函数(Convex Function),即有且只有一个最优解,至于具有多个局部最优解的处理方法,之后会有更进一步的讨论。

整理一下,便可以得到利用梯度下降进行单变量线性回归方法的伪代码:

至此,我们已经介绍完单变量线性回归的算法了。对于树苗高度的预测问题,通过编程便可以让计算机实验问题的求解。但是事实上一个问题往往不仅仅是由一个特征而定的,当我们解决回归问题时,若有多个变量,又该如何处理呢?

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值