机器学习算法之一:线性回归算法介绍
本文系统介绍了线性回归的理论基础与优化方法。主要内容包括:1)回归问题建模基础,区分分类与回归任务,建立线性模型向量化表示;2)误差衡量标准,重点讲解均方误差(MSE)及其数学推导,补充MAE、MAPE等指标;3)损失函数与优化目标,推导梯度下降更新公式,分析学习率影响;4)深入解析最大似然估计与损失函数的关系。文章从数学原理出发,完整呈现了线性回归的理论框架,为理解这一基础机器学习算法提供了扎实的理论基础。

本文共八节内容,聚焦机器学习线性回归背后的数学原理,无代码无应用,纯介绍其背后的理论:
第一节:回归建模基础
第二节:如何衡量误差
第三节:补充其他误差衡量标准
第四节:线性回归的损失函数与目标建模
第五节:最大似然估计与损失函数的关系
第六节:梯度下降的数学推导与图示理解
第七节:梯度下降的三种形式
第八节:线性回归的梯度推导与更新总结

第一节:回归建模基础

一、什么是回归问题?
机器学习问题主要分为两类:

类型 输出类型 示例
分类问题 离散值(类标签) 某人是否能获贷?(是 / 否)
回归问题 连续值 某人最多能贷多少额度?(数值)

👉本文关注回归问题:预测一个连续变量,例如贷款额度、房价、寿命等。
二、线性回归的基本形式
设有两个特征,例如工资 x1x_1x1、年龄 x2x_2x2,我们希望使用一个线性模型来预测贷款额度 y^\hat{y}y^
在这里插入图片描述
其中:

θ0\theta_0θ0:偏置项,用于微调模型整体输出;
θ1,θ2\theta_1, \theta_2θ1,θ2:对应特征 x1,x2x_1, x_2x1,x2 的权重参数;
y^\hat{y}y^:模型预测值。
​三、向量化表示
为了简化表示,引入常数特征 x0=1x_0 = 1x0=1,将模型改写为向量形式:

特征向量:x=[x0,x1,x2]=[1,x1,x2]\mathbf{x} = [x_0, x_1, x_2] = [1, x_1, x_2]x=[x0,x1,x2]=[1,x1,x2]

参数向量:θ=[θ0,θ1,θ2]\boldsymbol{\theta} = [\theta_0, \theta_1, \theta_2]θ=[θ0,θ1,θ2]

于是模型表达式可写为:
在这里插入图片描述
即:预测值等于参数向量与特征向量的内积。
四、多样本建模
设有 mmm 个样本,每个样本 iii 有特征向量 x(i)\mathbf{x}^{(i)}x(i) 和真实值 y(i)y^{(i)}y(i),可写为矩阵形式:
特征矩阵(含偏置项):在这里插入图片描述
标签向量:
在这里插入图片描述
模型预测输出:
在这里插入图片描述
五、建模目标
我们的目标是使预测值 y^\hat{\mathbf{y}}y^ 尽可能接近真实值 y\mathbf{y}y
由于现实中存在误差,我们允许预测值与真实值有偏差,并通过定义“误差”的衡量函数来优化参数 θ\boldsymbol{\theta}θ

第二节:如何衡量误差

