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

模型表达

单变量线性回归是一种最简单、最典型的监督式学习算法。我们将用于训练的数据称为“数据集”(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)}}$$$

评论

还没有评论。

发表评论

发表评论代表你授权本网站存储并在必要情况下使用你输入的邮箱地址、连接本站服务器使用的 IP 地址和用户代理字符串 (User Agent) 用于发送评论回复邮件,以及将上述信息分享给 Libravatar Akismet,用于显示头像和反垃圾。