想象你正要出差一周,面前摊开一个 20 寸的行李箱,桌上摆着各种物品:西装、运动鞋、Kindle、吹风机、三根数据线……你当然想把它们全塞进去,但航空公司有“限重”规定。L1 惩罚就像一位严格的断舍离管家:每件物品都要按“体积绝对值”交税,带得越多税越重。于是你会果断把 Kindle、吹风机留在家里——它们的携带量被精确清零。而 L2 惩罚更像“超重费”:东西全带上,但每件都压缩到最小,谁也没被彻底抛弃。Lasso(L1 惩罚)的厉害之处,正是它逼你在“行李预算”内做硬性取舍:不重要的特征权重精确变成 0,实现自动特征选择。这篇文章,就把这位“断舍离管家”的算盘(数学原理)和干活流程(算法与代码)彻底讲明白。

岗位关联

掌握 L1 Lasso,你将在高维数据建模中拥有“一键断舍离”的能力:自动剔除无关特征、提升模型可解释性。这是数据科学面试与实战中出场率最高的正则化技能之一。

目录
  1. 可视化演示
  2. 正则化起源:给行李箱定“限重税”
  3. L1范数本质:绝对值之税
  4. 几何直觉:菱形箱子与角点解
  5. Lasso求解:坐标下降与软阈值
  6. 特征选择:自动断舍离
  7. 实战应用:从理论到代码
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示L1正则化的几何约束区域、稀疏权重生成过程和特征选择效果,切换模式对比L1与L2正则化的差异。

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

L1几何约束 L1约束区域为菱形,角点落在坐标轴上 min L(θ) + λ|θ| 优化解倾向于落在坐标轴交点,使部分权重精确为零

正则化起源:给行李箱定“限重税”

想象你收拾行李准备出差。如果箱子无限大,你会把整个衣柜都塞进去——西装、沙滩裤、健身弹力带、三副墨镜……结果箱子重得根本拎不动,到了酒店才发现真正常用的东西被压在最底层。这就是过拟合:模型把训练数据里所有细节(甚至噪声)都背下来了,换个新场景立刻失灵。

机器学习里的“行李限重”叫正则化(Regularization)。我们在原本的拟合损失里加一项“重量税”,让模型在拟合数据和保持简单之间做权衡。数学上写成通式:损失 + λ × 惩罚。λ 就是“限重管理员”,λ 越大,惩罚越狠,模型越简单。

岭回归(Ridge)是最早流行的“限重税”——税基是所有权重的平方和,相当于“超重费”:每件物品都交钱,但大件交得多、小件交得少,结果谁都没被扔掉,只是整体变小。先介绍它,是因为 Lasso 是它“换了收税方式”的亲戚,两者放在一起对比,才能凸显 L1 的“狠”。

当你理解了“限重税”的框架,L1 和 L2 的区别就只剩一个关键问题:税是怎么收的?按平方收,还是按绝对值收?下一节,我们看看“断舍离管家”按绝对值收税,会带来怎样意想不到的效果。

w^ridge=arg⁡min⁡w{∑i=1n(yi−∑j=1pwjxij)2+λ∑j=1pwj2}\displaystyle \hat{w}_{\text{ridge}} = \arg\min_w \left\{ \sum_{i=1}^{n} \left( y_i - \sum_{j=1}^{p} w_j x_{ij} \right)^2 + \lambda \sum_{j=1}^{p} w_j^2 \right\}
岭回归的惩罚项是权重平方和,像“超重费”:交完钱东西都在,只是整体变小。
  1. 全局最优化目标等号左边是“最终要找的那组权重”,读作“使得花括号里整体目标最小的那组 w”。
    w^ridge=arg⁡min⁡w{⋯ }\hat{w}_{\text{ridge}} = \arg\min_w \{ \cdots \}
  2. 拟合误差项真实值与预测值之差的平方和,衡量模型在训练数据上“背得熟不熟”。
    ∑i=1n(yi−∑j=1pwjxij)2\sum_{i=1}^{n} \left( y_i - \sum_{j=1}^{p} w_j x_{ij} \right)^2
  3. 惩罚强度λ 是“限重管理员”,越大惩罚越狠,权重整体被压得越小。
    λ\lambda
  4. L2 惩罚项所有权重平方之和,平方让大权重受罚更重、小权重受罚更轻。
    ∑j=1pwj2\sum_{j=1}^{p} w_j^2