在第一节中,我们构建了线性回归模型 y^=θ⊤x\hat{y} = \boldsymbol{\theta}^\top \mathbf{x}y^=θx,现在需要衡量模型输出 y^\hat{y}y^ 与真实值 yyy 的误差,以便进一步优化参数 θ\boldsymbol{\theta}θ
一、误差的定义
对于单个样本 (x(i),y(i))(\mathbf{x}^{(i)}, y^{(i)})(x(i),y(i))
预测值:y^(i)=θ⊤x(i)\hat{y}^{(i)} = \boldsymbol{\theta}^\top \mathbf{x}^{(i)}y^(i)=θx(i)
误差项:e(i)=y^(i)−y(i)e^{(i)} = \hat{y}^{(i)} - y^{(i)}e(i)=y^(i)y(i)
二、平方误差/均方根误差(Mean Squared Error/MSE)
我们通常使用平方误差作为衡量指标(误差不能直接加总(可能正负抵消),所以引入平方误差):
单个样本误差平方:(y^(i)−y(i))2(\hat{y}^{(i)} - y^{(i)})^2(y^(i)y(i))2
所有样本的总误差(代价函数):
J(θ)=12m∑i=1m(y^(i)−y(i))2J(\boldsymbol{\theta}) = \frac{1}{2m} \sum_{i=1}^m \left( \hat{y}^{(i)} - y^{(i)} \right)^2J(θ)=2m1i=1m(y^(i)y(i))2
其中:
mmm:样本数量;
分母中的 12\frac{1}{2}21 是为了之后求导简化公式,在损失函数中为简化梯度表达式有。其实有时在做概念介绍时也可不写。
三、目标函数意义
J(θ)J(\boldsymbol{\theta})J(θ) 是我们希望最小化的目标函数(cost / loss function);
换句话说,我们要找到一组参数 θ\boldsymbol{\theta}θ,使预测值尽量接近真实值。

第三节:补充其他误差衡量标准

1.平均绝对误差(Mean Absolute Error, MAE)定义如下:
MAE=1m∑i=1m∣y^(i)−y(i)∣\text{MAE} = \frac{1}{m} \sum_{i=1}^{m} \left| \hat{y}^{(i)} - y^{(i)} \right|MAE=m1i=1m y^(i)y(i)

特点:
使用绝对值而不是平方,对异常值(outliers)鲁棒性更强;
单位与原始变量一致,直观易解释;
但不可导于 000 点,梯度优化不如 MSE 平滑。
2. 平均绝对百分比误差(Mean Absolute Percentage Error, MAPE)定义如下:
MAPE=100%m∑i=1m∣y^(i)−y(i)y(i)∣\text{MAPE} = \frac{100\%}{m} \sum_{i=1}^{m} \left| \frac{ \hat{y}^{(i)} - y^{(i)} }{ y^{(i)} } \right|MAPE=m100%i=1m y(i)y^(i)y(i)
特点:
表示平均每个预测值与真实值相差的“百分比”;
单位无关,适用于跨场景评估;
缺点:当 y(i)=0y^{(i)} = 0y(i)=0 时分母为 0,可能导致不稳定或无法计算。
3. R2R^2R2 决定系数(Coefficient of Determination)衡量模型相对于基准模型(如平均值预测)的改进程度:
R2=1−∑i=1m(y^(i)−y(i))2∑i=1m(y(i)−yˉ)2R^2 = 1 - \frac{ \sum_{i=1}^{m} ( \hat{y}^{(i)} - y^{(i)} )^2 }{ \sum_{i=1}^{m} ( y^{(i)} - \bar{y} )^2 }R2=1i=1m(y(i)yˉ)2i=1m(y^(i)y(i))2
其中 yˉ\bar{y}yˉ 为所有真实值的均值。
特点:
R2∈(−∞,1]R^2 \in (-\infty, 1]R2(,1]
越接近 1 表示模型解释能力越强;
R2<0R^2 < 0R2<0 表示模型效果甚至不如直接预测平均值;

第四节:线性回归的损失函数与目标建模

