线性回归

image-20250815165519750

引言

线性回归是机器学习中最基础的监督学习算法,其本质是通过输入特征的仿射变换(加权线性变换与平移)建立预测模型。本文详细阐述线性回归的数学原理、损失函数推导及两种求解方法。

数学原理

符号定义

符号 描述
$n$ 样本数量
$d$ 特征数量
$\mathbf{X} \in \mathbb{R}^{n \times d}$ 特征矩阵
$\mathbf{w} \in \mathbb{R}^d$ 权重向量
$b \in \mathbb{R}$ 偏置项
$\epsilon \sim \mathcal{N}(0, \sigma^2)$ 服从正态分布的噪声
$\hat{\mathbf{y}} \in \mathbb{R}^n$ 模型预测输出向量
$\mathbf{x}^{(i)}$ 第 $i$ 个样本的特征向量
$y^{(i)}$ 第 $i$ 个样本的真实标签
$\mathbf{y} \in \mathbb{R}^n$ 真实标签向量

回归方程

线性回归模型的预测输出表示为: $\hat{\mathbf{y}} = \mathbf{X} \mathbf{w} + b + \epsilon$ 其中:

  • $\mathbf{X}\mathbf{w}$ 是特征加权和
  • $b$ 是平移偏置项
  • $\epsilon$ 是独立同分布的高斯噪声

损失函数

评估线性模型的性能,一般使用均方误差(Mean Squared Error, MSE)作为损失函数: $L(\mathbf{w}, b) = \frac{1}{n} \sum_{i=1}^{n} \frac{1}{2} \left( \mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)} \right)^2$ 该损失函数衡量了模型预测值 $\hat{\mathbf{y}}$ 与真实值 $\mathbf{y}$ 之间的差异,系数 $\frac{1}{2}$ 的引入是为了在后续求导时简化表达式。

推导过程

给定一组独立观测数据 $ \mathcal{D} = {(\mathbf{x}^{(i)}, y^{(i)})}_{i=1}^n $,我们希望估计模型参数 $ \mathbf{w} $ 和 $ b $,使得这些参数最有可能生成当前观测结果。

单个样本的条件概率密度函数为: $p(y^{(i)} \mid \mathbf{x}^{(i)}; \mathbf{w}, b) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left( -\frac{\mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)}}{2\sigma^2} \right)$

样本独立时,数据集的对数似然函数为: $\begin{aligned} \log \mathcal{L}(\mathbf{w}, b) &= \sum_{i=1}^{n} \log p(y^{(i)} \mid \mathbf{x}^{(i)}; \mathbf{w}, b) \\ &= -\frac{n}{2} \log(2\pi\sigma^2) - \frac{1}{2\sigma^2} \sum_{i=1}^{n} (\mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)})^2 \end{aligned}$


注意到第一项 $-\frac{n}{2} \log(2\pi\sigma^2)$ 是常数(与 $ \mathbf{w}, b $ 无关),因此对线性回归模型进行极大似然估计(Maximum Likelihood Estimation, MLE)等价于最小化均方误差。:

$$ \max_{\mathbf{w}, b} \log \mathcal{L}(\mathbf{w}, b) \quad \Leftrightarrow \quad \min_{\mathbf{w}, b} \sum_{i=1}^{n} \left( \mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)} \right)^2 $$

补充说明

  • 噪声方差 $\sigma^2$ 的 MLE 估计为: $\hat{\sigma}^2 = \frac{1}{n} \sum_{i=1}^{n} (y^{(i)} - \mathbf{w}^\top \mathbf{x}^{(i)} - b)^2$
  • $\sigma^2$ 不影响 $\mathbf{w}, b$ 的最优解位置,仅作为缩放因子。

优化目标

最终的优化目标是寻找使损失函数最小的参数: $\mathbf{w}^*, b^* = \underset{\mathbf{w}, b}{\arg\min} L(\mathbf{w}, b).$

求解方法

解法一:解析解(闭式解)

线性回归的解可以用一个公式直接表达,这类解称为解析解(analytical solution)。

矩阵形式变换

为统一处理偏置项,将 $b$ 合并进权重向量: $\mathbf{X} \leftarrow \begin{bmatrix} \mathbf{X} & \mathbf{1} \end{bmatrix}, \quad \mathbf{w} \leftarrow \begin{bmatrix} \mathbf{w} \\ b \end{bmatrix}$ 预测简化为: $\hat{\mathbf{y}} = \mathbf{X}\mathbf{w}$

损失函数的矩阵表示为: $L(\mathbf{w}) = (\mathbf{y} - \mathbf{X}\mathbf{w})^\top (\mathbf{y} - \mathbf{X}\mathbf{w})$

求导与极值点

梯度计算: $\frac{\partial L(\mathbf{w})}{\partial \mathbf{w}} = -2 \mathbf{X}^\top \mathbf{y} + 2 \mathbf{X}^\top \mathbf{X} \mathbf{w}$ 令梯度为0,得正规方程: $\mathbf{X}^\top \mathbf{X} \mathbf{w} = \mathbf{X}^\top \mathbf{y}$ 最优解为: $\mathbf{w}^* = (\mathbf{X}^\top \mathbf{X})^{-1} \mathbf{X}^\top \mathbf{y}$

适用条件:$\mathbf{X}^\top\mathbf{X}$ 可逆(即特征列满秩)情况下,由于公式中的值是都是已知的,我们可以直接计算出最优参数 $\mathbf{w}^*$,而不需要使用迭代优化方法。解析解适用于小规模、低维数据,但在大部分深度学习问题中不可行。

解法二:随机梯度下降(SGD)

当特征维度高或样本量大时,矩阵求逆计算复杂度达 $O(d^3)$,此时推荐迭代解法,可使用小批量随机梯度下降(Minibatch Stochastic Gradient Descent, SGD)训练模型。

超参数设置

在执行迭代时,需手动设置超参数(hyperparameter)。调参(hyperparameter tuning)是选择超参数的过程。超参数通常是我们根据在独立的验证数据集(validation dataset)上评估结果来调整的。

超参数 推荐范围/取值 说明    
学习率 $\eta$ $[10^{-5}, 10^{-1}]$ 控制步长,过大震荡,过小收敛慢    
批量大小 $ \mathcal{B} $ 32, 64, 128 影响梯度估计稳定性与内存使用
迭代次数(Epochs) 10–1000 遍历数据集的次数    

算法流程

  1. 初始化:随机初始化 $\mathbf{w}, b$

  2. 迭代更新(直至收敛或达到最大 epoch):

    • 随机采样小批量 $\mathcal{B} \subseteq {1,\dots,n}$

    • 计算梯度: $\nabla_{\mathbf{w}} L = \frac{1}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} (\mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)}) \cdot \mathbf{x}^{(i)}$

      $$ \nabla_b L = \frac{1}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} (\mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)}) $$
    • 更新参数: $\mathbf{w} \leftarrow \mathbf{w} - \eta \nabla_{\mathbf{w}} L, \quad b \leftarrow b - \eta \nabla_b L$

在训练了预定的迭代次数或满足某些其他停止条件后,得到模型参数的估计值 $\hat{\mathbf{w}}, \hat{b}$。估计值受限于学习率的精度,并不会不能在有限的步数内使损失函数非常精确地达到最小值,但会逐渐缓慢收敛。

代码实现

复杂实现

image-20250815163946766

简单实现

image-20250815163548542