L1范数本质:绝对值之税

假设行李箱规则改成“每件物品按体积绝对值交一笔固定税”:Kindle 占 1 个单位、吹风机占 2 个单位,税就是体积本身。这时候你会立刻发现:那些“可用可不用”的东西交的税和必需品一样实在,干脆不带!

这套“绝对值之税”就是 L1 范数惩罚。把岭回归的平方项改成绝对值,就得到 Lasso(Least Absolute Shrinkage and Selection Operator,最小绝对值收缩与选择算子)。名字里藏着两个功能:收缩(把权重往 0 压)和选择(把某些权重直接压成 0 丢掉)。

关键在于 $|w|$ 在 $w=0$ 处有一个“尖角”(不可导点)。拟合时如果想轻微移动权重来改善损失,L1 的税立刻线性增加。这个尖角的存在,让 $w=0$ 常常成为全局最优;而 L2 的平方项在 0 附近是平滑抛物线,移动一点权重税几乎不变,所以它更愿意“留着小步磨蹭”(保留微小非零值)。L1 则是“要么交税过关,要么干脆退回原点”。

回到行李比喻:L1 管家不会跟任何一件物品“讨价还价”,它只问一句:“这东西真的值这个税吗?”不值得,直接清零放回衣柜——这就是“稀疏”的由来。

w^lasso=arg⁡min⁡w{12n∑i=1n(yi−w0−∑j=1pwjxij)2+λ∑j=1p∣wj∣}\displaystyle \hat{w}_{\text{lasso}} = \arg\min_w \left\{ \frac{1}{2n} \sum_{i=1}^{n} \left( y_i - w_0 - \sum_{j=1}^{p} w_j x_{ij} \right)^2 + \lambda \sum_{j=1}^{p} |w_j| \right\}
Lasso 与岭回归的唯一区别:惩罚项从“平方和”换成了“绝对值之和”,代价是目标函数在零点出现尖角。
  1. Lasso 权重解整体目标仍是“损失 + 惩罚”,只是惩罚形式换成了绝对值。
    w^lasso=arg⁡min⁡w{⋯ }\hat{w}_{\text{lasso}} = \arg\min_w \{ \cdots \}
  2. 平均化因子$\frac{1}{2n}$ 让目标与样本量解耦,方便与 sklearn 等库的实现对齐。
    12n∑i=1n(yi−w0−∑j=1pwjxij)2\frac{1}{2n} \sum_{i=1}^{n} (y_i - w_0 - \sum_{j=1}^{p} w_j x_{ij})^2
  3. 绝对值罚项对每个权重按绝对值收“线性税”,惩罚不因权重大小而“打折”。
    λ∑j=1p∣wj∣\lambda \sum_{j=1}^{p} |w_j|
  4. 截距免罚注意罚项中 $j$ 从 1 开始,$w_0$(截距,即“什么都不带”的基线)不参与惩罚。
    w0∉惩罚项w_0 \notin \text{惩罚项}

几何直觉:菱形箱子与角点解

为什么 L1 能把权重压成精确的 0,而 L2 不能?光看公式不直观,画出来就一目了然。把罚项改写成约束形式:我要在“所有物品重量之和不超过预算 t”的前提下,让旅途遗憾最小。t 变小,等于 λ 变大。

这个约束条件在二维平面上画出来:L1 是顶点落在坐标轴上的菱形,L2 是圆。损失函数的等高线是一圈圈围绕最优点的椭圆。约束下的最优解,就是“等高线最先碰到约束区域”的那个点。

椭圆第一次碰上圆,通常碰在圆弧上——两个坐标都非零;但椭圆第一次碰上菱形,常常撞在尖角上——角点恰好落在坐标轴上,意味着某个权重精确等于 0。特征再多时,高维空间里 L1 约束多面体的顶点密密麻麻,解落在“角点”的概率大大增加。

类比:圆形行李箱怎么塞都是“圆鼓鼓”,每件都塞一点;菱形行李箱有犄角,东西顺着角一码,其他东西自然没地方放。L1 的“角点解”,就是现实世界里断舍离的数学化身。

