想象你正在搬家。房间里堆满了书、衣服、小家电和健身器材——它们都叫“特征”,每件都有可能在新家派上用场。搬家公司给你两种极端方案:“极简派”(Lasso)只带走最重要的两三件,其余全部扔掉;“收纳派”(Ridge)什么都带,但把每件都压得又扁又薄。极简派太激进,容易把“关联紧密的一整套”拆得七零八落;收纳派又太保守,什么都留着,永远无法轻装上阵。 Elastic Net 则像一位经验老到的搬家顾问。她先用“归拢打包”的思路把相似物品收进同一只纸箱(这相当于 L2 正则化:让相关特征一起被保留或压缩),再站在门口审视哪些纸箱根本不需要带(这相当于 L1 正则化:把用不到的整箱淘汰)。两个动作叠加,既保住了箱子里的结构稳定,又实现真正的“轻装上阵”。 这篇文章会用打包搬家的故事,带你认识 Elastic Net 的原理、它和 Lasso/Ridge 的关系、特征选择中的“分组效应”、以及 α 与 λ 两个旋钮怎么拧。学完之后你会发现,正则化并不是高深的黑魔法,而是一门做好取舍的收纳艺术。

岗位关联

对 AI 从业者而言,Elastic Net 是在高维、共线性数据上做特征选择与稳定预测的必备武器——理解了它,你就掌握了从“能用模型”进阶到“会调模型”的关键一环。

目录
  1. 可视化演示
  2. 组合正则思想:L1 与 L2 的强强联合
  3. 对比 Lasso 与岭回归:三种打包风格
  4. 特征选择能力:分组效应的魔法
  5. 混合权重 α 调节:精益与宽松的旋钮
  6. 正则强度 λ 调参:砍多少的力度
  7. 高维数据应用:房间太大行李太少
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示Elastic Net的L1+L2组合约束几何形状、系数路径随lambda变化、以及Grouping Effect对相关特征的组选择行为。

本节配有交互动效(进入视口后自动加载,约 3KB)。

约束几何:L1菱形+L2圆形=弹性网络 L1约束为菱形,顶点在坐标轴上产生稀疏解 L2约束为圆形,平滑收缩但无稀疏性 ElasticNet为超椭圆,兼具稀疏与稳定 ElasticNet约束区域是L1和L2的凸组合。

组合正则思想:L1 与 L2 的强强联合

搬家顾问的第一课叫“先归类、再取舍”。你面前有四五十件物品(特征),如果纯按“要不要带”一件件判断,很容易陷入纠结。聪明的做法是先按用途把衣物、书籍、厨具归拢成几摞,再决定哪些摞整摞淘汰。这个“先归拢”的动作,就是 L2 正则化在暗中起作用——它对所有物品一视同仁地轻微压制,让相似的物品彼此靠拢;而“再取舍”的动作,就是 L1 正则化——它只留下少数赢家,其余果断归零。

在线性回归里,每个特征 $x_j$ 都对应一个系数 $\beta_j$,系数大小代表特征对预测的贡献。训练时若数据不足,模型会把系数调得很大去“死记硬背”每条样本,这就是过拟合。正则化相当于给目标函数加一笔“打包费”:系数越夸张,费用越高。Elastic Net 收两笔费:一笔按系数的绝对值收(L1 稀疏税),一笔按系数的平方收(L2 压缩税)。

把两笔税写进同一个优化目标:

你看,这位搬家顾问的高明之处:先用 L2 把相似的“餐具套装”归拢进同一只纸箱,再用 L1 决定这只纸箱整个去留。归拢避免了“拆散组合”的遗憾,精简避免了“拖家带口”的臃肿——两笔税互相成就。

