Skip to content

1.1 线性回归

假设我们有一个有关 47 间房子的居住面积和价格的数据集:

居住面积(平方英尺)价格(1000 $)
2104400
1600330
2400369
1416232
3000540

将其可视化如下:

我们的目标是:给定这样的数据集,我们应该如何预测其他房子的价格,也就是说,我们应该给出怎样的预测函数?

以下列举一些记号和术语,方便之后的讨论:

  • 我们使用上标来表示训练数据,其中 表示第 个输入数据或输入特征 (input features), 表示第 个输出数据或目标变量 (target variables);

  • 一对 称为一个训练样本,而训练样本构成的数据集 被称为训练集

  • 一般用 表示输入数据的集合 ,一般用 表示输出数据的集合 .

    在上例中,.

  • 利用上面的术语,我们可以给有监督学习一个更加正式的表述:给定训练集,我们需要学习获得一个函数 ,使得 的良好预测。由于历史原因,这个函数 被称为假设函数 (hypothesis)。上面讲述的过程可以用如下的流程图表示:

  • 如果我们想要预测的目标变量是一个连续随机变量,我们就把这类学习问题称作回归问题 (regression problem);若目标变量是离散随机变量,则称这类学习问题为 (classification problem)。

线性回归

为了让我们的学习问题更加有趣,我们引入更加丰富的训练集:

Living area (feet)bedroomsPrice (1000$s)
21043400
16003330
24003369
14162232
30004540

在这里, 中的二维向量: 表示第 个训练样本的第一个分量(房子的面积 表示第 个训练样本的第二个分量(卧室数事实上,我们完全可以自由地选择使用什么输入特征进行学习,而特征的选取也是一个相当重要的话题,不过在此我们假设输入特征是给定的,以便于接下来的讨论。

为实施有监督学习,我们需要一个假设函数 ,在此处我们选择线性函数作为假设函数:

在此处, 被称为参数或权值 (parameters / weights)。如无歧义,我们可以丢弃下标 ,简记为 . 为简化我们的表达式,我们引入 ,因此从向量内积的角度看,上式可重写为

其中右端的 是参数向量 / 权值向量, 是输入向量, 是输入特征数(不包含

现在,我们所需要做的就是找到 的表达式,使得我们的假设函数 尽可能地接近 . 为量化表示 “接近” 这一概念,我们定义代价函数 (cost function):

我们的目标就是找到一个 ,使得 取得最小值。然后,取这个 作为我们假设函数的参数向量。

LMS 算法

我们可以使用一种算法,它从某个初始猜测值 出发,然后不断地改变 ,使得 不断减小,直到 能够收敛到某个确定的 . 我们可以考虑梯度下降算法 (gradient descent algorithm),这个算法秉承着上面的思路,对 不断进行更新:

WARNING

  • 在接下来的所有语境中,我们用 表示把 赋值给 ,而用 表示 相等。这是符合数学传统规定的。
  • 上式同时对所有 执行。
  • 称为学习率。

现在,我们只需计算 的各阶偏导数即可。由于 中有求和项,为了讨论的便利,我们先假设 ,即我们只有一个训练样本,这样我们就可以忽略其中的求和符号:

因此对单个训练数据,我们的更新方法是:

这一法则称为 LMS 更新法则 (least mean squares),也被称为 Widrow-Hoff 学习法则。我们可以发现,这一更新公式与误差项成比例:误差越大,需要更新的越多;反之越少。

对上面这个公式,如果我们将其写成向量的形式,可有:

而对于由多个训练样本组成的训练集,我们有两种方式处理:

方式一:批量梯度下降

利用

一次性处理训练集中的所有训练样本。这种方法的正确性是显然的:对于有限个训练样本,求和和求偏导显然是可以交换次序的(当然,无限项就需要斟酌是否能够交换次序了,一般来说和级数的一致收敛性相关这种方法被称为批量梯度下降法 (batch gradient descent)。

NOTE

批量梯度下降法的优缺点如下:

  • 优点:收敛稳定;
  • 缺点:计算开销大,在完成所有样本的计算之后才能更新参数。

方式二:随机梯度下降

算法如下:

这种算法被称为随机梯度下降。

NOTE

随机梯度下降的优缺点如下:

  • 优点:相比于批量梯度下降,随机梯度下降的计算开销较小,能够更快地 “靠近” 极值点;
  • 缺点:但是随机梯度下降的收敛是震荡的,有时候并不会收敛到极值点。

尽管如此,那些在极值点附近的震荡值是极值点的良好近似!所以在实际运用中,随机梯度下降的应用是更加广泛的。

正规方程

矩阵函数微积分

对函数 ,我们定义它的导数如下:

假设 是一个 矩阵,函数 定义为

则其导数为

最小二乘

接下来我们尝试找出 的准确收敛值。给定一个训练集,我们定义一个 矩阵 ,包含所有的输入特征:

定义 维向量,包含所有的目标变量:

因为 ,我们可以发现:

根据二次型相关知识,我们有

微积分观点

因此,为找到使 取到最小值的 ,对左式,我们只需要对 求导即可。

倒数第二个等号利用了恒等式 ,其中 为对称阵。

因此,令 ,我们得到了正规方程:

因此有

线性代数观点

事实上,更简洁的理解方式是线性代数的理解方式。如果我们将 理解为 的每一个列向量的线性组合,对于任意的 张成了一个线性空间。一般而言, 不在这一线性空间中,对应线性方程组 无解;但如果我们将 投影到该线性空间中,以投影向量替代原线性方程组的右端常数项,那么我们就一定可以找到一组解,且这组解一定会使得 取到最小值。

不妨设 在这一线性空间的投影为 ,那么 就一定垂直于这个线性空间,也就是 的所有列向量的点积为零,即

解得


正规方程提供了线性回归的精确数学解,是理解最小二乘本质的基础,但在大数据场景下梯度下降更实用。