普通最小二乘与正则化
给定设计矩阵 、目标向量 和系数向量 ,普通最小二乘法(OLS)旨在求解:
通过伪逆可以得到最小二乘解:。然而,当 的列接近线性相关时,数据的微小扰动可能导致系数发生剧烈变化。此时,虽然整体预测误差可能仍在可接受范围内,但单个系数的估计值会变得极不稳定。
从残差到解
有 行观测、 列系数,,。若拟合截距,就加入一列全为 1 的特征。对于直线 ,残差 是沿目标轴的竖直差值,单位与目标相同,并非点到直线的最短距离。在未缩放的笛卡尔坐标中,垂直于直线的距离是 ;最小化这种距离允许 方向也发生移动,解决的是另一个问题。
改用 不会改变 OLS 的最优解,且有
Hessian 为半正定矩阵,因此梯度为零处就是全局最小值。令梯度为零,得到正规方程:
当 (因而 )时,解唯一,等于 。否则,给系数加上 零空间中的任意向量,都不改变拟合值,系数便不唯一。Moore–Penrose 伪逆选择欧氏范数最小的系数向量;训练数据上的拟合值仍然唯一。例如,两列完全相同时,只能确定对应系数之和。若新输入不再满足这种列关系,不同解的预测就可能不同。
实际求解宜用 QR 或 SVD 最小二乘求解器,不要显式求逆;对于列满秩的 ,构造 会使谱条件数变为原来的平方。scikit-learn 线性模型指南介绍了 OLS 及其 SVD 求解方法。
手算三个观测
取 。截距列与 列线性无关。由 、,
预测值为 ,残差为 ,残差平方和为 。 和 都成立,可用来核对正规方程。训练均值基线恒预测 ,残差平方和为 。这里只比较了训练误差,尚不能说明泛化能力。
from math import isclose
from statistics import mean
x, y = [0, 1, 2], [1, 2, 2]
xbar, ybar = mean(x), mean(y)
sxx = sum((v - xbar) ** 2 for v in x)
if sxx == 0:
raise ValueError("A constant x cannot identify slope and intercept separately")
a = sum((u - xbar) * (v - ybar) for u, v in zip(x, y)) / sxx
b = ybar - a * xbar
r = [v - (b + a * u) for u, v in zip(x, y)]
assert isclose(a, 0.5) and isclose(b, 7 / 6)
assert isclose(sum(v * v for v in r), 1 / 6)
assert isclose(sum(r), 0, abs_tol=1e-12)
assert isclose(sum(u * v for u, v in zip(x, r)), 0, abs_tol=1e-12)
拟合与统计推断
计算最小值不需要高斯假设。进行统计分析时,statsmodels 回归文档明确区分了误差协方差模型;选择不确定性公式需要这层额外假设。若条件均值模型 正确,,且 列满秩,则 OLS 在给定 时无偏。若进一步有 ,则
在这些假设下,若 ,残差平方和除以 可估计 。再加上条件高斯误差假设,才可使用通常的有限样本精确 t/F 推断。异方差或相关误差需要相应的不确定性估计方法;稳健标准误不能修复错误的条件均值模型或混杂。均值响应的区间也不同于新观测的预测区间,后者还要包含观测噪声。
大残差会主导平方误差;高杠杆观测(特征取值异常的点)也可能显著改变拟合直线。解释系数之前,应检查残差随拟合值和时间的变化,并在留出数据上与基线比较。
带惩罚的目标函数
以下取 、。带惩罚公式中的 使用训练数据的均值进行中心化, 只包含斜率;未受惩罚的截距由 恢复。系数惩罚依赖单位,因此特征缩放也应在训练折内完成。归一化属于定义的一部分:scikit-learn Ridge 使用 ,所以本页 Ridge 公式对应 。其 Lasso 和 Elastic Net 则对应 ,l1_ratio 对应 。在相同 下,Elastic Net 公式取 时,岭惩罚强度是下方 Ridge 公式的一半。
岭回归 (Ridge)
岭回归通过 惩罚项收缩那些高度相关或识别度较低的系数。它通常不会将系数完全置零,而是让所有系数保持非零状态,从而提升数值稳定性。
Lasso
惩罚项具有将系数精确压缩至零的特性,从而实现特征选择。需要注意的是,这种稀疏性是拟合目标函数的数学性质,并不直接证明被选中的变量具有唯一的重要性或因果关系。在特征高度相关的场景下,Lasso 最终选中哪一个特征往往是不确定的。
弹性网络 (Elastic Net)
弹性网络结合了稀疏性与岭回归式的稳定作用,在预测变量形成相关组时常有用,但不保证整组选择或整组剔除。
实践准则
- 数据预处理隔离:仅在训练集上拟合缩放参数和基函数变换;将记录好的变换参数应用于验证集和测试集,防止数据泄露。
- 截距处理:除非模型定义明确要求,否则不要对截距项施加惩罚。
- 超参数选择:在训练流程内部,通过验证集或交叉验证来确定 和 的最优值。
- 评估维度:不要仅关注训练损失。应综合比较预测误差、系数稳定性以及模型部署的简洁性。
- 损失函数选择:如果平方误差无法准确反映业务目标或错误成本(例如存在大量离群点),应考虑使用稳健损失函数或分位数回归目标。
- 预测与推断分离:预测建模与统计推断是两回事。进行不确定性估计时,必须对数据生成过程做出明确的假设。
多项式特征和交互特征可以将输入关系转化为非线性,同时保持拟合系数在形式上的线性。但需注意,模型依然会继承所选基函数带来的外推风险和过拟合风险。
关于具体的求解器实现和估计器 API,请参考 scikit-learn 线性模型指南。