一、目标回顾
我们已定义了模型预测公式:
y^=θTx\hat{y} = \theta^T xy^=θTx
并选择 均方误差 MSE 作为损失函数:
L=1m∑i=1m(y^(i)−y(i))2\mathcal{L} = \frac{1}{m} \sum_{i=1}^{m} (\hat{y}^{(i)} - y^{(i)})^2L=m1i=1m(y^(i)y(i))2
二、两种求解方式
1.闭式解(Normal Equation)
适用于数据规模小、特征不多的情况,可以直接求出最优参数:
θ=(XTX)−1XTy\theta = (X^T X)^{-1} X^T yθ=(XTX)1XTy
缺点:矩阵求逆计算复杂度高,样本量大时不可行。这里的闭式解其实就是数学(矩阵理论)上解析解的形式,但很多工程问题是不会有这么顺滑的解析解,需要不断迭代求个近似解。
2. 梯度下降法(Gradient Descent)
适用于大规模样本或特征问题,是机器学习的主流求解方法。
三、梯度下降的通俗解释
可以类比为“从山顶出发寻找最低谷”:损失函数的值:对应“海拔高度”参数值 θ\thetaθ:对应你当前所在位置
梯度(导数):当前点上“最快下降的方向”
每一步我们都要:计算当前点的梯度;沿梯度的反方向走一小步。
四、更新公式推导(以 MSE 为例)
我们使用带有 12\frac{1}{2}21 的均方误差(MSE)作为损失函数(便于求导):
J(θ)=12m∑i=1m(y^(i)−y(i))2J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} \left( \hat{y}^{(i)} - y^{(i)} \right)^2J(θ)=2m1i=1m(y^(i)y(i))2
其中:
y^(i)=θ⊤x(i)\hat{y}^{(i)} = \theta^\top x^{(i)}y^(i)=θx(i) 是模型对第 iii 个样本的预测;
mmm 是样本总数;
x(i)x^{(i)}x(i) 是第 iii 个样本的特征列向量;

y(i)y^{(i)}y(i) 是真实标签。
θ\thetaθ 求导的目标
我们希望找到使损失最小的参数向量 θ\thetaθ,使用梯度下降更新参数。
为此,我们需要求损失函数对每个参数 θj\theta_jθj 的偏导:
∂J(θ)∂θj=1m∑i=1m(y^(i)−y(i))xj(i)\frac{\partial J(\theta)}{\partial \theta_j} = \frac{1}{m} \sum_{i=1}^{m} \left( \hat{y}^{(i)} - y^{(i)} \right) x_j^{(i)}θjJ(θ)=m1i=1m(y^(i)y(i))xj(i)
其中 xj(i)x_j^{(i)}xj(i) 表示第 iii 个样本的第 jjj 个特征。
参数更新公式:根据梯度下降法,每一次迭代中,我们按如下方式更新参数:
θj:=θj−α⋅∂J(θ)∂θj\theta_j := \theta_j - \alpha \cdot \frac{\partial J(\theta)}{\partial \theta_j}θj:=θjαθjJ(θ)
展开后写为:
θj:=θj−α⋅1m∑i=1m(y^(i)−y(i))xj(i)\theta_j := \theta_j - \alpha \cdot \frac{1}{m} \sum_{i=1}^{m} \left( \hat{y}^{(i)} - y^{(i)} \right) x_j^{(i)}θj:=θjαm1i=1m(y^(i)y(i))xj(i)
向量化表达: 如果使用向量化表达方式,更新规则可以写为:
θ:=θ−α⋅1mX⊤(Xθ−y)\theta := \theta - \alpha \cdot \frac{1}{m} X^\top (X\theta - y)θ:=θαm1X(y)
其中:
XXXm×nm \times nm×n 的特征矩阵;
yyym×1m \times 1m×1 的标签向量;
θ\thetaθn×1n \times 1n×1 的参数向量。
五、学习率(步长) α\alphaα 的作用
学习率 α\alphaα 是梯度下降中的一个重要超参数,决定了参数每次更新的步长大小。
在参数更新中:
θ:=θ−α⋅∇θJ(θ)\theta := \theta - \alpha \cdot \nabla_\theta J(\theta)θ:=θαθJ(θ)
如何选择学习率?

学习率大小 优点 缺点
大(如 1.0) 收敛快(步大) 可能跳过最优值、震荡、发散
小(如 0.0001) 收敛稳定(步小) 收敛慢,训练时间长
适中(如 0.01) 常见默认值 效果视具体问题而定

🔧 实践中通常使用 0.1、0.01、0.001 等试探设置,并结合调参技巧如学习率衰减(learning rate decay)或自适应优化器(如 Adam)。

第五节:最大似然估计与损失函数的关系

