跳到主要内容

岭回归

一、直观理解:给系数加一根“弹簧”,防止共线时疯涨​

普通最小二乘(OLS)最小化 ∥y−Xβ∥22\|y-X\beta\|_2^2。当自变量高度共线或 pp 接近 nn 时,XTXX^\mathsf{T}X 接近奇异,系数会暴涨且符号不稳。

岭回归(Ridge)在目标里加入 L2 惩罚:

min⁡β ∥y−Xβ∥22+λ∥β∥22\min_\beta\ \|y-X\beta\|_2^2+\lambda\|\beta\|_2^2

λ>0\lambda>0 像一根拉住系数的弹簧,阻止它们飞到极大。代价是引入一点偏差,换取方差大幅下降,从而往往降低预测均方误差。

几何上:岭回归把可行系数限制在一个圆盘附近,最优解是 OLS 无约束解向原点的连续收缩。

二、适用场景与优缺点​

类型说明
适用场景多重共线;预测导向;特征多、样本有限;需要稳定的系数路径;作为 PCR/PLS 的对照。
核心优点闭式解清晰;数值稳定;系数连续收缩,路径光滑;对共线很有效。
局限与缺点不自动把系数压成精确 0(不做变量选择);λ\lambda 需选择;解释仍受收缩影响;量纲敏感,必须标准化。

若既要共线稳定又要稀疏选变量,考虑弹性网络(岭 + Lasso)。

三、核心原理​

设计矩阵含截距时,通常不惩罚截距,并对 XX 列标准化、yy 中心化后估计:

β^ridge=(XTX+λI)−1XTy\hat\beta_{\mathrm{ridge}}=(X^\mathsf{T}X+\lambda I)^{-1}X^\mathsf{T}y

与 OLS 相比,特征值 λj\lambda_j 被换成 λj+λ\lambda_j+\lambda,病态方向被托底。

偏差-方差:

  • λ=0\lambda=0:回到 OLS;
  • λ→∞\lambda\to\infty:系数→0(仅保留均值)。

λ\lambda 常用交叉验证(CV)按预测误差选;也可看岭迹:系数随 λ\lambda 变化是否稳定。

注意:岭回归系数是收缩后的,不能直接与未惩罚 OLS 的 t 检验同样解释;推断更复杂,赛题中多强调预测与稳定性。

四、关键决策​

1. 标准化​

必须。否则惩罚会不公平地对待大尺度变量。

2. λ\lambda 怎么选​

K 折 CV 最小 MSE;1-SE 规则取更强惩罚;展示岭迹证明结论不依赖单点 λ\lambda。

3. 与主成分回归​

都应对共线。PCR 丢弃小特征值方向;岭是连续缩小这些方向,往往更平滑。

4. 解释还是预测​

解释优先且共线可合并变量时,先做专业降维;纯预测且特征多时岭/弹性网更直接。

五、MATLAB 示例​

rng(13);
n = 80; p = 10;
Xraw = randn(n, p);
% 制造共线
Xraw(:,2) = Xraw(:,1) + 0.05*randn(n,1);
Xraw(:,3) = Xraw(:,1) - 0.05*randn(n,1);
b_true = [2; 0; 0; 1.5; zeros(p-4,1)];
y = Xraw*b_true + 0.7*randn(n,1);

% 标准化
mu = mean(Xraw); sg = std(Xraw);
X = (Xraw - mu) ./ sg;
yc = y - mean(y);

% 岭路径
lambdas = logspace(-3, 2, 40);
B = zeros(p, numel(lambdas));
for i = 1:numel(lambdas)
B(:,i) = (X'*X + lambdas(i)*eye(p)) \ (X'*yc);
end

figure;
semilogx(lambdas, B', "LineWidth", 1.2);
xlabel("\lambda"); ylabel("标准化系数"); title("岭迹"); grid on;

% 用交叉验证选 lambda(手写 K 折)
K = 5;
idx = crossvalind("Kfold", n, K);
cv_mse = zeros(size(lambdas));
for i = 1:numel(lambdas)
mse_k = zeros(K,1);
for k = 1:K
tr = idx ~= k; te = idx == k;
beta = (X(tr,:)'*X(tr,:) + lambdas(i)*eye(p)) \ (X(tr,:)'*yc(tr));
yhat = X(te,:)*beta;
mse_k(k) = mean((yc(te) - yhat).^2);
end
cv_mse(i) = mean(mse_k);
end
[~, i_best] = min(cv_mse);
lambda_cv = lambdas(i_best);
beta_cv = (X'*X + lambda_cv*eye(p)) \ (X'*yc);
fprintf("CV 最优 lambda=%.4g\n", lambda_cv);
disp(array2table(beta_cv, "RowNames", compose("x%d",1:p), "VariableNames", "beta_ridge"));

% 与 OLS 对照
beta_ols = X\yc;
fprintf("OLS 与 Ridge 的 L2 范数: %.3f vs %.3f\n", norm(beta_ols), norm(beta_cv));

% Statistics Toolbox 可用 ridge 函数
b_ridge = ridge(y, Xraw, lambda_cv, 0); % 按文档注意缩放参数

六、如何解释结果​

  1. 为何需要岭(VIF、条件数、p/n);
  2. 是否标准化、是否惩罚截距;
  3. λ\lambda 选择方法与 CV 曲线;
  4. 岭迹稳定性;
  5. 预测指标(RMSE、RCV2R^2_{CV})相对 OLS 的变化;
  6. 系数解释保持克制,强调收缩后的相对大小。

七、常见误区​

1. 不标准化就岭回归​

惩罚被量纲劫持。

2. 把岭系数当无偏因果效应​

有偏是机制的一部分。

3. 只给一个 λ\lambda 不展示路径​

审稿人会怀疑你调参碰运气。

4. 本该稀疏选择却用岭​

岭保留全部变量;要选变量用 Lasso/弹性网。

八、小结​

岭回归的核心是:

在最小二乘上加 ∥β∥22\|\beta\|_2^2 惩罚,用一点偏差换系数稳定与更好的预测。

它是共线与高维预测的标准工具。用好岭回归的关键是标准化、交叉验证选 λ\lambda,并用岭迹证明结论稳健。