Skip to content

1.1 线性回归

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

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

将其可视化如下:

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

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

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

  • 一对 (x(i),y(i)) 称为一个训练样本,而训练样本构成的数据集 {(x(i),y(i))i=1,2,,n} 被称为训练集

  • 一般用 X 表示输入数据的集合 X={x(i)i=1,2,,n},一般用 Y 表示输出数据的集合 Y={y(i)i=1,2,,n}.

    在上例中,X=Y=R.

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

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

线性回归

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

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

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

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

hθ(x)=θ0+θ1x1+θ2x2.

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

h(x)=i=0dθixi=θTx,

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

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

J(θ)=12i=1n(hθ(x(i))y(i))2.

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

LMS 算法

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

θj:=θjαθjJ(θ).

WARNING

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

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

θjJ(θ)=θj12(hθ(x)y)2=212(hθ(x)y)θj(hθ(x)y)=(hθ(x)y)xj.

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

θj:=θj+α(yhθ(x))xj

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

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

θ:=θ+α(yhθ(x))x.

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

方式一:批量梯度下降

利用

θ=θ+αi=1n(y(i)hθ(x(i)))x(i).

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

NOTE

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

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

方式二:随机梯度下降

算法如下:

Loop{for i=1 to n,{θj:=θj+α(y(i)hθ(x(i)))xj(i), for everyj}}

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

NOTE

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

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

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

正规方程

矩阵函数微积分

对函数 f:Rn×dR,我们定义它的导数如下:

Af(A)=[fA11fA1dfAn1fAnd].

假设 A=[A11A12A21A22] 是一个 2×2 矩阵,函数 f:R2×2R 定义为

f(A)=32A11+5A122+A21A22.

则其导数为

Af(A)=[3210A12A22A21].

最小二乘

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

X=[(x(1))T(x(2))T(x(n))T].

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

y=[y(1)y(n)].

因为 hθ(x(i))=(x(i))Tθ,我们可以发现:

Xθy=[(x(1))Tθy(1)(x(n))Tθy(n)]=[hθ(x(1))y(1)hθ(x(n))y(n)].

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

12(Xθy)T(Xθy)=12i=1n(hθ(x(i))y(i))2=J(θ).
微积分观点

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

θJ(θ)=12θ(Xθy)T(Xθy)=12θ((Xθ)TXθ(Xθ)TyyT(Xθ)+yTy)=12θ(θT(XTX)θ2(XTy)Tθ)=12(2XTXθ2XTy)=XTXθXTy.

倒数第二个等号利用了恒等式 xbTx=bxxTAx=2Ax,其中 A 为对称阵。

因此,令 θJ(θ)=0,我们得到了正规方程:

XTXθ=XTy.

因此有

θ=(XTX)1XTy.
线性代数观点

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

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

XT(yXθ)=ORd+1.

解得

θ=(XTX)1XTy.

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