min⁡β0,β{12n∑i=1n(yi−β0−∑j=1pxijβj)2+λ(α∑j=1p∣βj∣+1−α2∑j=1pβj2)}\displaystyle \min_{\beta_0,\beta} \left\{ \frac{1}{2n}\sum_{i=1}^{n}\left(y_i - \beta_0 - \sum_{j=1}^{p}x_{ij}\beta_j\right)^2 + \lambda\left(\alpha\sum_{j=1}^{p}|\beta_j| + \frac{1-\alpha}{2}\sum_{j=1}^{p}\beta_j^2\right) \right\}
这个公式是 Elastic Net 的“总章程”:前半段是模型要拟合数据的误差,后半段是搬家顾问开出的打包费账单。
  1. 损失函数衡量模型预测值与真实值的偏差,偏差越大,搬家越乱,费用越高。
    12n∑i=1n(yi−β0−∑j=1pxijβj)2\frac{1}{2n}\sum_{i=1}^{n}\left(y_i - \beta_0 - \sum_{j=1}^{p}x_{ij}\beta_j\right)^2
  2. L1 稀疏税对所有系数绝对值求和,它逼迫那些“用处不大”的物品整件扔掉,系数精确变成 0。
    α∑j=1p∣βj∣\alpha\sum_{j=1}^{p}|\beta_j|
  3. L2 压缩税对所有系数平方求和,它让每件物品都“压扁一点”,但不会彻底扔掉任何一件。
    1−α2∑j=1pβj2\frac{1-\alpha}{2}\sum_{j=1}^{p}\beta_j^2
  4. 打包总预算$\lambda$ 控制两笔税的整体力度,预算越紧,扔得越多、压得越狠。
    λ\lambda

对比 Lasso 与岭回归:三种打包风格

假如你请了三位风格迥异的搬家师傅来评估同一屋子的物品。第一位(Ridge 师傅)主张“每样都带,但统统真空压缩”——结果箱子数量一个不少,每个都轻飘飘。第二位(Lasso 师傅)主张“只留三件必需品,其余全扔”——行李极少,但万一扔错了,后悔都来不及。第三位(Elastic Net 师傅)则是前两位的结合:先把相似的物品归进同箱,再整箱淘汰。

这三种主张在数学上有非常直观的几何形象。看惩罚区域的形状:

Elastic Net 的约束区域就是一个“圆角菱形”——介于两者之间。它保留了坐标轴附近“偏尖”的几何,让稀疏选择依然可能;同时圆润的边角又让解不会轻易落在极端点上,从而保证稳定性。用可视化里的动画看,当形状从菱形变成圆时,解的位置从“贴着角”平滑移动到“贴在圆弧上”——这就是 Elastic Net 在两极之间找到的平衡。

Lasso: min⁡β12n∥y−Xβ∥2s.t.∥β∥1=∑j=1p∣βj∣≤t\displaystyle \text{Lasso: } \min_{\beta}\frac{1}{2n}\|y - X\beta\|^2 \quad \text{s.t.} \quad \|\beta\|_1 = \sum_{j=1}^{p}|\beta_j| \le t
Ridge: min⁡β12n∥y−Xβ∥2s.t.∥β∥22=∑j=1pβj2≤t\displaystyle \text{Ridge: } \min_{\beta}\frac{1}{2n}\|y - X\beta\|^2 \quad \text{s.t.} \quad \|\beta\|_2^2 = \sum_{j=1}^{p}\beta_j^2 \le t
约束区域分别是一个棱角分明的菱形和一个光滑的圆。解(最优系数)就像一个被绳子拴在原点的气球,气球只能待在区域内,而它“贴到”区域边界的位置,决定了哪些系数归零。
  1. 共同目标两个方法都在最小化同样的预测误差,差别只在“绳子”的形状。
    12n∥y−Xβ∥2\frac{1}{2n}\|y - X\beta\|^2
  2. 菱形约束(L1)$|\beta_1| + |\beta_2| + \cdots \le t$ 围成一个菱形,尖角恰好长在坐标轴上,解更容易落在轴上,于是部分系数被精确压成 0。
    ∥β∥1≤t\|\beta\|_1 \le t
  3. 圆约束(L2)$\beta_1^2 + \beta_2^2 + \cdots \le t$ 围成一个圆球,边界处处光滑,解落在轴上没有特殊优惠,所有系数都被均匀缩小但不为零。
    ∥β∥22≤t\|\beta\|_2^2 \le t

