Skip to content

思路与直觉

本章目标

  1. 理解为什么正则化回归的数据被刻意设计成三层结构——每一层暴露 OLS 的不同弱点。
  2. 建立 Ridge 整体收缩、Lasso 选择性清零、ElasticNet 折中的直觉。
  3. 理解 L1 产生稀疏解的几何直觉——菱形约束区域 vs 圆形约束区域。

重点方法与概念速览

名称类型作用
共线性问题概念两个特征高度相关时 OLS 系数不稳定——Ridge 分摊解决,Lasso 选择解决
高维噪声问题概念无意义特征被 OLS 分到非零权重——L1 惩罚将其驱动到零
L2 收缩直觉概念平方惩罚→所有系数变小但不归零——"都保留,但都温和"
L1 稀疏直觉概念绝对值惩罚→不重要系数精确归零——"宁可删掉一部分"
菱形 vs 圆形几何直觉L1 约束区域是菱形(尖点在坐标轴)→ 稀疏解;L2 是圆形 → 非稀疏解

1. 为什么当前数据特别适合讲正则化

当前分册的数据不是随机选的——它刻意构造了两类会让 OLS 暴露弱点的问题。

参数速览

问题类型数据体现OLS 的表现正则化的对策
多重共线性bmi_corr = bmi × 0.9 + ε系数在 bmibmi_corr 间剧烈摇摆Ridge 分摊权重;Lasso 可能只选一个
无关特征noise_1 ~ noise_8(纯随机)给噪声分配非零系数,过拟合训练集Lasso/ElasticNet 将噪声系数压到零

理解重点

  • 如果没有 *_corr 特征,三种模型处理共线性的差异就无从观察。
  • 如果没有 noise_* 特征,Lasso 的稀疏化能力就缺乏直观验证。
  • 这份数据是为"展示正则化行为差异"而设计的——每一层特征都在测试正则化的一个特定能力。

2. OLS 在面对共线性和噪声时为什么会不稳

参数速览

维度OLS正则化回归
训练目标min|yXw|22min|yXw|22+λR(w)
对系数的态度不关心系数大小——只要拟合误差小系数大小有代价——越大惩罚越重
共线性下的行为系数方差大——bmibmi_corr 的系数随机摇摆Ridge 分摊稳定;Lasso 选择其一
噪声特征处理可能给噪声分到非零权重Lasso/EN 将噪声系数压到接近零

理解重点

  • OLS 是"自由的"——只要降低训练误差,系数多大都行。
  • 正则化是"有约束的"——系数每增大一点都要付出 λ 的代价。
  • 在面对高度相关的两个特征时,OLS 不知道权重该分给谁——Ridge 说"都分一点",Lasso 说"只留一个"。

3. Ridge 的直觉:都保留,但整体缩小

参数速览

适用模型:Ridge(alpha=2.0, random_state=42)

参数名类型说明示例取值
alphafloatL2 惩罚强度——越大收缩越狠2.0
预期行为所有系数非零但整体偏小;bmibmi_corr 权重分摊
近零系数数通常为 0(所有系数都非零)

理解重点

  • Ridge 的理念是"这些特征也许都有用,但别让任何一个膨胀得太夸张"。
  • 面对 bmibmi_corr 这类高度相关特征——Ridge 会把权重均匀分摊,两者都保留非零系数。
  • L2 的平方惩罚在零点平滑可微——系数趋近零时惩罚梯度也趋近零,因此缺乏"清零"的动力。
  • 可以理解为:Ridge 对所有特征持"保留态度",通过温和收缩来控制过拟合。

4. Lasso 的直觉:宁可删掉一些特征

参数速览

适用模型:Lasso(alpha=0.15, max_iter=10000, random_state=42)

参数名类型说明示例取值
alphafloatL1 惩罚强度——越大清零越激进0.15
max_iterint坐标下降最大迭代次数10000
预期行为部分系数精确归零;noise_* 系数应接近零;bmibmi_corr 可能只保留一个
近零系数数应 > 0——噪声特征被清零的直接证据

理解重点

  • Lasso 的理念是"如果某个特征贡献不大,直接删掉它"。
  • noise_1 ~ noise_8——因为它们完全不含信号,Lasso 会将其系数精确压到零。
  • bmibmi_corr——Lasso 可能只保留其中一个(通常是信号更强的原始列),另一个清零。
  • L1 的绝对值惩罚在零点处不可微——次梯度包含 [-1, 1] 区间,为清零提供了数学条件。

5. L1 vs L2 的几何直觉:为什么 L1 稀疏而 L2 不稀疏

这是理解正则化回归最关键的直觉。

参数速览

几何维度L2(Ridge)L1(Lasso)
约束区域形状圆形wj2t菱形|wj|t
与坐标轴的交点圆弧——光滑,无尖点尖点——在坐标轴上有顶点
损失等高线首次接触位置通常在圆弧的非轴点更可能在菱形尖点(坐标轴上)
结果系数非零但收缩部分系数精确为零

理解重点

  • 将约束区域想象成一个"围墙"——损失等高线从原点向外扩张,首次碰到围墙的位置就是解。
  • L2 的围墙是圆形的——圆弧光滑无尖角,损失等高线很少恰好在坐标轴上首次接触围墙 → 系数非零。
  • L1 的围墙是菱形的——菱形的尖点在坐标轴上,损失等高线有较大概率在尖点处接触 → 对应系数为零。
  • 这就是为什么 L1 能产生稀疏解的本质原因——不是"惩罚更重",而是"约束区域的形状不同"。

6. ElasticNet 的直觉:既想筛选,也想保持稳定

参数速览

适用模型:ElasticNet(alpha=0.2, l1_ratio=0.5, max_iter=10000, random_state=42)

参数名类型说明示例取值
alphafloat总正则化强度0.2
l1_ratiofloatL1 占比——0=纯 Ridge,1=纯 Lasso0.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 的稀疏化效果。
  • 三个模型的行为差异应该在日志中清晰可见——如果三者系数几乎一样,说明 α 设置有问题。

常见坑

  1. 把"Lasso 产生零系数"等同于"Lasso 预测更准"——稀疏性 ≠ 准确性,两者需分开评估。
  2. 只看 near_zero 总数不看具体哪些特征被清零——noise_* 被清零是好的,bmi 被清零则可能过度正则化。
  3. 忽略 l1_ratio=0.5 的含义——它不是"一半 L1 一半 L2 的强度",而是"混合比例各占一半"。

小结

  • 正则化回归的核心直觉:通过约束系数大小来换取稳定性和可解释性。
  • Ridge 倾向"整体温和收缩",Lasso 倾向"选择性清零",ElasticNet 在两者间折中。
  • L1 产生稀疏解的根本原因是约束区域的几何形状(菱形尖点)——而非惩罚更重。
  • 当前数据的三层结构(原始/共线/噪声)就是为展示这些直觉差异而设计的。