思路与直觉
本章目标
- 理解为什么正则化回归的数据被刻意设计成三层结构——每一层暴露 OLS 的不同弱点。
- 建立 Ridge 整体收缩、Lasso 选择性清零、ElasticNet 折中的直觉。
- 理解 L1 产生稀疏解的几何直觉——菱形约束区域 vs 圆形约束区域。
重点方法与概念速览
| 名称 | 类型 | 作用 |
|---|---|---|
| 共线性问题 | 概念 | 两个特征高度相关时 OLS 系数不稳定——Ridge 分摊解决,Lasso 选择解决 |
| 高维噪声问题 | 概念 | 无意义特征被 OLS 分到非零权重——L1 惩罚将其驱动到零 |
| L2 收缩直觉 | 概念 | 平方惩罚→所有系数变小但不归零——"都保留,但都温和" |
| L1 稀疏直觉 | 概念 | 绝对值惩罚→不重要系数精确归零——"宁可删掉一部分" |
| 菱形 vs 圆形 | 几何直觉 | L1 约束区域是菱形(尖点在坐标轴)→ 稀疏解;L2 是圆形 → 非稀疏解 |
1. 为什么当前数据特别适合讲正则化
当前分册的数据不是随机选的——它刻意构造了两类会让 OLS 暴露弱点的问题。
参数速览
| 问题类型 | 数据体现 | OLS 的表现 | 正则化的对策 |
|---|---|---|---|
| 多重共线性 | bmi_corr = bmi × 0.9 + ε | 系数在 bmi 和 bmi_corr 间剧烈摇摆 | Ridge 分摊权重;Lasso 可能只选一个 |
| 无关特征 | noise_1 ~ noise_8(纯随机) | 给噪声分配非零系数,过拟合训练集 | Lasso/ElasticNet 将噪声系数压到零 |
理解重点
- 如果没有
*_corr特征,三种模型处理共线性的差异就无从观察。 - 如果没有
noise_*特征,Lasso 的稀疏化能力就缺乏直观验证。 - 这份数据是为"展示正则化行为差异"而设计的——每一层特征都在测试正则化的一个特定能力。
2. OLS 在面对共线性和噪声时为什么会不稳
参数速览
| 维度 | OLS | 正则化回归 |
|---|---|---|
| 训练目标 | ||
| 对系数的态度 | 不关心系数大小——只要拟合误差小 | 系数大小有代价——越大惩罚越重 |
| 共线性下的行为 | 系数方差大——bmi 和 bmi_corr 的系数随机摇摆 | Ridge 分摊稳定;Lasso 选择其一 |
| 噪声特征处理 | 可能给噪声分到非零权重 | Lasso/EN 将噪声系数压到接近零 |
理解重点
- OLS 是"自由的"——只要降低训练误差,系数多大都行。
- 正则化是"有约束的"——系数每增大一点都要付出
的代价。 - 在面对高度相关的两个特征时,OLS 不知道权重该分给谁——Ridge 说"都分一点",Lasso 说"只留一个"。
3. Ridge 的直觉:都保留,但整体缩小
参数速览
适用模型:Ridge(alpha=2.0, random_state=42)
| 参数名 | 类型 | 说明 | 示例取值 |
|---|---|---|---|
alpha | float | L2 惩罚强度——越大收缩越狠 | 2.0 |
| 预期行为 | — | 所有系数非零但整体偏小;bmi 和 bmi_corr 权重分摊 | — |
| 近零系数数 | — | 通常为 0(所有系数都非零) | — |
理解重点
- Ridge 的理念是"这些特征也许都有用,但别让任何一个膨胀得太夸张"。
- 面对
bmi和bmi_corr这类高度相关特征——Ridge 会把权重均匀分摊,两者都保留非零系数。 - L2 的平方惩罚在零点平滑可微——系数趋近零时惩罚梯度也趋近零,因此缺乏"清零"的动力。
- 可以理解为:Ridge 对所有特征持"保留态度",通过温和收缩来控制过拟合。
4. Lasso 的直觉:宁可删掉一些特征
参数速览
适用模型:Lasso(alpha=0.15, max_iter=10000, random_state=42)
| 参数名 | 类型 | 说明 | 示例取值 |
|---|---|---|---|
alpha | float | L1 惩罚强度——越大清零越激进 | 0.15 |
max_iter | int | 坐标下降最大迭代次数 | 10000 |
| 预期行为 | — | 部分系数精确归零;noise_* 系数应接近零;bmi 和 bmi_corr 可能只保留一个 | — |
| 近零系数数 | — | 应 > 0——噪声特征被清零的直接证据 | — |
理解重点
- Lasso 的理念是"如果某个特征贡献不大,直接删掉它"。
- 对
noise_1~noise_8——因为它们完全不含信号,Lasso 会将其系数精确压到零。 - 对
bmi和bmi_corr——Lasso 可能只保留其中一个(通常是信号更强的原始列),另一个清零。 - L1 的绝对值惩罚在零点处不可微——次梯度包含
[-1, 1]区间,为清零提供了数学条件。
5. L1 vs L2 的几何直觉:为什么 L1 稀疏而 L2 不稀疏
这是理解正则化回归最关键的直觉。
参数速览
| 几何维度 | L2(Ridge) | L1(Lasso) |
|---|---|---|
| 约束区域形状 | 圆形( | 菱形( |
| 与坐标轴的交点 | 圆弧——光滑,无尖点 | 尖点——在坐标轴上有顶点 |
| 损失等高线首次接触位置 | 通常在圆弧的非轴点 | 更可能在菱形尖点(坐标轴上) |
| 结果 | 系数非零但收缩 | 部分系数精确为零 |
理解重点
- 将约束区域想象成一个"围墙"——损失等高线从原点向外扩张,首次碰到围墙的位置就是解。
- L2 的围墙是圆形的——圆弧光滑无尖角,损失等高线很少恰好在坐标轴上首次接触围墙 → 系数非零。
- L1 的围墙是菱形的——菱形的尖点在坐标轴上,损失等高线有较大概率在尖点处接触 → 对应系数为零。
- 这就是为什么 L1 能产生稀疏解的本质原因——不是"惩罚更重",而是"约束区域的形状不同"。
6. ElasticNet 的直觉:既想筛选,也想保持稳定
参数速览
适用模型:ElasticNet(alpha=0.2, l1_ratio=0.5, max_iter=10000, random_state=42)
| 参数名 | 类型 | 说明 | 示例取值 |
|---|---|---|---|
alpha | float | 总正则化强度 | 0.2 |
l1_ratio | float | L1 占比——0=纯 Ridge,1=纯 Lasso | 0.5 |
| 预期行为 | — | 兼具稀疏性和稳定性——噪声特征被清零,共线特征权重分摊 | — |
| 近零系数数 | — | 介于 Ridge(0)和 Lasso(较多)之间 | — |
理解重点
- 纯 Lasso 的问题:面对一组高度相关特征,可能随机只选一个——不够稳定。
- 纯 Ridge 的问题:保留所有特征,包括噪声——不够稀疏。
- ElasticNet 的 L2 分量鼓励同组特征共享权重(稳定性),L1 分量推动噪声特征归零(稀疏性)——取两者之长。
l1_ratio=0.5表示当前实现处于中性折中——不偏向稀疏也不偏向收缩。
7. 如何从训练日志中验证直觉
参数速览
| 观察项 | 正常表现 | 异常信号 |
|---|---|---|
Lasso 的 near_zero | 显著 > 0——noise_* 被清零 | 若 = 0——α 太小,L1 未生效 |
Ridge 的 near_zero | 通常 = 0——所有系数非零 | 若 > 0——α 过大,过度收缩 |
ElasticNet 的 near_zero | 介于 Lasso 和 Ridge 之间 | 若接近 Lasso——l1_ratio 偏高 |
bmi vs bmi_corr 系数 | Ridge 两者均非零;Lasso 可能只有一个;EN 两者非零但较小 | 若 OLS 风格(两者都大)——α 太小 |
noise_* 系数 | Lasso/EN 接近零;Ridge 非零但很小 | 若 Lasso 的 noise_* 仍很大——α 不够 |
理解重点
- 系数结构本身就是正则化回归的"成绩单"——不仅看预测精度,还要看系数是否符合预期行为。
near_zero是最直观的诊断指标——它直接量化了 L1 的稀疏化效果。- 三个模型的行为差异应该在日志中清晰可见——如果三者系数几乎一样,说明 α 设置有问题。
常见坑
- 把"Lasso 产生零系数"等同于"Lasso 预测更准"——稀疏性 ≠ 准确性,两者需分开评估。
- 只看
near_zero总数不看具体哪些特征被清零——noise_*被清零是好的,bmi被清零则可能过度正则化。 - 忽略
l1_ratio=0.5的含义——它不是"一半 L1 一半 L2 的强度",而是"混合比例各占一半"。
小结
- 正则化回归的核心直觉:通过约束系数大小来换取稳定性和可解释性。
- Ridge 倾向"整体温和收缩",Lasso 倾向"选择性清零",ElasticNet 在两者间折中。
- L1 产生稀疏解的根本原因是约束区域的几何形状(菱形尖点)——而非惩罚更重。
- 当前数据的三层结构(原始/共线/噪声)就是为展示这些直觉差异而设计的。