Linear Regression
线性回归通过最小二乘法拟合特征的加权和,以预测数值。内容涵盖其工作原理、假设、变体和 Python 代码。
线性回归是一种监督学习方法,它将输入特征的加权和加上一个常数,用于预测连续值,例如价格、温度或下个月的需求。只有一个特征时,它拟合一条直线 ŷ = w·x + b;有多个特征时,则拟合一个平面或超平面 ŷ = w₁x₁ + w₂x₂ + … + wₙxₙ + b。Adrien-Marie Legendre 于 1805 年发表了用于拟合线性回归的最小二乘法,Carl Friedrich Gauss 则于 1809 年发表了自己的论述。它仍然是数值预测建模中常用的首选模型,因为训练只需几毫秒、对数据量要求不高,而且每个权重都能说明特征每增加一个单位会使预测值改变多少。
线性回归的工作原理#
训练过程会选择权重和截距,使预测值尽可能接近训练数据中的真实目标值。普通最小二乘法通过残差平方和(即目标值与预测值之间的差)衡量接近程度,这等同于最小化均方误差(MSE),也就是回归的标准损失函数。平方误差会使损失曲线形成一个只有单一最小值的平滑碗状曲面,因此最佳权重存在闭式解,即正规方程 w = (XᵀX)⁻¹Xᵀy;库会使用 QR 或 SVD 等稳定的矩阵分解来计算,而不是显式求逆。对于规模过大而无法使用该方法的数据集,梯度下降或随机梯度下降可以通过迭代得到相同的权重;当特征经过标准化并缩放到相近范围时,收敛速度最快。
其他特征保持不变时,每个权重表示其对应特征增加一个单位会使预测值改变多少,因此模型易于审计。scikit-learn LinearRegression 估算器使用普通最小二乘法进行拟合;下面的示例会根据已知系数生成房价数据,并检查拟合结果与这些系数的接近程度:
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
from sklearn.model_selection import train_test_split
# 500 synthetic homes: price = $50,000 + $150 per sq ft - $2,000 per year of age + noise
rng = np.random.default_rng(0)
X = np.column_stack([rng.uniform(800, 3000, 500), rng.uniform(0, 50, 500)])
y = 50_000 + 150 * X[:, 0] - 2_000 * X[:, 1] + rng.normal(0, 20_000, 500)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
# Fit by ordinary least squares
model = LinearRegression()
model.fit(X_train, y_train)
print(f"Per sq ft: {model.coef_[0]:.1f}, per year: {model.coef_[1]:.0f}, intercept: {model.intercept_:.0f}")
print(f"Test R^2: {r2_score(y_test, model.predict(X_test)):.3f}")拟合结果得出的每平方英尺价格为 147.7 美元,真实值为 150 美元;房龄每增加一年,价格下降 1,992 美元,真实值为下降 2,000 美元;模型还能解释留出房价中 96.2% 的方差(R² = 0.962)。R² 表示模型能够解释的目标方差比例,而均方根误差(RMSE)则以目标值本身的单位报告典型误差。
假设与诊断#
线性回归假设目标值的平均值是输入的加权和、误差相互独立,并且误差的离散程度在预测值范围内大致保持恒定;权重的置信区间和 p 值也假设误差大致服从正态分布。输入可以是原始特征的任意固定变换,因此通过特征工程添加特征的平方项、对数或乘积,仍然得到线性回归,只不过这种线性回归可以拟合曲线。将残差对预测值作图是标准检查方法:弯曲的形态说明缺少非线性项,扇形则表示误差随预测值增大,这通常可以通过对目标值进行对数变换来解决。平方误差还会让少数异常值将拟合结果拉向自身,而 Huber 损失等稳健损失可以降低异常值的影响。
当特征之间高度相关时,数据中的微小变化就会让它们的权重大幅波动。岭回归会对权重平方加上惩罚项,使权重收缩;套索回归会对权重绝对值加上惩罚项,使部分权重恰好变为零,从而筛选特征;弹性网络则结合了这两种方法。这些形式的正则化接受少许偏差,以换取更低的方差,这就是偏差-方差权衡;当特征数相对于样本数较多时,它们还能限制过拟合。
深度学习中的线性回归#
用于预测数值的神经网络通常以线性层作为输出层,因此最后一步是在前面各层学到的特征上进行线性回归;而使用 MSE 训练且没有隐藏层的网络,恰好就是线性回归。目标检测模型会用这种方式预测边界框坐标。在YOLO26中,检测头的每个边界框分支都以一个 1×1 卷积层结束,该层将每个网格位置的特征线性映射为从该位置到边界框边缘的四个距离;训练时,模型通过 L1 损失惩罚这些距离,同时使用 CIoU 损失计算边界框重叠度。
应用场景#
- 预测:零售商和公用事业公司会根据价格、促销、温度和日历指标回归销售额或电力负荷;拟合的趋势线通常是更复杂预测模型的常见基线。
- 定价与估值:享乐定价模型会根据房屋面积、房龄和地段回归房价,每个权重表示该属性每增加一个单位对应的市场价值。
- 效应估计:经济学家和健康研究人员会根据一个关注因素及控制变量回归某项结果(例如工资或血压),以估计在其他因素保持不变时,该结果会如何随关注因素变化。
- 校准曲线:实验室会根据参考样本的已知浓度回归仪器读数,然后对拟合直线求逆,将新样本的读数转换为浓度。