特征选择能力:分组效应的魔法

搬家中最头疼的瞬间:面对两双同款不同色的运动鞋(完全相关的特征),扔哪一双都觉得亏。极简派(Lasso)的做法是随便留一双、扔另一双——从统计角度看,这完全随机且不稳定,换个数据集可能就留下另一双了。而 Elastic Net 的打包顾问会说:要么两双都带,要么两双都捐掉,绝不拆散它们。

这个“成组保留或成组剔除”的性质,就是著名的分组效应(grouping effect)。它的数学根源藏在坐标下降的更新公式里:

正因如此,Elastic Net 在共线性数据上的特征选择远比 Lasso 稳定:它不会因为数据集的小小扰动,就把某组相关特征里的“幸存者”换来换去。被选中的,是整组有解释力的特征,而非运气最好的那一个。

βj(t+1)=S(1nxjTr−j, λα)1+λ(1−α),S(z,γ)=sign(z)(∣z∣−γ)+\displaystyle \beta_j^{(t+1)} = \frac{S\left(\frac{1}{n}x_j^T r_{-j}, \ \lambda\alpha\right)}{1 + \lambda(1-\alpha)}, \qquad S(z,\gamma) = \text{sign}(z)\left(|z| - \gamma\right)_+
分子里的软阈值残差做 L1 稀疏选择,分母里的“1 + L2 缩放项”像一根橡皮筋,把相关特征的系数往彼此靠拢的方向拉。
  1. 残差向量$r_{-j} = y - X\beta + x_j\beta_j$ 表示去掉第 $j$ 个特征后,模型还欠样本多少“没解释掉的部分”。
    r−j=y−Xβ+xjβjr_{-j} = y - X\beta + x_j\beta_j
  2. 软阈值算子$S(z, \gamma)$ 把系数 $z$ 往零方向收缩 $\gamma$,若 $|z| \le \gamma$ 就直接归零——这正是 L1 稀疏性的“执行者”。
    S(z,γ)=sign(z)(∣z∣−γ)+S(z,\gamma) = \text{sign}(z)\left(|z| - \gamma\right)_+
  3. L1 分子项$\lambda\alpha$ 决定“归零”的力度,$\alpha$ 越大,这项越猛,稀疏性越强。
    λα\lambda\alpha
  4. L2 分母项$1 + \lambda(1-\alpha)$ 整体压缩系数,且它进入分母让所有系数同步缩小——当两个特征高度相关时,它们的分母相同、分子相近,于是系数“要生一起生,要死一起死”。
    1+λ(1−α)1 + \lambda(1-\alpha)

混合权重 α 调节:精益与宽松的旋钮

搬家顾问的箱子里有一个旋钮,标着“精益程度”,范围从 0 到 1。拧到 1,她就是彻底的极简派(Lasso 模式):只留最核心的物品;拧到 0,她又变成收纳派(Ridge 模式):什么都带,全部压扁。拧在中间,比如 0.5,她就能同时兼顾“精简”和“稳妥”。

这个旋钮在公式里就是 $\alpha$。它决定两笔税的分账比例:

实际建模中,α 很少拍脑袋定,通常和 λ 一起放进交叉验证的网格里搜索。因为 α 决定了模型“更偏稀疏还是更偏稳定”,这是数据告诉你的,而不是经验能猜中的。