min⁡w∥y−Xw∥22s.t.∑j=1p∣wj∣≤t\displaystyle \min_w \| y - Xw \|_2^2 \quad \text{s.t.} \quad \sum_{j=1}^{p} |w_j| \le t
这是 Lasso 的“约束写法”:权重绝对值之和被限制在一个预算 t 里,与“罚项写法”解集完全等价。
  1. 矩阵化损失把 n 个样本的残差写成向量二范数的平方,展开就是各残差平方和。
    ∥y−Xw∥22=∑i=1n(yi−∑j=1pwjxij)2\| y - Xw \|_2^2 = \sum_{i=1}^{n} \left( y_i - \sum_{j=1}^{p} w_j x_{ij} \right)^2
  2. L1 预算约束所有权重的绝对值之和不能超过 t,相当于“箱子限重”。
    ∑j=1p∣wj∣≤t\sum_{j=1}^{p} |w_j| \le t
  3. 两种写法等价同一个解既可以写成罚项形式,也可以写成约束形式,只是参数 λ 和 t 的对应关系不同。
    存在 t  ⟺  存在 λ\text{存在 } t \iff \text{存在 } \lambda

Lasso求解:坐标下降与软阈值

数学上明确了 L1 想把物品清零,但怎么“劝”它执行?梯度下降在这里碰了钉子:$|w|$ 在 0 处没有导数,梯度下降到 0 附近就不知道该往哪走。于是人们换了个思路——坐标下降。

坐标下降像整理行李箱:一次只处理一件物品,其他物品先固定不动。对每件物品单独计算“在当前背包状态下它还能贡献多少”,然后决策:贡献值超过税就留下,否则清零。

这个“决策阀”叫软阈值算子:把候选值 $z$ 的绝对值减去 λ,结果小于 0 就置 0,否则保留符号并收缩 λ。注意“软”字——它不像“硬阈值”那样直接一刀切,而是“先扣税再决定去留”。

软阈值就像行李箱整理师的“三秒决断”:拿起一件物品,看一眼价值 z,减去税 λ,还有剩就带,没剩就扔。把所有物品轮一遍、再轮一遍,直到箱子稳定下来。sklearn 的 Lasso 内部核心正是这一套(配合坐标循环与稀疏优化技巧);而 λ 的取值则由交叉验证来决定——试一排限重标准,挑验证集表现最好的那个。