一、回顾目标:求解最优参数 θ\thetaθ
我们已经知道模型形式为:
y^(i)=θ⊤x(i)\hat{y}^{(i)} = \theta^\top x^{(i)}y^(i)=θx(i)
为了使预测值 y^(i)\hat{y}^{(i)}y^(i) 尽可能接近真实标签 y(i)y^{(i)}y(i),我们需要找到最优的参数 θ\thetaθ。但该怎么求呢?
二、误差服从高斯分布的假设
在很多实际问题中,我们通常假设预测误差服从正态(高斯)分布,即:
ϵ(i)=y(i)−y^(i)∼N(0,σ2)\epsilon^{(i)} = y^{(i)} - \hat{y}^{(i)} \sim \mathcal{N}(0, \sigma^2)ϵ(i)=y(i)y^(i)N(0,σ2)
也就是说,预测值与真实值之间的误差是服从均值为 000,方差为 σ2\sigma^2σ2 的正态分布。
三、高斯分布的概率密度函数
高斯分布的密度函数表达式为:
p(ϵ)=12πσ2exp⁡(−ϵ22σ2)p(\epsilon) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left( -\frac{\epsilon^2}{2\sigma^2} \right)p(ϵ)=2πσ2 1exp(2σ2ϵ2)
结合 ϵ(i)=y(i)−y^(i)=y(i)−θ⊤x(i)\epsilon^{(i)} = y^{(i)} - \hat{y}^{(i)} = y^{(i)} - \theta^\top x^{(i)}ϵ(i)=y(i)y^(i)=y(i)θx(i),代入后可得:
p(y(i)∣x(i);θ)=12πσ2exp⁡(−(y(i)−θ⊤x(i))22σ2)p\left( y^{(i)} \mid x^{(i)}; \theta \right) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left( -\frac{(y^{(i)} - \theta^\top x^{(i)})^2}{2\sigma^2} \right)p(y(i)x(i);θ)=2πσ2 1exp(2σ2(y(i)θx(i))2)
四、最大似然估计(Maximum Likelihood Estimation, MLE)
我们希望在所有样本中找到最优参数 θ\thetaθ,使得“当前数据的发生概率最大”。设 mmm 个样本的联合概率为:
L(θ)=∏i=1mp(y(i)∣x(i);θ)L(\theta) = \prod_{i=1}^{m} p\left( y^{(i)} \mid x^{(i)}; \theta \right)L(θ)=i=1mp(y(i)x(i);θ)
由于样本独立同分布(i.i.d.),联合概率等于每一项的乘积。
五、转为对数似然(Log-Likelihood)
因为乘法计算复杂,且对数函数是单调的,我们转化为对数似然函数:
log⁡L(θ)=∑i=1mlog⁡p(y(i)∣x(i);θ)\log L(\theta) = \sum_{i=1}^{m} \log p\left( y^{(i)} \mid x^{(i)}; \theta \right)logL(θ)=i=1mlogp(y(i)x(i);θ)
代入高斯密度函数:
log⁡L(θ)=−m2log⁡(2πσ2)−12σ2∑i=1m(y(i)−θ⊤x(i))2\log L(\theta) = -\frac{m}{2} \log(2\pi\sigma^2) - \frac{1}{2\sigma^2} \sum_{i=1}^{m} \left( y^{(i)} - \theta^\top x^{(i)} \right)^2logL(θ)=2mlog(2πσ2)2σ21i=1m(y(i)θx(i))2
六、最大化似然 ⇔ 最小化平方误差
由于第一个项与 θ\thetaθ 无关,我们只需最大化第二项,即最小化:
∑i=1m(y(i)−θ⊤x(i))2\sum_{i=1}^{m} \left( y^{(i)} - \theta^\top x^{(i)} \right)^2i=1m(y(i)θx(i))2
这就是最小二乘法(MSE)损失函数!
J(θ)=12m∑i=1m(y^(i)−y(i))2J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} \left( \hat{y}^{(i)} - y^{(i)} \right)^2J(θ)=2m1i=1m(y^(i)y(i))2

第六节:梯度下降的数学推导与图示理解