λ(α∑j=1p∣βj∣+1−α2∑j=1pβj2)\displaystyle \lambda\left(\alpha\sum_{j=1}^{p}|\beta_j| + \frac{1-\alpha}{2}\sum_{j=1}^{p}\beta_j^2\right)
α 是“L1 与 L2 的分账比例”:α 越大,L1 稀疏税占比越高,模型越像 Lasso;α 越小,L2 压缩税占比越高,模型越像 Ridge。
  1. 分账比例同一笔总预算 $\lambda$,按 $\alpha$ 与 $1-\alpha$ 的比例分给 L1 税与 L2 税。α = 0.5 意味着两笔税各占一半。
    α∑j=1p∣βj∣+1−α2∑j=1pβj2\alpha\sum_{j=1}^{p}|\beta_j| + \frac{1-\alpha}{2}\sum_{j=1}^{p}\beta_j^2
  2. α = 1 退化 LassoL2 项系数为 0,只剩 L1,模型退化为纯 Lasso——追求极致稀疏。
    λ∑j=1p∣βj∣\lambda\sum_{j=1}^{p}|\beta_j|
  3. α = 0 退化 RidgeL1 项系数为 0,只剩 L2,模型退化为纯 Ridge——追求整体稳定、不设淘汰。
    λ2∑j=1pβj2\frac{\lambda}{2}\sum_{j=1}^{p}\beta_j^2

正则强度 λ 调参:砍多少的力度

回头看那笔打包费——λ 是它的“总价”。如果 λ = 0,打包费为零,搬家顾问不干预,模型自由发挥(对应普通最小二乘,容易过拟合);λ 很大,打包费贵得离谱,模型为了省钱把所有系数都压到接近 0(欠拟合)。最合适的 λ,是让模型在“记得住数据”和“能够泛化”之间找到甜蜜点。

统计学家把这件事拆成偏差与方差两部分来理解:

在实践中,我们会画一条“正则化路径”:横轴是 λ 从大到小,纵轴是各系数取值,观察系数如何从 0 逐渐苏醒。再配合交叉验证,选一个让验证集误差最小的 λ——就像搬家前先试装三箱,找到“箱子不撑爆、东西也没漏”的那个打包力度。

E[(y−y^)2]=Bias2⏟偏差项+Var⏟方差项+σ2⏟噪声项\displaystyle \mathbb{E}\left[(y - \hat{y})^2\right] = \underbrace{\text{Bias}^2}_{\text{偏差项}} + \underbrace{\text{Var}}_{\text{方差项}} + \underbrace{\sigma^2}_{\text{噪声项}}
总误差 = 偏差² + 方差 + 噪声。λ 增加时,模型被压得越简单,方差下降,但偏差上升——这是一个跷跷板。
  1. 偏差项模型系统性“想偏了”的程度。λ 太大时,模型过度简化,该保留的信号被当作杂物扔掉,偏差变大。
    Bias2\text{Bias}^2
  2. 方差项模型在不同训练集上“飘忽不定”的程度。λ 太小时,模型记住太多噪声,换个数据集预测结果就大变样,方差变大。
    Var\text{Var}
  3. 噪声项数据本身固有的不可约误差,任何模型都绕不开,与 λ 无关。
    σ2\sigma^2

高维数据应用:房间太大行李太少

最后一幕场景有点极端:你从一间公寓搬进一个 10 万平米的大仓库——不对,是你要从 10 万个候选物品里挑东西装进 100 只纸箱(p = 100000 个特征,n = 100 个样本)。这在基因表达数据、文本词袋特征、用户行为日志里非常常见。此时普通最小二乘直接失效,因为未知数比方程还多,解不唯一。

Lasso 在这种场景下有一个硬限制:它最多只能选出不超过样本数 n 个非零特征。原因很直觉——L1 约束是“稀疏账本”,但可用的“账本行数”只有 n 行。而 Elastic Net 借助 L2 惩罚打破了这堵墙:L2 让目标函数变成严格凸,解唯一,且相关特征成组入选,组数可以超过 n。

在高维场景中,Elastic Net 的坐标下降算法还有额外优势:每次只更新一个系数,其他系数固定,天然适合稀疏、超大规模数据。这也是 scikit-learn 等工业级工具在 p>>n 时默认推荐 Elastic Net 的原因——它在“能算完”和“选得稳”之间,给你一个务实的答案。

