Lasso 回归
一、直观理解:既能压系数,又能把没用的变量“关成零”
Lasso(Least Absolute Shrinkage and Selection Operator)用 L1 惩罚:
与岭的圆形约束不同,L1 约束是菱形,最优点容易落在坐标轴上,于是某些 精确为 0。
因此 Lasso 同时做两件事:
- 收缩系数,缓解过拟合;
- 自动变量选择,产生稀疏模型。
直观比喻:岭回归是给所有变量一起“减肥”;Lasso 会直接让一部分变量“出局”,留下更短的解释清单——这在数学建模论文里非常有用。
二、适用场景与优缺点
| 类型 | 说明 |
|---|---|
| 适用场景 | 候选变量多、需要稀疏解释;特征筛选 + 预测;p 较大甚至 p>n;与逐步回归对照的现代方法。 |
| 核心优点 | 选变量 + 正则一体;路径算法高效;结果可解释为“入选变量集”;交叉验证选 标准。 |
| 局限与缺点 | 一组强相关变量中往往只留一个,可能不稳定;系数有偏,推断需选择性推断或样本分割; 影响入选集合;非线性/强交互需人工构造特征。 |
相关变量成群时,弹性网络(L1+L2)通常比纯 Lasso 更稳。
三、核心原理
几何与软阈值:正交设计下,Lasso 对 OLS 系数做 soft-thresholding:
一般设计用坐标下降或 LARS 求整条正则化路径 。
选择 :
- CV 最小 MSE 的 ;
- 更稀疏的 (1 倍标准误规则),常更适合解释。
标准化:与岭相同,必须对特征标准化(哑变量是否标准化有学派差异,需统一并说明)。
与子集选择关系:Lasso 是凸放松,计算比最优子集可行得多,但不保证选出“真实”稀疏支撑,尤其在相关设计下。
四、关键决策
1. 还是 ?
预测竞赛可偏 ;写解释性论文常偏 或稳定性选择。
2. 稳定性
对 bootstrap 重采样多次跑 Lasso,看变量入选频率;只报告高频变量更诚实。
3. 推断
不能直接把入选变量再丢进无惩罚 OLS 却假装没有选择步骤(除非样本分割:一半选变量,一半估系数与 SE)。
4. 哑变量组
一组哑变量应整组进出时,用 group Lasso;普通 Lasso 可能只留部分水平。
五、MATLAB 示例
rng(14);
n = 100; p = 30;
X = randn(n,p);
% 相关块
X(:,2) = 0.9*X(:,1) + 0.1*randn(n,1);
b_true = zeros(p,1); b_true([1 5 10]) = [2; -1.5; 1.2];
y = X*b_true + 0.8*randn(n,1);
% 标准化
Xz = zscore(X);
yz = y - mean(y);
% 使用 lasso 函数(Statistics and ML Toolbox)
[B, FitInfo] = lasso(Xz, yz, "CV", 5);
lambda_min = FitInfo.LambdaMinMSE;
lambda_1se = FitInfo.Lambda1SE;
b_min = B(:, FitInfo.IndexMinMSE);
b_1se = B(:, FitInfo.Index1SE);
fprintf("lambda_min=%.4g, 非零个数=%d\n", lambda_min, nnz(b_min));
fprintf("lambda_1se=%.4g, 非零个数=%d\n", lambda_1se, nnz(b_1se));
figure;
lassoPlot(B, FitInfo, "PlotType", "CV");
title("Lasso 交叉验证");
figure;
lassoPlot(B, FitInfo, "PlotType", "Lambda", "XScale", "log");
title("Lasso 系数路径");
% 入选变量
idx = find(abs(b_1se) > 0);
disp("lambda_1se 入选变量序号:"); disp(idx');
disp(b_1se(idx));
% 稳定性选择(简化 bootstrap)
Bstrap = 50;
freq = zeros(p,1);
for b = 1:Bstrap
id = randi(n, n, 1);
Bb = lasso(Xz(id,:), yz(id), "Lambda", lambda_1se);
freq = freq + (abs(Bb) > 0);
end
freq = freq / Bstrap;
disp(table((1:p)', freq, 'VariableNames', {'j','select_freq'}));
六、如何解释结果
- 特征预处理(标准化、编码);
- CV 曲线与所选 规则;
- 入选变量列表及系数符号;
- 稳定性频率;
- 样本外预测表现对照 OLS/岭;
- 说明系数有偏、未做因果识别。
七、常见误区
1. 把 Lasso 入选当作因果发现
未控制混杂与选择偏差。
2. 相关变量组中过度解读“没入选的变量无用”
可能只是被同类变量代表。
3. 选完变量后用全样本 OLS 的 p 值当正式推断
忽略选择不确定性。
4. 不固定随机种子导致路径不可复现
CV 折划分要可重复。
八、小结
Lasso 的核心是:
L1 惩罚实现系数收缩与稀疏变量选择。
它适合高维与解释清单压缩,但要用交叉验证与稳定性评估守住可靠性,并克制地把结果解释为“关联筛选”而非“因果名单”。共线成组时优先考虑弹性网络或组 Lasso。