机器学习算法笔记-线性回归

前言

最近对于线性模型进行了学习,写一写学习到的核心内容。本部分主要包括线性模型,线性回归,以及正则化的线性回归。

线性模型

线性模型试图通过属性的线性组合进行预测。现在给定由 d 个属性描述的示例 \(\boldsymbol{x}=(x_1;x_2;...;x_d)\),函数即

\[ f(\boldsymbol{x})=w_1x_1+w_2x_2+...+w_dx_d+b \]

一般写成向量形式

\[ f(\boldsymbol{x})=\boldsymbol{w}^T\boldsymbol{x}+b \]

其中 \(w=(w_1;w_2;...;w_d)\)\(w\)\(b\) 习得后,模型确定。

在机器学习中,线性模型形式简单,易于建模,应用广泛。

  • 线性模型是参数化的,这意味着其形式固定,仅有少量数值参数需要从数据中学习。
  • 线性模型比较稳定,即训练数据中的微小波动仅会对模型的学习结果产生极为有限的影响。
  • 与其他模型相比,线性模型不易过拟合。但由于包含参数少,易于欠拟合。

线性回归

给定数据集 \(D=\{(\boldsymbol{x}_1,y_1), (\boldsymbol{x}_2,y_2), ..., (\boldsymbol{x}_m,y_m) \}\),其中 \(\boldsymbol{x}_i=(x_{i1};x_{i2};...;x_{id})\)\(y_i\in \mathbb{R}\) 。线性回归试图学习一个线性模型以尽可能准确的预测输出标记,即

\[ f(\boldsymbol{x}_i) = \boldsymbol{w}^T \boldsymbol{x}_i + b \]

使得 \(f(\boldsymbol{x}_i) \simeq y_i\)

可利用最小二乘法对 \(\boldsymbol{w}\)\(b\) 进行估计。为了便于讨论,我们将 \(\boldsymbol{w}\)\(b\) 吸收入向量形式 \(\hat{\boldsymbol{w}}=(\boldsymbol{w}; b)\),相应的,将数据集 \(D\) 表示为一个 \(m *(d+1)\) 大小的矩阵 \(\mathbf{X}\) ,其中每行对应一个示例,该行前 d 个元素对应于 d 个属性值,最后一个元素恒为1,即

\[ \mathbf{X} = \begin{bmatrix} x_{11} & x_{12} & \cdots & x_{1d} & 1 \\ x_{21} & x_{22} & \cdots & x_{2d} & 1 \\ \vdots & \vdots & \ddots & \vdots \\ x_{m1} & x_{m2} & \cdots & x_{md} & 1 \\ \end{bmatrix} = \begin{pmatrix} \boldsymbol{x_1^T} & 1 \\ \boldsymbol{x_2^T} & 1 \\ \vdots & \vdots \\ \boldsymbol{x_m^T} & 1 \\ \end{pmatrix} \]

再把标记也写成向量形式 \(\boldsymbol{y}=(y_1;y_2; ...; y_m)\),有

\[ \hat{\boldsymbol{w}}^*=\arg\min_{\hat{\boldsymbol{w}}} (\boldsymbol{y}-\mathbf{X \hat{\boldsymbol{w}}})^T (\boldsymbol{y}-\mathbf{X \hat{\boldsymbol{w}}}) \]

\(E_{\hat{\boldsymbol{w}}}=(y-\mathbf{X\hat{\boldsymbol{w}}})^T(y-\mathbf{X\hat{\boldsymbol{w}}})\),对 \(\hat{\boldsymbol{w}}\) 求导得到

\[ \frac{\partial E_{\hat{\boldsymbol{w}}}}{\partial \hat{\boldsymbol{w}}} = 2\mathbf{X}^T(\mathbf{X\hat{\boldsymbol{w}}}-\boldsymbol{y}) \]

令上式为零可得 \(\hat{\boldsymbol{w}}\) 最优解的闭式解,但是由于设计矩阵逆的计算,比单变量情形更为复杂。

\(\mathbf{X}^T\mathbf{X}\) 为满秩矩阵或正定矩阵时,令上式子为零可得

\[ \hat{\boldsymbol{w}^*}=(\mathbf{X}^T\mathbf{X})^{-1} \mathbf{X}^T\boldsymbol{y} \]

其中 \((\mathbf{X}^T\mathbf{X})^{-1}\) 是矩阵 \(\mathbf{X}^T\mathbf{X}\) 的逆矩阵。令 \(\hat{\boldsymbol{x}}_i = (\boldsymbol{x_i};1)\),则最终学得的多元线性回归模型为

\[ f(\hat{\boldsymbol{x}}_i) = \hat{\boldsymbol{x}}_i^T (\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\boldsymbol{y} \]

然而,现实中 \(\mathbf{X}^T\mathbf{X}\) 往往并不满秩,而且求矩阵逆比较慢。因此在实际操作中,我们通常通过梯度下降法来寻找一个比较好的参数向量 \(\boldsymbol{w}\),使得损失函数 \(L(\boldsymbol{w})\),取极小值。

梯度下降法

对于线性回归模型,我们可以将其损失函数 \(L(\boldsymbol{w},b)\) 定义为样本 \(\boldsymbol{x}_i\) 的估计值与真实值 \(y_i\) 之间的误差平方和,成为均方误差。

\[ L(\boldsymbol{w},b)=\sum_{i=1}^m (f(\boldsymbol{x_i} - y_i))^2 \]

梯度下降法计算流程如下:

  1. 首先对 \(\boldsymbol{w}\) 赋初值,最好为随机值。
  2. 改变 \(\boldsymbol{w}\) 的值,使得 \(L(\boldsymbol{w}\) 向梯度下降的方向减少。

对于损失函数 \(L(\boldsymbol{w})\),算法迭代的规则为:

\[ \begin{aligned} w_j &= W_j - \alpha \frac \partial {\partial w_j} L (\boldsymbol{w}) \\ \frac \partial {\partial w_j} L (\boldsymbol{w}) &= \frac \partial {\partial w_j} (f(\boldsymbol{x})-y)^2 \\ &=2(f(\boldsymbol{x})-y) \frac \partial {\partial w_j}(f(\boldsymbol{x})-y) \\ &=2(f(\boldsymbol{x})-y)\frac \partial {\partial w_j}(\sum_{i=0}^n w_ix_i - y) \\ &= 2(f(\boldsymbol{x})-y)x_j \end{aligned} \]