Xn×p,p≫n⇒rank(X)≤n,∥β^Lasso∥0≤n\displaystyle X_{n \times p}, \quad p \gg n \quad\Rightarrow\quad \text{rank}(X) \le n, \quad \|\hat{\beta}^{Lasso}\|_0 \le n
样本矩阵只有 n 行,信息量上限就是 n;但 Elastic Net 的 L2 项把“共线的特征们”合并成一组看待,于是能够利用的信息维度远超 n。
  1. 秩的瓶颈$n \times p$ 的设计矩阵,行数 n 远小于列数 p,它的秩最多是 n,数据本质只提供了 n 个独立方向的信息。
    rank(X)≤n\text{rank}(X) \le n
  2. Lasso 的特征天花板由于信息方向只有 n 个,标准 Lasso 能从 p 个候选中挑出的非零系数最多 n 个。
    ∥β^Lasso∥0≤n\|\hat{\beta}^{Lasso}\|_0 \le n
  3. Elastic Net 的破墙板L2 惩罚把互相相关的特征按组吸引,多个相关特征可以同时拥有非零系数——整体非零特征数可以超过 n,而且求解是通过坐标下降在稀疏矩阵上高效完成的。

AI 应用场景

基因表达数据中的标记物筛选

阶段:特征工程与特征选择

解决的问题:基因芯片数据动辄 2 万个基因(特征),样本却只有几十到几百例,且基因之间存在强共表达相关性。传统逐步回归计算慢、稳定性差;Lasso 会随机拆散相关基因对。

具体案例:某团队要预测肿瘤患者对靶向药的响应。使用 Elastic Net(α=0.5,λ 用五折交叉验证)从 2 万基因中筛出 47 个关键标记物,其中多对已知共表达基因被同时选中。在独立验证队列上,AUC 比 Lasso 筛选出的模型高 0.06,且基因列表在重复采样中高度稳定。

推荐系统 CTR 预估中的稀疏特征压缩

阶段:模型训练前的特征压缩

解决的问题:推荐场景的特征经过 one-hot 后可达千万维,且大量交叉特征高度相关(例如“用户年龄+品类”与“用户年龄段+品类”几乎共线)。直接喂给 LR 或深度模型,内存爆炸且容易被噪声特征干扰。

具体案例:某电商平台在 CTR 预估中先用 Elastic Net 对亿级稀疏特征做筛选压缩,再送入深度网络。结果模型参数量下降 40%,AUC 提升 1.2%,训练时间缩短一半。Elastic Net 把相关特征“打包”后,线上推理也更快了。

信贷风控中的财务指标稳定性建模

阶段:模型可解释性与稳健性建设

解决的问题:企业信贷的财务指标(资产负债率、流动比率、速动比率等)高度共线,且坏样本极少。若用普通逻辑回归,系数不稳定,换个季度数据特征排名就大变;全用 L2 则无法剔除噪声指标,模型解释性差。

具体案例:某银行用 Elastic Net 构建企业违约预测模型,α=0.3、λ 经时间序列交叉验证选取。模型同时保留了相关但信息互补的财务比率组,剔除了高噪声的杂项指标,KS 值在跨年回测中保持平稳。

Python 演示