S(z,λ)=sign⁡(z)⋅max⁡(∣z∣−λ,0)\displaystyle S(z, \lambda) = \operatorname{sign}(z) \cdot \max(|z| - \lambda, 0)
软阈值是 Lasso 求解的“核心扳手”:小于 λ 的候选值直接归零,大于 λ 的向 0 收缩 λ。
  1. 符号函数sign(z) 只留下 +1、-1 或 0,用来“保留方向”。
    sign⁡(z)={1z>0−1z<0\operatorname{sign}(z) = \begin{cases} 1 & z > 0 \\ -1 & z < 0 \end{cases}
  2. 扣税净价值把 $|z|$ 减去 λ,负数就归 0,得到“交完税还剩多少”。
    max⁡(∣z∣−λ,0)\max(|z| - \lambda, 0)
  3. 合并效果候选值落在 $(-\lambda, \lambda)$ 内直接输出 0,落在外面则向 0 收缩 λ。
    S(z,λ)={0∣z∣≤λz−λsign⁡(z)∣z∣>λS(z, \lambda) = \begin{cases} 0 & |z| \le \lambda \\ z - \lambda \operatorname{sign}(z) & |z| > \lambda \end{cases}

特征选择:自动断舍离

传统上做特征选择像面试官筛简历:先凭经验判断哪些变量大概有用,再逐步回归一个个试,费时费力还可能出错。Lasso 把这件事自动化了:认认真真训练一次,那些“无用物品”的权重直接变 0,模型自己完成了选择。

这在“高维数据”(特征数 p 远大于样本数 n)场景尤其珍贵:基因芯片数据动辄上万基因,样本却只有几十个。Lasso 在这类数据上会自动挑出少数关键基因,而且数学上有一个重要保证——非零权重的个数不会超过样本数。

除了自动选择,稀疏解还带来可解释性:一个风控模型如果有 200 个特征,业务人员根本没法跟合规部门解释;Lasso 把模型瘦身到 8 个关键特征,每个系数的含义就能讲清楚“为什么这个变量影响违约率”。

回到行李箱:断舍离大师的成果是你能在 30 秒内找到护照和充电器,因为箱子里只剩必需品。稀疏模型同理——它让你的模型“箱子”一目了然,随时可以向任何人解释带了什么、为什么带。

∥w^lasso∥0=∑j=1p1{w^j≠0}  ≤  min⁡(n,p)\displaystyle \| \hat{w}_{\text{lasso}} \|_0 = \sum_{j=1}^{p} \mathbf{1}\{ \hat{w}_j \neq 0 \} \;\le\; \min(n, p)
稀疏度的“天花板”:Lasso 最多选出 min(样本数,特征数) 个非零系数,高维下真的能“百里挑一”。
  1. 零范数定义统计非零系数的个数,是衡量“稀疏度”的天然度量。
    ∥w^∥0=∑j=1p1{w^j≠0}\| \hat{w} \|_0 = \sum_{j=1}^{p} \mathbf{1}\{ \hat{w}_j \neq 0 \}
  2. 样本量上限当 $p > n$ 时,Lasso 最多只能选出 n 个非零特征。
    ∥w^∥0≤n当p>n\| \hat{w} \|_0 \le n \quad \text{当} \quad p > n
  3. 特征数上限非零个数当然不会超过特征总数,两者取小即得最终上界。
    ∥w^∥0≤min⁡(n,p)\| \hat{w} \|_0 \le \min(n, p)

实战应用:从理论到代码

理论完备,回到“装行李现场”。第一步是标准化:如果不把每件物品按统一规格打包,大件物品(量纲大的特征)天然“显得重要”,税就收得不公平。所以使用 Lasso 前,习惯上先对特征做标准化(sklearn 中可用 StandardScaler 或放进 Pipeline)。

然后就是 λ 的选择——对应“限重的松紧”。λ 太小相当于不限重,模型退化成普通线性回归;λ 太大相当于只让带一件“万能工具”,模型欠拟合。工程上常用交叉验证:把数据切几份,逐一试 λ,选验证误差最小的。sklearn 的 LassoCV 直接完成了整条“正则化路径”的扫描。标准化空间中的目标函数写法如下:

解读结果时抓住一条原则:系数非零的特征 = 被留下的物品。把非零系数按绝对值从大到小排序,那就是模型眼里的“重要性排行榜”;排行榜之外的项目,都可以放心地从采集管道中移除,省下真金白银的数据存储与计算成本。至此,“断舍离管家”的完整工作流已经清晰:统一规格打包(标准化)→ 定限重标准(交叉验证选 λ)→ 逐件决断(坐标下降 + 软阈值)→ 交付清爽行李箱(稀疏模型)。

min⁡w~∑i=1n(yi−∑j=1pw~jx~ij)2+λ∑j=1p∣w~j∣,x~ij=xij−xˉjσj\displaystyle \min_{\tilde{w}} \sum_{i=1}^{n} \left( y_i - \sum_{j=1}^{p} \tilde{w}_j \tilde{x}_{ij} \right)^2 + \lambda \sum_{j=1}^{p} |\tilde{w}_j|, \qquad \tilde{x}_{ij} = \frac{x_{ij} - \bar{x}_j}{\sigma_j}
先用均值/标准差把特征“拉到同一尺寸”,再执行 Lasso,系数之间才真正可比。
  1. 标准化后的特征每个特征减去均值、除以标准差,统一到同一尺度,让税公平。
    x~ij=xij−xˉjσj\tilde{x}_{ij} = \frac{x_{ij} - \bar{x}_j}{\sigma_j}
  2. 标准化空间的新权重在标准化空间里求解 Lasso,得到的系数可直接横向比较。
    w~j\tilde{w}_j
  3. 还原原始系数若业务上需要原始量纲的系数,按标准化比例换算回去即可。
    wj=w~jσjw_j = \frac{\tilde{w}_j}{\sigma_j}

AI 应用场景

基因表达与疾病诊断

阶段:特征工程(特征选择)

解决的问题:传统上医生凭经验手工挑选少数基因,容易遗漏关键交互信息;而基因芯片数据常有 2 万个特征、只有几十个样本,全量建模必然过拟合且无法解释。Lasso 自动筛出 10~30 个与疾病强相关的基因,既提升预测稳定性,又给出可验证的生物标记物。

具体案例:某癌症研究团队用 Lasso 在 2 万个基因中筛出 23 个标记基因,构建的判别模型在独立验证集上 AUC 达 0.91;随后的文献检索确认其中 17 个已有报道支持,其余成为新研究假设。

信贷风控评分卡

阶段:模型可解释性(特征精简)

解决的问题:银行风控模型必须通过监管审查,200 多个原始变量无法向合规部门解释;传统逐步回归反复试错且不稳定。Lasso 把变量压到 15 个,非零系数直接构成“评分卡”,每个属性的加减分一目了然。

具体案例:某消费金融公司用 Lasso 构建申请评分卡,坏账率下降 18%,模型上线前的合规审查周期从 3 个月缩短到 3 周。

点击率预估特征预筛

阶段:特征工程流水线(前置筛选)

解决的问题:CTR 模型特征动辄上亿维,直接进入深度学习模型内存爆炸。把 Lasso 当作“预筛器”跑在前端,先砍掉 90% 无关特征,保留的信号再送入后续模型,训练成本大幅下降。

具体案例:某广告平台对原始 user/item 交叉特征先跑一轮 Lasso,特征从 800 万压到 50 万,DeepFM 训练时间从 3 天降到 8 小时,线上 AUC 基本持平。

Python 演示

python39 行
import numpy as npfrom sklearn.datasets import make_regressionfrom sklearn.linear_model import Lassofrom sklearn.preprocessing import StandardScaler  def soft_threshold(a, lam):    """软阈值算子: |a| 减去 lam, 负了就归 0, 符号保留"""    return np.sign(a) * max(abs(a) - lam, 0.0)  def lasso_coordinate_descent(X, y, lam, iters=300):    """用坐标下降求解 Lasso: 一次只更新一个权重"""    n, p = X.shape    norms = np.sqrt((X ** 2).sum(axis=0))    Xn = X / norms    w = np.zeros(p)    for _ in range(iters):        for j in range(p):            r = y - Xn @ w            rho = Xn[:, j] @ (r + Xn[:, j] * w[j])            w[j] = soft_threshold(rho, lam)    return w / norms  if __name__ == "__main__":    X, y = make_regression(n_samples=100, n_features=20,                           n_informative=5, noise=2.0,                           random_state=42)    Xs = StandardScaler().fit_transform(X)    ys = y - y.mean()    lam = 40.0    w_my = lasso_coordinate_descent(Xs, ys, lam)    model = Lasso(alpha=lam / Xs.shape[0], max_iter=5000)    model.fit(Xs, ys)    nz_my = sum(abs(w_my) > 1e-6)    nz_sk = sum(abs(model.coef_) > 1e-6)    print("my nonzero:", nz_my, "sklearn nonzero:", nz_sk)    print("max diff:", np.abs(w_my - model.coef_).max())
目的:从零实现 Lasso 的坐标下降求解器(软阈值算子),并在合成数据上与 sklearn 官方实现对比,验证手写代码的正确性与稀疏效果。
  1. def soft_threshold(a, lam):软阈值算子是整个算法的“心脏”,负责“扣税后决定去留”。
  2. return np.sign(a) * max(abs(a) - lam, 0.0)方向保留、绝对值扣税、负数归零,一步完成。
  3. norms = np.sqrt((X ** 2).sum(axis=0))计算每列的二范数,用于列归一化。
  4. Xn = X / norms把每个特征缩放到单位长度,让坐标更新的闭式解不再需要额外除法。
  5. r = y - Xn @ w计算当前全模型的残差向量,这是所有坐标更新的共享输入。
  6. rho = Xn[:, j] @ (r + Xn[:, j] * w[j])先“剔除”第 j 列自己的贡献,再求它和新残差的相关度。
  7. w[j] = soft_threshold(rho, lam)对候选相关度执行软阈值,一次“三秒决断”。
  8. w_my = lasso_coordinate_descent(Xs, ys, lam)手写实现跑出权重向量。
  9. model = Lasso(alpha=lam / Xs.shape[0], max_iter=5000)注意 sklearn 的目标函数带 1/(2n),所以 alpha 要除以样本数才能对齐。
  10. print("my nonzero:", nz_my, "sklearn nonzero:", nz_sk)两边的非零系数个数一致,说明稀疏解也对上了。

常见误区

误区平方比绝对值大,惩罚力度更强,那 L2 应该更容易把权重清零才对。

正解恰好相反。看它们在 0 附近的行为:当 $0 < |w| < 1$ 时,$|w| > w^2$,L1 对小权重收的税其实比 L2 更重;而且 L1 在 0 处有尖角,把权重推向精确的 0 是它的“本能”。L2 的平方项在 0 附近非常平缓,权重只是被按比例缩小,理论上永远不会恰好等于 0(除非初始就是 0)。

为何常见:直觉上拿“全局大小”比较平方与绝对值,忽略了“0 附近”这一决定稀疏性的关键局部形状。

误区既然惩罚能防过拟合,那把 λ 调到最大,所有特征都清掉,模型一定最稳。

正解λ 过大连真正重要的特征也一起清零,模型变成“空箱子”,预测值恒为常数,严重欠拟合。λ=0 是普通回归(过拟合风险高),λ→∞ 是空模型,正确的 λ 在中间某处。工程上应沿“正则化路径”做交叉验证,选验证误差最小的点。

为何常见:把正则化理解为“越使劲越好”,忽略了偏差与方差需要平衡——限重过严,出差要用的东西也没了。

误区模型训练完,非零系数按绝对值排个序,前几名就是最重要的特征。

正解系数大小受特征尺度影响(必须先标准化才能横向比较);同时 Lasso 系数是带收缩偏差的估计量,对高度相关的特征还会“随机二选一”。更稳健的做法是结合多次重采样(统计某个特征被选中的频率)、稳定性选择或领域知识综合判断。

为何常见:Lasso 的“自动选择”能力给了人“排名即重要性”的错觉,忽略了惩罚带来的有偏估计和特征间的替代性。

误区|w| 在 0 处没有导数,梯度下降用不了,Lasso 是不是根本上不了台面?

正解不可导不意味着无法优化。主流做法是用软阈值算子配合坐标下降:每个坐标都有闭式解,迭代非常快,这也是 sklearn 的默认内核。恰恰是那个不可导的尖角,才保证了稀疏解的存在——如果处处光滑,反而压不出精确的 0。

为何常见:把“可导性”当成“可优化性”的必要条件,忽略了凸优化里大量处理不可导项的成熟工具。

面试题

Q1. Lasso(L1 正则化)的惩罚项在数学上是什么形式?

单选题 · easy

  • A.所有权重的绝对值之和← 正确答案
  • B.所有权重的平方之和
  • C.所有权重的立方之和
  • D.所有权重的指数之和

答案:A。Lasso 的惩罚项是 $\sum |w_j|$,即绝对值之和。平方和是岭回归(L2),立方与指数都不是标准正则化形式。记住“L1 绝对值、L2 平方”这对搭档即可。

Q2. L1 正则化产生稀疏解的根本几何原因是?

单选题 · easy

  • A.损失函数等高线是圆形的
  • B.菱形约束域的顶点位于坐标轴上← 正确答案
  • C.数据集经过了标准化处理
  • D.损失函数本身是凸光滑的

答案:B。L1 约束域 $|w_1|+|w_2| \le t$ 是菱形,角点恰好在坐标轴上,损失等高线扩张时最先撞上角点,对应某个权重正好为 0。圆形约束是 L2 的特征;标准化与光滑性都不是稀疏的几何根源。

Q3. 使用 Lasso 前,对特征进行标准化的主要原因是?

单选题 · easy

  • A.让特征均值都等于零
  • B.让特征量纲统一惩罚公平← 正确答案
  • C.让模型训练速度变慢
  • D.让目标值呈正态分布

答案:B。惩罚项直接对权重幅度收税,量纲大的特征天然系数小、量纲小的特征系数大,不标准化税就收得不公平。均值归零只是标准化的附带效果;训练速度与目标分布都不是标准化要解决的核心问题。

Q4. 求解 Lasso 的标准算法坐标下降中,单步更新依赖的核心算子是?

单选题 · mid

  • A.梯度裁剪规则
  • B.坐标软阈值算子← 正确答案
  • C.批量归一化算子
  • D.随机掩码规则

答案:B。坐标下降固定其他维度,对单个坐标求带 L1 惩罚的极值,闭式解正是软阈值 $S(z,\lambda)=\mathrm{sign}(z)\max(|z|-\lambda,0)$。梯度裁剪、批量归一化、掩码都与 Lasso 的坐标更新无关。

Q5. 当正则化参数 λ 从 0 逐渐增大时,Lasso 的权重会怎样变化?

单选题 · mid

  • A.所有权重同比例线性放大
  • B.权重整体收缩,小权重先归零← 正确答案
  • C.权重保持不变直到某阈值
  • D.所有权重同时变为负数

答案:B。λ 增大意味着“税”加重,解沿正则化路径移动:次要特征的系数先到 0 并被“钉住”,主要特征继续收缩。这一路径是逐段线性的。放大、不变、变负都与 Lasso 的性质矛盾。

Q6. 在特征高度相关的一簇变量中,Lasso 通常会如何表现?

单选题 · hard

  • A.保留簇内全部变量
  • B.随机只挑一个或少数几个← 正确答案
  • C.对每个变量平均分配权重
  • D.强制所有系数变为相等

答案:B。相关特征间存在很强的替代性,L1 惩罚会让解落在“代价面”的某个角点上,相当于随机挑选簇里的一个代表变量。这正是 ElasticNet 引入 L2 项的原因——让整簇变量一起被收缩而不是心不甘情不愿地二选一。

Q7. 关于 Lasso 与岭回归的区别,下列说法正确的是?

单选题 · mid

  • A.岭回归约束域是菱形,Lasso 是圆形
  • B.Lasso 能产生精确零权重的稀疏解← 正确答案
  • C.岭回归一定会把所有特征系数清零
  • D.Lasso 的解必须是全局唯一的

答案:B。L1 的菱形角点带来稀疏解,L2 的圆形只会按比例收缩,不会精确清零。A 把二者说反了;C 与岭回归性质矛盾;D 在特征高度相关时 Lasso 解可能不唯一。

Q8. 下列哪些陈述符合 L1 正则化的特性?

多选题 · mid

  • A.惩罚项使用权重绝对值之和← 正确答案
  • B.解常落在约束域的角点上← 正确答案
  • C.权重会被精确收缩到零← 正确答案
  • D.惩罚项使用权重平方之和

答案:ABC。A 是 L1 的定义;B 是菱形约束产生角点解的几何表现;C 是稀疏性的直接含义。D 说的是 L2 正则化,故不选。这题考察对 L1 与 L2 “形与果”的整体把握。

Q9. Lasso 在实际应用中常见的注意事项有哪些?

多选题 · hard

  • A.特征需要先做标准化← 正确答案
  • B.λ 应通过交叉验证来选取← 正确答案
  • C.对强相关特征可能只随机选一个← 正确答案
  • D.高维时非零系数可以超过样本数

答案:ABC。标准化保证惩罚公平;交叉验证在正则化路径上平衡偏差与方差;相关特征之间 Lasso 有“二选一”倾向。D 错误——理论保证非零系数个数不超过 $\min(n,p)$,高维下就是不超过样本数 n。

Q10. 当特征维度远大于样本量(p≫n)时,Lasso 的非零系数个数理论上限是?

单选题 · extreme

  • A.最多不超过样本数 n← 正确答案
  • B.可以接近特征数 p
  • C.并没有任何理论限制
  • D.必须恰好等于样本数 n

答案:A。Lasso 的 KKT 条件与线性方程组可解性给出 $\|w\|_0 \le \min(n,p)$,p≫n 时即不超过 n。B 违背该上界;C 否认理论保证的存在;D 错在“必须等于”——上界是“不超过”而非“恰好等于”。