一、为何需要优化算法?
在线性回归中,我们希望找到一组参数 θ\thetaθ,使得模型输出 y^\hat{y}y^ 尽可能接近真实值 yyy。虽然可以通过求导直接解出 θ\thetaθ,但:
矩阵求逆不总是可行(不可逆或维度过大时);
实际的模型(特别是非线性模型)无法直接求解;
因此我们需要一种通用的优化思路 —— 梯度下降。
二、梯度下降的基本思想
目标是最小化损失函数 J(θ)J(\theta)J(θ)。假设当前参数为 θ\thetaθ,我们每次调整一小步,使 J(θ)J(\theta)J(θ) 减小:
在这里插入图片描述
其中:
∇θJ(θ)\nabla_\theta J(\theta)θJ(θ) 是损失函数对参数的梯度;
α\alphaα 是学习率(step size);
更新方向为负梯度方向(下山)。
三、图像类比:从山顶走向山谷
可以将损失函数看作一座“山”,梯度下降模拟了:
在某个位置计算当前梯度方向;
沿着负梯度方向走一小步(即损失下降最快的方向);
重新计算新位置的梯度;
重复以上步骤,直到收敛。
梯度是“上升最快方向”,所以我们反着走(下降最快)。
四、参数更新公式推导(以 MSE 为例)
我们需要求出损失函数对参数的梯度(偏导数),以确定“下山”的方向。
以第 jjj 个参数 θj\theta_jθj 为例,求导如下:
∂J(θ)∂θj=1m∑i=1m(hθ(x(i))−y(i))xj(i)\frac{\partial J(\theta)}{\partial \theta_j} = \frac{1}{m} \sum_{i=1}^m \left( h_\theta(x^{(i)}) - y^{(i)} \right) x_j^{(i)}θjJ(θ)=m1i=1m(hθ(x(i))y(i))xj(i)
对应的更新公式为:
θj:=θj−α⋅1m∑i=1m(hθ(x(i))−y(i))xj(i)\theta_j := \theta_j - \alpha \cdot \frac{1}{m} \sum_{i=1}^m \left( h_\theta(x^{(i)}) - y^{(i)} \right) x_j^{(i)}θj:=θjαm1i=1m(hθ(x(i))y(i))xj(i)
五、学习率(步长) α\alphaα 的作用
学习率 α\alphaα 控制每次迭代走多远。如果 α\alphaα 太大,容易错过最优解甚至发散;太小则收敛过慢。可根据实际情况调参。
六、整体更新规则(向量形式)
将所有参数统一更新,可写成向量形式:
θ:=θ−α∇θJ(θ)\theta := \theta - \alpha \nabla_\theta J(\theta)θ:=θαθJ(θ)
其中 ∇θJ(θ)\nabla_\theta J(\theta)θJ(θ) 是损失函数关于 θ\thetaθ 的梯度向量。
七、梯度下降流程总结
初始化 θ\thetaθ(通常为 0 或小随机数);
计算损失函数 J(θ)J(\theta)J(θ)
计算梯度 ∇θJ(θ)\nabla_\theta J(\theta)θJ(θ)
使用公式更新 θ\thetaθ
重复步骤 2~4,直到收敛(如变化很小或达到最大迭代次数)。

第七节:梯度下降的三种形式