python51 行
import numpy as np  def soft_threshold(z, gamma):    """软阈值算子: 把系数向零收缩, 是 L1 惩罚的执行者"""    if z > gamma:        return z - gamma    if z < -gamma:        return z + gamma    return 0.0  def elastic_net_coord(X, y, alpha=0.5, lam=0.04, max_iter=1000, tol=1e-4):    """坐标下降法求解 Elastic Net     目标: min 0.5*||y - X beta||^2          + lam * (alpha * ||beta||_1 + 0.5 * (1-alpha) * ||beta||_2^2)    """    n_features = X.shape[1]    beta = np.zeros(n_features)    x_sq = np.sum(X ** 2, axis=0)     for _ in range(max_iter):        old = beta.copy()        for j in range(n_features):            residual = y - X @ beta + X[:, j] * beta[j]            rho = X[:, j] @ residual            beta[j] = soft_threshold(rho / x_sq[j], lam * alpha / x_sq[j])            beta[j] /= (1 + lam * (1 - alpha) / x_sq[j])        if np.max(np.abs(beta - old)) < tol:            break    return beta  np.random.seed(42)n, p = 100, 12true_w = np.array([3.0, -2, 0, 0, 1.5, 0, 0, 0, 0.8, 0, 0, 0])X = np.random.randn(n, p)X[:, 1] = 0.8 * X[:, 0] + 0.6 * np.random.randn(n)y = X @ true_w + 0.5 * np.random.randn(n) beta_en = elastic_net_coord(X, y, alpha=0.5, lam=0.04)print("Elastic Net 手写系数:", np.round(beta_en, 3)) try:    from sklearn.linear_model import ElasticNet    m = ElasticNet(alpha=0.04, l1_ratio=0.5, max_iter=10000)    m.fit(X, y)    print("ElasticNet sklearn:", np.round(m.coef_, 3))except ImportError:    print("未安装 sklearn, 跳过对照")
目的:从零实现 Elastic Net 的坐标下降求解器,并与 scikit-learn 的标准结果对照,验证分组效应和稀疏选择。
  1. def soft_threshold(z, gamma):软阈值是 L1 稀疏性的心脏:把系数向零收缩一段距离,不够格的直接归零。
  2. beta = np.zeros(n_features)所有特征从“不带”开始,让算法逐步决定谁该带上。
  3. x_sq = np.sum(X ** 2, axis=0)预计算每个特征的平方和,避免内层循环重复计算,大幅提速。
  4. residual = y - X @ beta + X[:, j] * beta[j]剔除第 j 个特征影响后的“剩余误差”,相当于把这只纸箱单独拿出来审。
  5. rho = X[:, j] @ residual第 j 个特征与残差的点积,衡量它还能贡献多少预测力。
  6. beta[j] = soft_threshold(rho / x_sq[j], lam * alpha / x_sq[j])先执行 L1 稀疏收缩,这是“整件扔不扔”的判决。
  7. beta[j] /= (1 + lam * (1 - alpha) / x_sq[j])再执行 L2 整体压缩,这是“压扁一点”的收纳动作。
  8. if np.max(np.abs(beta - old)) < tol:若所有系数更新幅度都小于容差,认为收敛,提前结束。
  9. X[:, 1] = 0.8 * X[:, 0] + 0.6 * np.random.randn(n)人为构造一个与 X[:,0] 强相关的特征,用于观察分组效应。
  10. m.coef_与 sklearn 的系数对比,若两者接近,说明手写实现正确。

常见误区

误区“Elastic Net 不就是在损失函数后面把 Lasso 的惩罚和 Ridge 的惩罚加起来嘛,没什么新鲜的,1 + 1 而已。”

正解简单相加只是“朴素弹性网”(naive elastic net),实际使用的标准 Elastic Net 在求解后还要乘上 $1 + \lambda(1-\alpha)$ 的重新缩放因子,用来补偿 L2 压缩造成的系数整体偏差。更重要的是,L1 与 L2 的组合会产生“分组效应”这种全新行为——相关特征成组保留或成组剔除,这是纯 Lasso 或纯 Ridge 都不具备的,属于量变引起的质变。

为何常见:目标函数乍一看确实是两段惩罚求和,很少有人注意到后面的缩放修正,也容易忽视惩罚形状从“菱形”到“圆角菱形”的几何变化。

误区“α 差不多取 0.5 就行吧,两个惩罚各一半,均衡最稳妥,反正关键是调 λ 的力度。”

正解α 直接决定解的行为偏向:α 接近 1 时模型近似 Lasso,特征选择激进但面对共线性不稳定;α 接近 0 时近似 Ridge,稳定但几乎没有稀疏性。如果数据里相关特征成群出现,α 应偏小以强化分组;如果确实只有极少数独立特征有用,α 应偏大。实践中 α 和 λ 需要一起做二维网格搜索,不能拍脑袋固定一个。

