进阶方法

Lasso回归(套索回归)分析

案例数据

300 辆二手车 × 16 列。15 个候选自变量混合"真有效"特征(车龄/公里数/品牌等级/动力类型/整车评级/排量/排放标准)与"看似相关实则无关"的噪声特征(车身颜色/座椅材质/原车主性别/车牌区域/雨刮评分/香水气味/贴膜深度/备胎型号),因变量为成交价格(万元)。专为演示 Lasso 的 L1 稀疏化能力设计:在多余候选特征里把没贡献的一刀切到精确 0,实现自动变量筛选。

文件名lasso.xlsx
样本量300 行
变量数16 列(15 个候选特征 + 1 个因变量)
数据用途二手车价格预测:演示 Lasso 通过 L1 惩罚把噪声变量系数压成精确 0,自动完成变量选择。
变量说明强预测组:车龄 1-12 年、公里数 0.6-15 万公里、品牌等级 1-5、排量 1.0-3.9 L、动力类型 1-3(燃油/混动/纯电)、整车评级 40-96 分、排放标准 4-6(国IV/V/VI);噪声组:车身颜色 1-8、座椅材质 1-3、原车主性别 0-1、车牌区域 1-31、雨刮评分 1-5、香水气味 1-6、贴膜深度 1-10、备胎型号 1-4。因变量:价格 16.6-57.8 万元。

完整案例

1. 背景

真实业务中常面对"候选变量远多于真有效变量"的局面:分析师手里有几十个看似相关的字段,但其中多半与因变量并无可解释的因果路径。直接拿 OLS 跑一遍会发现 —— 即便噪声变量的系数从统计上不显著,它们仍会得到非零估计值,没有任何变量被"自动剔除",模型既不简洁也容易过拟合。岭回归(L2)同样救不了这一点:L2 惩罚收缩所有系数但永远不会精确到 0。Lasso(Least Absolute Shrinkage and Selection Operator)在目标函数里使用 L1 惩罚 λ‖β‖₁,由于 L1 范数在 0 处不可导且呈"菱形"约束域,最优解几乎必然落在某些坐标轴上 —— 这意味着部分系数会被压缩为精确 0,从而完成自动变量筛选。本案例用 300 辆二手车演示:15 个候选特征中只有 7 个真实驱动价格,Lasso 在 α* 一组合理取值下能把噪声变量准确归零,得到既稀疏又稳健的最终模型。

2. 理论与公式

Lasso 在 OLS 残差平方和上叠加 L1 惩罚,惩罚强度由调节参数 α(或写作 λ)控制;L1 范数的几何性质决定了它能让系数精确为 0

目标函数

第二项 α‖β‖₁ 即 L1 惩罚,α 越大稀疏度越高。

软阈值算子(坐标下降)

当 |zj|≤α 时 β̂j=0,即"小于阈值即剔除"。

与岭回归对比

L1 菱形约束 → 解在轴上 → 稀疏;L2 圆形约束 → 解远离轴 → 收缩但不为 0。

3. 数据结构

每行 1 辆车,15 个候选特征按"是否真正驱动价格"分为强预测组与噪声组,外加 1 个因变量:

组别变量名类型说明
强预测组(7 个,真实驱动价格)车龄连续 1-12 年距出厂年数,强负向
公里数连续 0.6-15 万公里累计行驶里程,与车龄轻度共线
品牌等级序数 1-5品牌定位(1 经济/5 豪华),强正向
排量连续 1.0-3.9 L发动机排量,与品牌等级相关
动力类型名义 1-31 燃油 / 2 混动 / 3 纯电(混动+电动溢价)
整车评级连续 40-96 分车况综合评分,强正向
排放标准序数 4-6国 IV / V / VI,正向
噪声组(8 个,与价格无因果联系)车身颜色名义 1-88 种颜色编码
座椅材质名义 1-3布 / 混搭 / 真皮
原车主性别名义 0-1原车主性别哑变量
车牌区域名义 1-31登记省份代码
雨刮评分连续 1-5雨刮品牌主观评分
香水气味名义 1-6车载香水种类
贴膜深度连续 1-10车窗贴膜遮光度
备胎型号名义 1-4备胎规格代码
因变量 Y价格连续 16.6-57.8 万元成交总价

这是 Lasso 的典型适用场景 —— 候选变量多、真正有效的比例不到一半、噪声特征看起来都能"凑个相关性"。