一、Batch Gradient Descent(批量梯度下降)
定义: 每次迭代都使用全部训练样本进行梯度计算。
更新公式如下:
θj:=θj−α⋅1m∑i=1m(hθ(x(i))−y(i))xj(i)\theta_j := \theta_j - \alpha \cdot \frac{1}{m} \sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)}) x_j^{(i)}θj:=θjαm1i=1m(hθ(x(i))y(i))xj(i)
优点: 梯度方向准确,收敛稳定
缺点: 大数据集时计算慢,每次更新成本高(需遍历全部样本)
二、Stochastic Gradient Descent(SGD,随机梯度下降)
定义: 每次迭代只用一个样本来更新参数。
更新公式如下:
θj:=θj−α⋅(hθ(x(i))−y(i))xj(i)\theta_j := \theta_j - \alpha \cdot (h_\theta(x^{(i)}) - y^{(i)}) x_j^{(i)}θj:=θjα(hθ(x(i))y(i))xj(i)
其中 iii 是从 1,2,...,m{1, 2, ..., m}1,2,...,m 中随机采样的一个样本。
优点:
每次计算快
能更快开始下降
可以跳出局部最小值
缺点:
收敛不稳定,曲线震荡较大
容易受噪声影响
三、Mini-Batch Gradient Descent(小批量梯度下降)
定义: 每次迭代使用 bbb 个样本组成的小批量进行更新(1<b<m1 < b < m1<b<m
更新公式如下:
θj:=θj−α⋅1b∑i∈Batch(hθ(x(i))−y(i))xj(i)\theta_j := \theta_j - \alpha \cdot \frac{1}{b} \sum_{i \in \text{Batch}} (h_\theta(x^{(i)}) - y^{(i)}) x_j^{(i)}θj:=θjαb1iBatch(hθ(x(i))y(i))xj(i)
优点:
综合了 BGD 和 SGD 的优点
利于并行计算,效率更高
收敛过程较为平稳
四、常见 Batch Size 设置
在实践中,Mini-Batch 的大小通常设为 2 的幂,如:
{16, 32, 64, 128, 256, 512}
选择大小需根据以下因素权衡:
内存/显存大小
训练时间
收敛稳定性

第八节:线性回归的梯度推导与更新总结

一、线性回归预测函数回顾
我们使用线性回归模型进行预测:
y^(i)=hθ(x(i))=θ⊤x(i)=∑j=0nθjxj(i)\hat{y}^{(i)} = h_\theta(x^{(i)}) = \theta^\top x^{(i)} = \sum_{j=0}^n \theta_j x_j^{(i)}y^(i)=hθ(x(i))=θx(i)=j=0nθjxj(i)
其中:
θ∈Rn+1\theta \in \mathbb{R}^{n+1}θRn+1:参数向量
x(i)∈Rn+1x^{(i)} \in \mathbb{R}^{n+1}x(i)Rn+1:第 iii 个样本(含偏置项 x0=1x_0 = 1x0=1
hθ(x(i))h_\theta(x^{(i)})hθ(x(i)):模型预测值
二、损失函数(以 MSE 为例)
我们定义均方误差(MSE)作为目标函数:
J(θ)=12m∑i=1m(hθ(x(i))−y(i))2J(\theta) = \frac{1}{2m} \sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)})^2J(θ)=2m1i=1m(hθ(x(i))y(i))2
三、损失函数对参数的梯度(偏导)
我们对每个参数 θj\theta_jθj 求偏导:
∂J(θ)∂θj=1m∑i=1m(hθ(x(i))−y(i))⋅xj(i)\frac{\partial J(\theta)}{\partial \theta_j} = \frac{1}{m} \sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)}) \cdot x_j^{(i)}θjJ(θ)=m1i=1m(hθ(x(i))y(i))xj(i)
注意:这里只对 θj\theta_jθj 相关项求导,其他 θk\theta_kθk 均视为常数项。
四、参数更新公式(梯度下降)
使用梯度下降更新参数:
θj:=θj−α⋅1m∑i=1m(hθ(x(i))−y(i))⋅xj(i)\theta_j := \theta_j - \alpha \cdot \frac{1}{m} \sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)}) \cdot x_j^{(i)}θj:=θjαm1i=1m(hθ(x(i))y(i))xj(i)
其中:
α\alphaα 为学习率(learning rate)
方向为梯度的负方向(即下降)
五、向量化形式(矩阵表示)
将所有样本预测与更新写为矩阵形式:
y^=Xθ\hat{y} = X \thetay^=
损失函数为:
J(θ)=12m(Xθ−y)⊤(Xθ−y)J(\theta) = \frac{1}{2m} (X \theta - y)^\top (X \theta - y)J(θ)=2m1(y)(y)
其梯度为:
∇θJ(θ)=1mX⊤(Xθ−y)\nabla_\theta J(\theta) = \frac{1}{m} X^\top (X \theta - y)θJ(θ)=m1X(y)
更新公式为:
θ:=θ−α⋅∇θJ(θ)\theta := \theta - \alpha \cdot \nabla_\theta J(\theta)θ:=θαθJ(θ)
六、收敛过程说明
初始随机选择 θ\thetaθ
每次迭代更新 θ\thetaθ
若损失 J(θ)J(\theta)J(θ) 收敛,或达到最大迭代次数,则停止

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