为何常见:很多教程为了省事,默认 α=0.5 展示结果,让读者误以为 α 不敏感,其实它才是决定“像谁”的关键。

误区“Elastic Net 是两者的集合体,等于优点叠加,那肯定永远比单独用 Lasso 或 Ridge 强!”

正解模型没有绝对的优劣,只有与数据结构是否匹配。如果特征基本独立、真正有用的只有少数几个,Lasso 更简洁直接;如果目标是纯预测且不需要解释哪些特征重要,Ridge 往往更稳。Elastic Net 的甜点区间是“特征强相关 + 需要稀疏”的组合场景。选错场景,Elastic Net 反而引入多余的超参数和计算成本。

为何常见:“合体 = 更强”是直觉上的陷阱,类似于觉得“汉堡 = 面包 + 肉饼”就一定比单独吃肉健康,忽略了具体需求。

误区“样本比特征少那么多,反正 Lasso 有限制,Elastic Net 有 L2 帮忙,应该能解决一切高维问题。”

正解Elastic Net 在高维下确实让目标函数严格凸、解唯一,但它解决的是“共线特征 + 稀疏需求”的组合问题。若特征是独立稀疏的,Lasso 更直接;若 λ 选得太小,Elastic Net 一样会过拟合。高维场景还需要配合特征标准化、稳定性检验(如 bootstrap 重复筛选)和业务先验,不能把模型当万能钥匙。

为何常见:高维案例里 Elastic Net 是 scikit-learn 等工具的默认推荐,久而久之被误当成“高维专用银弹”。

面试题

Q1. Elastic Net 的惩罚项由哪两部分组成?

单选题 · easy

  • A.L1 范数与 L2 范数的加权和← 正确答案
  • B.L0 范数与 L1 范数的加权和
  • C.L2 范数与无穷范数的加权和
  • D.L1 范数与 L0 范数的简单相加

答案:A。Elastic Net 的参数惩罚是 L1 范数(绝对值之和)与 L2 范数(平方和)的加权组合,权重由 α 控制。L0 是“非零个数”,不可导、计算困难,不属于 Elastic Net 的范畴。这就像搬家费由“扔东西的清理费”和“压缩物品的打包费”两部分构成,缺一不可。

Q2. 当 α=0 时,Elastic Net 退化为哪个模型?

单选题 · easy

  • A.经典的 Lasso 回归模型
  • B.经典的 Ridge 回归模型← 正确答案
  • C.不施加任何正则化项
  • D.同时包含 L1 与 L2 惩罚

答案:B。α=0 时,L1 项的权重为 0,只剩 L2 惩罚,模型退化为 Ridge。这相当于搬家顾问把“精简税”完全取消,只保留“压缩税”——每件物品都带,但都压扁。

Q3. 当 α=1 时,Elastic Net 退化为哪个模型?

单选题 · easy

  • A.经典的 Ridge 回归模型
  • B.经典的 Lasso 回归模型← 正确答案
  • C.普通最小二乘回归模型
  • D.主成分回归模型 PCA

答案:B。α=1 时,L2 项权重为 0,只剩 L1 惩罚,模型退化为 Lasso。这就像搬家顾问只保留“精简税”,把所有东西精简到只剩少数核心物品,其余系数精确归零。

Q4. Elastic Net 相比 Lasso 的突出优势是什么?

单选题 · mid

  • A.整体计算复杂度更低
  • B.相关特征组可同时保留← 正确答案
  • C.完全不需要调节超参数
  • D.可以拟合任意非线性关系

答案:B。Elastic Net 的核心优势是分组效应:L2 惩罚把强相关特征“绑”在一起,使它们被同时选中或同时剔除。而 Lasso 在相关特征间只会随机选一个,像极简派随便扔一双同款鞋,不稳定。计算复杂度、超参数、非线性都与这一优势无关。