4. 操作步骤

  1. 登录 SPSSzero,进入 工作台 → 上传 lasso.xlsx
  2. 左侧方法栏 → 进阶方法 → 点击 Lasso 回归
  3. 价格 拖入 因变量 Y
  4. 把 15 个候选特征全部拖入 自变量 X(系统自动 z-score 标准化 —— 这是 Lasso 必做的预处理)
  5. 勾选 α 路径:在 α 序列 {0.001, 0.01, α*, 0.30, 1.00, 3.00} 上画系数轨迹与非零计数
  6. 勾选 交叉验证选 α(默认 10-fold CV),系统给出两套候选:α*(min CV) 最小化预测误差,α*(1se) 在误差容忍内取最稀疏解
  7. 勾选 OLS 对照,用于和 Lasso 结果做系数对比,直观看出"哪些变量被压成 0"
  8. 点击 开始分析,依次得到:OLS vs Lasso 系数对比表、α 路径表、最优 α 下的最终保留变量表

5. 结果表格与结果阅读

结果区按"先看 OLS 留全部、再走 α 路径、最后定最稀疏解"输出 3 张表:

表1 OLS vs Lasso 系数对比(标准化设计阵,N=300)
变量真实属性OLS β*OLS SEOLS pLasso β* (α*=0.0918)是否保留
车龄强预测−3.1800.415<0.001−3.218
公里数强预测−1.5790.409<0.001−1.462
品牌等级强预测4.1940.242<0.0014.118
排量弱预测0.1650.2420.4970.101
动力类型强预测1.2180.160<0.0011.127
整车评级强预测2.4050.168<0.0012.323
排放标准中预测0.5530.161<0.0010.438
车身颜色噪声0.3000.1600.0620.193
座椅材质噪声−0.1890.1620.246−0.087
原车主性别噪声−0.1140.1610.478−0.028
车牌区域噪声0.0270.1610.8690.000
雨刮评分噪声0.0290.1620.8590.000
香水气味噪声0.1140.1600.4790.026
贴膜深度噪声−0.1830.1660.270−0.097
备胎型号噪声0.0010.1620.9940.000
N=300;α*=0.0918 为 LassoCV 10-fold 在最小化 CV-MSE 准则下选出的最优值

关键观察:①OLS 给所有 15 个变量都估了非零系数,即便对 p≈0.99 的"备胎型号"也估出 0.001 —— OLS 从不主动剔除变量;②Lasso 在 α*=0.0918 下直接把 3 个 OLS p>0.85 的极端噪声(车牌区域 / 雨刮评分 / 备胎型号)压成精确 0;③仍有 5 个噪声变量(车身颜色 / 座椅材质 / 原车主性别 / 香水气味 / 贴膜深度)逃过这一刀 —— 这暗示 α* 选小了,需要看 α 路径并考虑 1se 规则。

表2 α 路径:不同 α 下的非零变量数 / R² / CV-MSE
α非零系数R²(训练)10-fold CV-MSE说明
0.001150.87757.910α≈0,几乎等同 OLS,所有变量都留
0.010140.87757.895轻微剔除,1 个变量被归 0
0.0918 (α*min CV)120.87597.784最小化 CV-MSE 的 α,剔除 3 个明显噪声
0.4227 (α*1se)60.85828.5251-SE 规则下的最稀疏解,仅留 6 个变量
1.00050.804011.820惩罚过强,开始损失真实结构
3.00020.460933.233过度收缩,R² 崩塌
α=0 为 OLS;α 越大稀疏度越高;α* 由 LassoCV 10-fold 选出

路径观察:①α 从 0 → 0.09 期间 R² 仅下降 0.0016,但非零变量从 15 → 12 —— 几乎免费地剔掉了 3 个最离谱的噪声;②α 从 0.09 → 0.42 时 R² 损失 0.0177,但非零变量从 12 → 6 —— 用 1.8 个百分点的拟合换 6 个变量的稀疏化非常划算;③α ≥ 1 时 CV-MSE 大幅恶化,说明开始误伤真实信号;④1-SE 规则(α*1se)选 α=0.4227 —— 在最小 CV-MSE 一个标准误以内最稀疏的解,是统计学界推荐的稳健报告口径

表3 最优 α*1se=0.4227 下的最终保留变量(按业务影响力排序)
排序变量Lasso β*(标准化)原始尺度 B方向业务解读
1品牌等级3.7863.042品牌每升 1 档,价格 +3.0 万元 —— 第一影响因子
2车龄−3.171−0.994每多 1 年,价格 −1.0 万元 —— 强负向
3整车评级2.0340.155评级每多 10 分,价格 +1.5 万元 —— 车况溢价
4公里数−1.218−0.397每多 1 万公里,价格 −0.4 万元 —— 损耗折扣
5动力类型0.7820.998混动 / 纯电相对燃油有 +1.0~2.0 万元溢价
6排放标准0.0400.054勉强保留,业务影响最小
9 个被剔除(Lasso β* = 0):排量 / 车身颜色 / 座椅材质 / 原车主性别 / 车牌区域 / 雨刮评分 / 香水气味 / 贴膜深度 / 备胎型号
截距23.47原始尺度截距(万元)
0.8582仅用 6 个变量解释了 85.8% 的价格方差
RMSE2.856原始尺度均方根误差(万元)
原始尺度 B 单位:万元 / 单位 年·万公里·档·级·档;标准化 β* 由 z-score 设计阵估得

