机器学习 – 第一周:单变量线性回归

模型表达

单变量线性回归是一种最简单、最典型的监督式学习算法。我们将用于训练的数据称为“数据集”(dataset),则有以下几个定义:

  • $$m$$ 代表训练数据集的大小(即有多少个训练样本);
  • $$x$$ 代表模型的输入(即模型的输入特征数量);
  • $$y$$ 代表模型的输出(即最终预测的结果);
  • 我们用上标 $${^{(i)}}$$代表数据集中的第 i 组数据,如 $${x^{(i)}}$$ 代表数据集中第二个输出;
  • $$h$$ 则是我们用于预测的函数,具体表述如下:
    将学习算法通过训练数据集训练之后得出函数 $$h$$ 中的不确定参数项,此时 $$h$$ 为一确定的函数;
    将任意的输入 $$x$$ 代入 $$h$$ 中,即可得到对应的输出 $$y$$。
    在单变量线性回归中,我们使用的 $${h_\theta}(x)$$$${h_\theta }(x) = {\theta _0} + {\theta _1}x$$

成本函数

线性回归要达到的目标,即将上述 $${h_\theta}(x)$$ 函数中的 $$\theta$$ 求出。如何选择 $$\theta$$ 们就成了要解决的问题。

给出成本函数 $$J({\theta _0},{\theta _1}) = {1 \over {2m}}\sum\limits_{i = 1}^m {({h_\theta }({x^{(i)}}) - {y^{(i)}})} $$
此函数是线性预测函数 $$h$$ 与实际数据 $$y$$ 的误差的方差值。

则我们的问题就转化为了,如何求成本函数 $$J({\theta _0},{\theta _1})$$ 的最小值。

梯度下降法

选用一种算法,使 $$\theta$$ 从任意位置开始,都能下降到一个局部最小值。

梯度下降法的具体做法是,每次迭代都将 $$\theta$$ 减少一个值,这个值是学习速率 $$\alpha$$ 乘以成本函数 $$J$$ 对 $$\theta_i$$ 的偏导数。具体公式如下:

repeat until convergence {
$$\theta_{j}:=\theta_{j}-\alpha\frac{\partial}{\partial\theta_{j}}J(\theta_{0},\theta_{1})$$ (for j=0 and j=1)
}

** 值得注意的是,此处的 $$\theta$$ 的更新是同步的,亦即计算$$\theta_2$$时使用的$$\theta_1$$是本次更新前的值。**

由于每次更新变量 $$\theta$$ 都是减去一个和梯度线性相关的值,故此算法将会在迭代的过程中自行调整每次下降的幅度,
从而减小迭代次数。如当初始值很高,函数图像很陡峭时,此时梯度足够大,故下降的速率也足够大,
从而在单次的迭代中下降足够多的幅度。
而当 $$\theta$$ 已经位于最小值附近时,由于函数图像的缓和,梯度下降,故下降速率会自行变小。
这就是梯度下降算法的优越之处。

在单变量线性回归算法中,梯度下降算法中的偏导数部分可以求解如下:

$$${\theta _0}: = {\theta _0} - \alpha {1 \over m}\sum\limits_{i = 1}^m {({h_\theta }({x^{(i)}}) - {y^{(i)}})} $$$
$$${\theta _1}: = {\theta _1} - \alpha {1 \over m}\sum\limits_{i = 1}^m {({h_\theta }({x^{(i)}}) - {y^{(i)}})} \cdot {x^{(i)}}$$$

发表评论

电子邮件地址不会被公开。 必填项已用*标注