Q5. 关于 L1 与 L2 正则化,下列说法正确的有?

多选题 · mid

  • A.L1 将部分系数精确压成零← 正确答案
  • B.L2 将所有系数整体均匀收缩← 正确答案
  • C.L1 比 L2 更适合强相关特征
  • D.L2 让目标函数变成严格凸函数← 正确答案

答案:ABD。L1 的菱形约束使解更容易落在坐标轴上,从而产生精确的 0 系数;L2 的圆形约束把系数均匀压小但不归零;L2 的二次惩罚让目标函数成为严格凸函数,保证解唯一。L1 面对强相关特征时会随机选一个,并不稳定,所以 C 错误。

Q6. 在高维场景 p>>n 下,标准 Lasso 最多选出多少非零特征?

单选题 · mid

  • A.最多 p 个特征
  • B.最多 n 个特征← 正确答案
  • C.最多 n/2 个特征
  • D.特征数量不受任何限制

答案:B。设计矩阵的秩最多为 n,Lasso 的解空间信息量受限于 n,因此最多选 n 个非零系数。这是 Lasso 在高维场景的“天花板”。Elastic Net 借助 L2 的“归拢”能力,可以让相关特征成组入选,从而突破这个限制。

Q7. Elastic Net 中 1+λ(1-α) 的重新缩放起什么作用?

单选题 · hard

  • A.修正 L2 惩罚带来的系数整体收缩偏差← 正确答案
  • B.让 L1 惩罚项从一个系数中完全消失
  • C.加快梯度下降算法在整个迭代中的收敛速度
  • D.把所有特征数据统一缩放到相同的量纲

答案:A。标准的 Elastic Net 在求解“朴素弹性网”目标后,会把系数再乘以 $1 + \lambda(1-\alpha)$。因为 L2 惩罚会把所有系数成比例压小,这是一个有偏的压缩,缩放因子用来把这部分偏差“还回去”。这与优化速度无关,也不是特征标准化。

Q8. 关于 Elastic Net 的调参,下列说法正确的是?

多选题 · mid

  • A.α 控制 L1 与 L2 惩罚的比例关系← 正确答案
  • B.λ 控制整体惩罚力度的强弱大小← 正确答案
  • C.α 与 λ 可以一起网格搜索最优值← 正确答案
  • D.实际中通常固定 α=1 只搜索 λ

答案:ABC。α 是两种惩罚的分账比例,λ 是总预算,二者共同决定最终解,通常配合交叉验证做二维网格搜索。α=1 相当于固定退化为 Lasso,抛弃了 Elastic Net 的分组优势,不是常规做法,所以 D 错误。

Q9. 当两个特征完全相关时,Elastic Net 的系数会如何?

单选题 · hard

  • A.两系数大小相近且可以同时为零← 正确答案
  • B.随机将其中一个系数压缩成零
  • C.两个系数完全不受 L2 惩罚影响
  • D.只保留一个系数并删除另一个

答案:A。完全相关意味着两个特征提供的信息几乎相同。L2 惩罚把它们的系数往彼此靠拢的方向拉,配合 L1 时,它们会“同进退”——要么同时非零(大小相近),要么同时为零。Lasso 才会随机二选一或只保留一个。

Q10. 以下哪些场景更适合使用 Elastic Net?

多选题 · hard

  • A.特征数远大于样本数且特征有分组结构← 正确答案
  • B.特征间存在强共线性且需要稳定筛选← 正确答案
  • C.仅三个独立特征且数据噪声非常小
  • D.既想稀疏选择又想保持预测稳定性← 正确答案

答案:ABD。Elastic Net 的甜点区间是“高维 + 相关特征成组 + 需要稀疏 + 需要稳定”的组合场景。如果只有三个独立特征且噪声很小,普通最小二乘或简单 Ridge 就足够,引入 Elastic Net 徒增复杂度,所以 C 不适用。