关键对比:①Lasso 在 α*1se 下把 8 个噪声特征 + 排量(弱预测)全部归零,仅保留 6 个真正驱动价格的变量 —— 自动复原了"真实模型"的稀疏结构;②R² 从 OLS 的 0.8775 仅降到 0.8582,但参数数量从 15 砍到 6(−60%),模型简洁度大幅提升;③业务排序与常识完全吻合 —— 品牌、车龄、车况、里程是二手车定价四大主因子。

7. 文字分析

对二手车价格 15 候选特征 Lasso 建模的完整解读:

  • α* 的选择(表2 + LassoCV):10-fold CV 给出两套候选 —— α*min CV=0.0918(最小 CV-MSE,保留 12 个变量)与 α*1se=0.4227(在 min+1SE 容忍内取最稀疏解,保留 6 个变量)。前者偏向预测优先,后者偏向稀疏可解释优先,工程实践通常推荐 1se 规则作为正式报告口径,因为它在统计噪声允许范围内给出最简洁的模型。本案例两个口径之间 R² 仅差 0.018,但变量数从 12 减到 6,1se 规则胜出。
  • 保留 6 个有效变量:品牌等级(β*=3.79,最强正向)、车龄(β*=−3.17,最强负向)、整车评级(β*=2.03)、公里数(β*=−1.22)、动力类型(β*=0.78)、排放标准(β*=0.04)—— 这 6 个变量与数据生成时设定的"真有效"特征高度重叠,说明 Lasso 在 α*1se近乎完美地复原了真实因果结构。其中"排量"作为弱预测组成员(OLS p=0.497)也被 Lasso 主动剔除,进一步验证了 L1 的稀疏化威力。
  • 丢弃 9 个噪声/弱变量:排量、车身颜色、座椅材质、原车主性别、车牌区域、雨刮评分、香水气味、贴膜深度、备胎型号 —— Lasso 把它们的系数压成精确 0(而不是岭回归式的"很小但非零")。这是与 Ridge 最本质的区别 —— Lasso 的输出本身就是一份"变量入选清单"。
  • R² 对比:OLS 用 15 个变量得 R²=0.8775;Lasso(α*1se) 仅用 6 个变量得 R²=0.8582,损失仅 0.0193。换算到原始尺度,OLS RMSE=2.65 万元、Lasso RMSE=2.86 万元,预测精度只差 0.21 万元/辆 —— 但模型从 15 个参数缩到 6 个,每个保留参数都"扛实在的",跨样本稳定性、可解释性、上线维护成本全面占优。
  • 业务建议:①二手车定价的 ROI 最高变量是品牌等级(+3.0 万元/档) —— 上架时优先把品牌信息标注到位;②"车龄+公里数"组成损耗双因子,5 年 / 5 万公里以内的车在定价模型中拥有显著溢价;③整车评级对最终价格的边际贡献约 0.15 万元/分,做一次专业车况检测带来的评分提升通常能直接覆盖检测成本;④"颜色 / 座椅材质 / 原车主性别 / 车牌区域"等卖家常宣传的"卖点"被 Lasso 实证否定 —— 不必在话术上重点投入;⑤新能源动力(混动/纯电)相对燃油有 1.0~2.0 万元溢价,符合 2025-2026 年新车市场趋势。

结论:Lasso 把 15 个候选变量精简到 6 个核心驱动因子,R² 仅损失 2 个百分点,模型简洁度和可解释性大幅提升 —— 这是面对"候选变量多、真有效比例低"场景时的标准建模流程。

8. 剖析提醒

Lasso 与岭回归的本质区别:Ridge 用 L2 把系数收缩到接近 0 但永远不等于 0,所有变量都留;Lasso 用 L1 把系数压缩为精确 0,自动完成变量筛选 —— 因此"想做变量选择"用 Lasso,"已知所有变量都该留只想稳定估计"用 Ridge。当两者都想兼顾时,使用 Elastic Net(同时加 L1 + L2 惩罚)。标准化是 Lasso 的硬性前置条件:L1 惩罚对系数绝对值一视同仁,未标准化则单位大的变量看似"系数小"会被错误地优先剔除,本案例所有结果都基于 z-score 标准化。Lasso 在高度相关的变量组中只会随机挑一个保留(例如本案例的"车龄 vs 公里数"组),这是 L1 的著名局限 —— 如果业务上希望相关组"全部入选或全部剔除",应改用 Elastic Net 或 Group Lasso。最后,Lasso 报告必须给出 α* 的来源(10-fold CV / 1se 规则)和 α 路径作为佐证,避免读者怀疑"为何刚好剔除这些变量";保留变量进入业务解释前建议再跑一次普通 OLS 复核显著性,因为 Lasso 系数本身是有偏估计、p 值需用专门方法(如 selective inference)。