动机
回归模型可以提供许多候选特征,但一个有用的描述未必需要全部特征。
最小二乘衡量预测值与观测值之间的误差,却没有直接表达“只使用少量特征”的偏好。
LASSO 对系数施加绝对值惩罚,利用零点处的尖角让部分系数恰好等于零。
匹配追踪则从另一个决策出发:每次选出一个有用方向,再更新尚未解释的残差。
这些方法都使用残差和相关量,但处理的数学目标不同。
残差小,表示对当前观测响应的拟合好;LASSO 的解还需要平衡拟合程度和系数惩罚。
贪婪序列可以逐步检查更新,而全局最小值需要同时满足每个特征的最优性条件。
分清这些条件,既有助于理解计算结果,也能判断某一步是否使用了正确的目标函数。
特征尺度本身就是模型的一部分。把某一列乘上一个很大的数,就能用相应较小的系数
产生同样的预测贡献。因此,系数的绝对值惩罚依赖特征的计量单位。
用训练观测值确定中心化与缩放规则,才能给惩罚明确的含义;后续观测值沿用同一
转换,而不是重新定义这个模型的尺度。
定义
定义
LASSO 的目标函数
设 A=[a1,…,ap]∈Rn×p 为固定特征矩阵,
y∈Rn 为响应向量,并取 λ>0。考虑最小化
Fλ(β)=21∥y−Aβ∥22+λ∥β∥1,∥β∥1=j=1∑p∣βj∣.残差定义为 r=y−Aβ。在这个定义中,每一个系数都受到惩罚。
前面的 1/2 决定了下文出现的阈值。删除它却保留同一数值的 λ,就改变了问题。
同样,把平方损失除以观测数量,也会改变固定惩罚的相对强度。
如果模型含有不受惩罚的截距,应把它作为单独参数:其驻点条件是
1Tr=0,不能对截距系数应用软阈值。本节例子没有额外截距。
两项都是凸函数,因此整个目标函数也是凸的。并且
Fλ(β)≥λ∥β∥1,所以当系数向量无界增大时,目标值也无界增大,
最小值能够取得。若矩阵列线性无关,平方损失严格凸,解就唯一。
列向量相关时,则不能一般地断言系数唯一。
定义
字典原子与追踪状态
追踪计算中的非零列向量 aj 称为原子。一个状态包括系数 β
以及满足 r=y−Aβ 的残差。普通匹配追踪从 β=0、r=y 开始,
每次增加一个原子的倍数;同一个原子可以再次被选中。
定理/命题
命题
用残差相关量判断 LASSO 最优性
向量 β 最小化 Fλ,当且仅当每个 j 都满足
βj=0βj=0⟹ajTr=λsign(βj),⟹∣ajTr∣≤λ.因此,零系数允许一整个区间内的相关量,而不是要求相应相关量必须为零。
命题
标准正交特征的软阈值
若 ATA=Ip,并记 z=ATy,则唯一的 LASSO 最小值点为
βj=Sλ(zj),Sλ(t)=sign(t)max(∣t∣−λ,0).这里规定 Sλ(0)=0。相关量的绝对值不超过 λ 时,系数为零;
超过阈值时,则把其大小减去 λ。
命题
普通匹配追踪一步的精确能量下降
对非零原子 aj 和当前残差 r,使 ∥r−αaj∥22 最小的倍数为
α=(ajTr)/∥aj∥22。新残差满足
∥r−αaj∥22=∥r∥22−∥aj∥22(ajTr)2,ajT(r−αaj)=0.要得到最大的一步下降量,应最大化等式中的商。
当各原子都是单位向量时,这等价于最大化 ∣ajTr∣。
第一个条件也能确定整个系数向量变成零的范围。在 β=0 时,残差为 y,
所以全部零坐标条件成立,当且仅当 λ≥maxj∣ajTy∣。
这给出了考察一系列惩罚参数时的起点。把参数降到该水平以下,零向量就会违反
至少一个相关量条件。这个判据描述指定的训练问题;为了选择用于预测的惩罚,
仍要在未参与该次拟合的观测值上评估模型,不能仅凭零系数的数量来决定。
零点处的区间正是这一现象的关键。平方系数惩罚在零点的导数只有一个值,
而绝对值能够平衡一整段非零的损失梯度。因此,阈值化来自惩罚函数的结构,
不是先计算一个稠密解,再任意舍弃较小数值的四舍五入规则。
证明思路
平方损失对 βj 的偏导数为 −ajTr。系数为正时,∣βj∣ 的导数为 1;
系数为负时,导数为 −1。在零点,支持斜率(次梯度)的集合是 [−1,1]。
于是凸最优性条件为 0∈−ATr+λ∂∥β∥1,即第一个命题。
凸性使这个条件既充分又必要:当零是目标函数的一个支持斜率时,
移到其他向量都不能降低目标值。
对于标准正交的列向量,展开后各坐标可以分离:
Fλ(β)=21(∥y∥22−∥z∥22)+j=1∑p(21(βj−zj)2+λ∣βj∣).
对一个坐标 t,正的最小值点必须满足 t−z+λ=0,这个解位于正半轴,
当且仅当 z>λ。负的最小值点必须满足 t−z−λ=0,这个解位于负半轴,
当且仅当 z<−λ。在剩余区间内,零点左导数不大于零,右导数不小于零,
所以零使该坐标函数最小。这样就推导出包含两个边界在内的三种情况。
最后,将一次普通追踪更新展开为
∥r∥22−2αajTr+α2∥aj∥22,然后配方。
由于 ∥aj∥22>0,最优增量唯一。代入便得到能量恒等式和新残差与所选原子的
正交性。这两个结论都不要求其他原子与这个原子正交。
例题
例题
例题 1:一个系数在阈值处消失
取 A=I2、y=(3,−1)T、λ=1。相关量就是响应向量的分量,
所以软阈值给出
β=(2,0)T,r=(1,−1)T,F1(β)=3.平方损失为 (12+(−1)2)/2=1,惩罚为 2。
第一个残差相关量等于 1,满足正系数条件;第二个等于 −1,
仍属于零系数允许的区间。等于区间端点,并不会迫使对应系数变成负数。
零向量的目标值为 5,无惩罚的完全拟合 β=y 的目标值为 4。
最小值点在拟合程度和系数大小之间取得平衡,因此这两个候选向量都不是解。
若改取 λ=1/2,解为 (5/2,−1/2)T,目标值为
1/4+3/2=7/4。此时目标函数本身也发生了变化,不能把不同目标的最小值当作
同一把尺度来选择 λ。
例题
例题 2:同一原子再次产生作用
设 a1=(1,0)T、a2=(1,1)T/2、y=(0,1)T。
两个原子的长度都为一。初始相关量为 0 和 1/2,所以先选 a2。
普通匹配追踪前三步如下;各列依次表示步数、所选原子、系数行向量和残差行向量:
k0123j−212βT(0,0)(0,1/2)(−1/2,1/2)(−1/2,3/(22))rT(0,1)(−1/2,1/2)(0,1/2)(−1/4,1/4)残差平方范数依次为 1、1/2、1/4、1/8。
第二步在 a1 上增加 −1/2,消除了第一个残差坐标,
却让残差再次与 a2 相关。第三步在 a2 上的增量为 1/(22),
应当加到已有系数上。如果覆盖原来的系数,就会破坏 r=y−Aβ。
例题
例题 3:重新拟合所选张成空间
选中上述两个原子后,正交匹配追踪用最小二乘同时重新拟合两个系数。
解 β1+β2/2=0 和 β2/2=1,得到
βOMP=(−1,2)T,rOMP=0.普通匹配追踪两步后的系数仍为 (−1/2,1/2)T,残差平方范数是 1/4。
重新拟合使用了整个所选张成空间,并不是“再减去最新原子”的另一种说法。
完全拟合与 LASSO 最优性也不是同一件事。当 λ=1/4 时,OMP 向量有
F1/4=(1+2)/4;两步 MP 向量则有
F1/4=1/4+2/8,虽然残差非零,目标值反而更小。
这个比较并未证明 MP 向量就是 LASSO 解,却表明只检查残差的停止条件
不能认证带惩罚目标的最优性。
坐标更新与贪婪更新
一般特征矩阵不能将标准正交情形的公式同时用于全部坐标,
但对于非零列 aj,仍可精确求解一个坐标子问题。
固定其他系数,定义 r−j=r+ajβj,即加回第 j 项当前的贡献,
留下允许这个坐标解释的响应。最小化
∥r−j−ajt∥22/2+λ∣t∣,得到
βjnew=∥aj∥22Sλ(ajTr−j),rnew=r−aj(βjnew−βj).
这个式子更新的是整个系数。原子已经使用过时,如果只用 λ∣α∣
惩罚新增加的量,就定义了不同的单步目标,因为全局惩罚涉及 ∣βj+α∣。
得到系数后,可以独立于算法名称,用所有残差相关量检查 LASSO 条件。
令 c=∥aj∥22>0、ρ=ajTr−j,便能看清分母的来源。
去掉与 t 无关的项,坐标目标是 ct2/2−ρt+λ∣t∣。
正、负两侧的驻点方程分别为 ct=ρ−λ 和 ct=ρ+λ,
中间由零填补。因此,即使整个矩阵的列线性相关,这个非零列的坐标子问题仍严格凸。
对于零列,直接最小化其惩罚就会把相应系数设为零。
当追踪残差与每个原子的相关量都为零时,它已经垂直于整个可用特征空间,
从而满足普通最小二乘的正规方程。残差长度此时仍可能为正,
因为未解释的部分位于这个空间之外。在此之前,能量恒等式衡量下一步可以获得的改善。
例题 2 的能量不断减半,说明接近精确表示未必会在有限步普通 MP 内完成。
规定步数是在这个序列中选择模型,与选择 LASSO 的系数惩罚属于不同决策。
下面的代码计算例题 2 的普通 MP。它按能量下降量选择原子,
因此同样适用于非单位原子。
import numpy as np
A = np.array([[1.0, 1.0 / np.sqrt(2.0)],
[0.0, 1.0 / np.sqrt(2.0)]])
y = np.array([0.0, 1.0])
beta = np.zeros(2)
residual = y.copy()
norm2 = np.sum(A * A, axis=0)
for step in range(3):
correlation = A.T @ residual
j = int(np.argmax(correlation ** 2 / norm2))
increment = correlation[j] / norm2[j]
beta[j] += increment
residual -= increment * A[:, j]
energy = float(residual @ residual)
print(f"{step + 1}: atom={j + 1}, beta=({beta[0]:.6f}, {beta[1]:.6f}), energy={energy:.6f}")
omp, _, _, _ = np.linalg.lstsq(A, y, rcond=None)
assert np.allclose(omp, [-1.0, np.sqrt(2.0)])
1: atom=2, beta=(0.000000, 0.707107), energy=0.500000
2: atom=1, beta=(-0.500000, 0.707107), energy=0.250000
3: atom=2, beta=(-0.500000, 1.060660), energy=0.125000
带惩罚的追踪增量
现在惩罚每步新增的量,并改用未乘 1/2 的平方损失:
Fλ(β)=∥y−Aβ∥22+λ∥β∥1=2Fλ/2(β),λ>0.
阈值因此是 λ/2。从 β=0、r=y 开始,对非零原子记
κj=∥aj∥22>0、uj=ajTr,求解
qj(γ)=∥r−ajγ∥22+λ∣γ∣=∥r∥22−2ujγ+κjγ2+λ∣γ∣.
这里直接使用当前残差,没有加回原子先前的贡献;惩罚的是增量,而非更新后的完整系数。
命题
带惩罚增量及其精确局部改善
唯一最优增量为
γj∗=κjSλ/2(uj)=⎩⎨⎧(uj−λ/2)/κj,0,(uj+λ/2)/κj,uj>λ/2,∣uj∣≤λ/2,uj<−λ/2.相应局部目标改善量为
Δj=qj(0)−qj(γj∗)=κj(max(∣uj∣−λ/2,0))2.
正半轴的驻点方程为 2κjγ−2uj+λ=0,仅在
uj>λ/2 时给出正解;负半轴同理。在零,支持斜率区间包含零的条件
是 ∣uj∣≤λ/2。代回二次式便得改善量,故不能只比较两个非零驻点式。
例如 aj=1、r=1/2、λ=2 时,最优增量为零,qj(0)=1/4。
候选式给出的 3/2、−1/2 均不符合各自分支,目标值为 4、2,不能取代零。
选最大 Δj 可使局部增量目标下降最多。单位原子或共同正 κj 下,
选最大 ∣uj∣ 也最大化 Δj;长度不同须保留分母。全部分数为零时,各增量均为零。
选定原子后须累加系数,保持残差恒等式:
βj←βj+γj∗,rnew=r−ajγj∗,γj∗=0⟹ajTrnew=2λsign(γj∗).
重选原子不能覆盖旧系数。非零惩罚增量留下大小为阈值的相关量,不同于普通 MP 的正交性。
例如 r=(2,2)T、a=(10,0)T、b=(1,1)T、λ=2,
原始相关量为 20、4,改善量却为 361/100、9/2,原始相关量较大反而改善较小。
分数比较的是指定尺度的原子;若归一化各列,也须按新单位解读系数惩罚。
全局惩罚改变是 λ(∣βj+γ∣−∣βj∣),局部 qj 却收取
λ∣γ∣。以 ej 表示第 j 个坐标单位向量,三角不等式给出
Fλ(β+γj∗ej)−Fλ(β)≤qj(γj∗)−qj(0)=−Δj.
所以正确增量不增加全局目标。未用过的系数使两项改变相等,重用后则未必;
Δj 一般不是精确全局改善。若增量缩小旧系数而未越过零,全局惩罚下降,
增量惩罚却为正。故 Δj 是全局下降量的下界;最大化它只优化局部分数,
未必最大化实际全局下降量。完整坐标最小化会加回旧贡献,再替换整个系数:
βjnew=κjSλ/2(uj+κjβj).
例题
例题 4:增量追踪可在 LASSO 最优之前停住
取单位列矩阵
A=(103/54/5),y=(3,1)T,λ=2.初始相关量为 (3,13/5)T,先选原子 1;下一组为 (1,7/5)T,再选原子 2。
下表分列增量、累计系数与残差:
k0123j−122γ−22/50βT(0,0)(2,0)(2,2/5)(2,2/5)rT(3,1)(1,1)(19/25,17/25)(19/25,17/25)第二步后相关量为 (19/25,1)T,两分数皆零;最大相关量规则重选原子 2,增量为零。
但 F2 的正系数条件要求第一个相关量为 1,并非 19/25。
完整坐标更新会令 β1=44/25,使目标下降 36/625。
全局解其实为 (13/8,5/8)T,残差 (1,1/2)T 的两个相关量均为 1,
符合正系数条件;目标值 23/4 小于停住时的 146/25。
两值分别是 5/4+9/2 与 26/25+24/5,即残差平方范数加系数惩罚。
本例两列线性无关,故经验证的全局解在这个矩阵下唯一。
因此,增量目标没有改善,不等于完整坐标已最优,也不保证全局系数条件成立。
约束与平滑惩罚
设 βλ 是 LASSO 最小值点,并取 τ=∥βλ∥1。
它也会在约束 ∥β∥1≤τ 下最小化平方损失。
否则,存在一个可行向量,其损失更小、惩罚不更大,这就违反了带惩罚问题的最优性。
这个论证从某个给定的惩罚解构造对应的约束问题,却没有建立 λ 与 τ
的一一对应:多个惩罚值可能给出同一个零解。
另一种选择是用平滑函数替代绝对值。一种经过缩放的 Huber 惩罚为
hδ(t)={t2/(2δ),∣t∣−δ/2,∣t∣≤δ,∣t∣>δ,δ>0.
它的外侧斜率为一,且 δ→0 时 hδ(t)→∣t∣。另一个选择是
归一化的 pseudo-Huber 惩罚:
pδ(t)=t2+δ2−δ,δ>0.
归一化后的导数清楚表达了两者的光滑性:
hδ′(t)={t/δ,sign(t),∣t∣≤δ,∣t∣>δ,pδ′(t)=t2+δ2t,pδ′′(t)=(t2+δ2)3/2δ2>0.
在 t=±δ,Huber 的一阶导数衔接,但二阶导数由 1/δ 变成零,
因此它在此处连续可微,却非二次可微。Pseudo-Huber 则处处光滑。两者在零的
曲率均为 1/δ,外侧极限斜率的大小均为一。若改用 δhδ 或
δpδ,固定 λ 下的惩罚贡献会乘以 δ,故须同时交代
尺度与平滑宽度。
对 λ>0,考虑 G(t)=(t−z)2/2+λhδ(t)。在二次区域,
G′(t)=t−z+λt/δ=0 给出 t=δz/(δ+λ);它属于
该区域,当且仅当 ∣z∣≤δ+λ。外侧的驻点方程为
t−z+λsign(t)=0。选择符合区域条件的分支,得到
t∗={δz/(δ+λ),z−λsign(z),∣z∣≤δ+λ,∣z∣>δ+λ.
在 z=±(δ+λ),两式都给出 t∗=±δ。平方损失严格凸,
惩罚为凸,因此这个驻点是唯一全局最小值点。使用任一平滑惩罚时,单变量目标
在零的导数均为 −z;最小值点为零,当且仅当 z=0,与 LASSO 的零值区间
不同。这里平滑的是系数惩罚;把残差损失换成 Huber,是另一个回归目标。
常见错误
常见错误
混淆相关量、重拟合和最优性
对于非单位原子,最大的原始相关量未必产生最大的残差能量下降,
应将相关量平方除以原子的平方范数。
普通 MP 残差垂直于最近选中的原子;OMP 最小二乘残差则垂直于每一个已选列。
这些观察本身都没有检查所有列的 LASSO 惩罚条件。
系数稀疏性也依赖表示方式。高度相关的特征可能互相分担贡献,却保持相近的预测。
选中的特征属于一个有明确单位和惩罚的模型,并不能直接给出因果关系结论。
例如,取 A=[1,1]、响应 y=3、λ=1。
记 t=β1+β2,三角不等式给出
∣β1∣+∣β2∣≥∣t∣。单坐标问题的最优值点为 t=2,而每个
(2−s,s)T、0≤s≤2 都达到相同的目标值 3。
其中一些向量只有一个非零系数,其他向量却有两个;拟合响应始终相同,特征表示并不唯一。
因此,不能仅凭使用了绝对值惩罚就推断系数唯一。
总结
绝对值惩罚的尖角使系数能够恰好为零。对于标准正交特征和单坐标子问题,
软阈值把这种机制写成了明确公式。普通匹配追踪逐个原子控制残差能量的变化;
重新拟合整个已选张成空间得到 OMP。要判断 LASSO 最优性,
则需要逐一比较全部残差相关量与相应的惩罚条件。
练习
思考检查
练习 1:设 A=I3、y=(2,−1/2,0)T、λ=1。求 LASSO 系数、残差和目标值。
思考检查
练习 2:对残差 r=(1,1)T,比较原子 a=(10,0)T 和 b=(1,1)T。哪个原始相关量更大?哪个消除更多残差平方能量?
思考检查
练习 3:在例题 2 中,求第四步 MP 的增量、系数和残差平方范数。
从残差 (−1/4,1/4)T 出发,先比较两个相关量。
思考检查
练习 4:单坐标 LASSO 问题有 A=[1]、y=1/2、λ=1。检查候选系数 0。仅考虑非零驻点会漏掉什么?
思考检查
练习五:对 (t−z)2/2+λhδ(t),取 δ=1/2、λ=1。分别求 z=1/4、z=3/2 的最小值点,并把第一个结果与单变量 LASSO 比较。
两个解分支之间的边界是 δ+λ。
解答
解答 · 练习 1 解答
系数为 (1,0,0)T,残差为 (1,−1/2,0)T。
目标值为 (1+1/4)/2+1=13/8。两个零坐标的残差相关量都落在 [−1,1] 内。
解答 · 练习 2 解答
原始相关量分别为 10 和 2,但能量下降量为 102/100=1 和 22/2=2。
原子 b 消除了整个残差,原子 a 只消除了第一个坐标。
对选择分数进行归一化,能够避免仅由原子长度造成的偏好。
解答 · 练习 3 解答
与 a1 的相关量为 −1/4,与 a2 的相关量为零,
所以第四步在 a1 上增加 −1/4。
系数成为 (−3/4,3/(22))T,残差成为 (0,1/4)T,平方范数为 1/16。
解答 · 练习 4 解答
在零点,r=1/2,相关量 1/2 属于 [−1,1],因此满足凸最优性条件。
正半轴方程给出 t=−1/2,不位于正半轴;负半轴方程给出 t=3/2,
同样不位于负半轴。这些无效候选点不能替代零点情形。
实际的零点目标值为 1/8。
解答 · 练习五解答
分支边界为 3/2。当 z=1/4,二次区域公式给出
t∗=(1/2)(1/4)/(3/2)=1/12,确实在 ∣t∣≤1/2 内;单变量 LASSO 却给出
S1(1/4)=0。当 z=3/2,两式都给出 t∗=1/2:内侧为
(1/2)(3/2)/(3/2),外侧为 3/2−1。这同时检查了边界与平滑造成的非零效果。
相关笔记
最小二乘与残差
建立本节使用的残差几何。
模型验证与岭回归
讨论惩罚参数的选择以及二次惩罚对拟合的影响。
奇异值分解与主成分
研究数据中的正交方向。课程书目
集中列出可进一步阅读的书籍。