【高维统计学】第四章 4.2:尖峰矩阵与稀疏回归,两个信息相变入口

分类:高维统计 / 稀疏回归 / 随机矩阵

高维建模的第一步不是选算法,而是判断任务是否越过信息边界。本节用两个经典模型建立这种边界感:加性尖峰模型看低秩信号能否从噪声谱中突出,稀疏回归看稀疏度与样本量的相对尺度。

1. 加性尖峰模型

设观测矩阵为

X=λuv∗⊤+Z, X=\lambda u v_*^{\top}+Z, X=λuv+Z,

其中 uuuv∗v_*v 是单位方向,ZZZ 是噪声矩阵,p/n→δp/n\to\deltap/nδ。我们想知道最大奇异向量 v^\hat vv^ 是否包含 v∗v_*v 的信息。

如图1所示,可学性判断可以拆成两条分支。

任务判断

低秩信号

稀疏信号

谱峰越界

样本充分

弱恢复

极小极大

噪声淹没

比例渐近

图1 可学性判断树。黄色是输入,绿色是可行路径,紫色是输出,红色是退化路径。

2. 谱峰相变

把噪声谱画出来,最大奇异向量只有在信号峰越过噪声谱右端时,才会携带真实方向信息。弱恢复阈值是

λ>δ1/4. \lambda>\delta^{1/4}. λ>δ1/4.

越过阈值后,相关度满足

∣⟨v^,v∗⟩∣2→1−δ/λ41+δ/λ2. |\langle \hat v,v_*\rangle|^2 \to \frac{1-\delta/\lambda^4}{1+\delta/\lambda^2}. v^,v21+δ/λ21δ/λ4.

把这个公式翻译成谱图:分子只有当 λ4>δ\lambda^4>\deltaλ4>δ 时才为正,这正好对应信号峰越过噪声谱。

3. 稀疏回归的极小极大最优

稀疏线性回归模型为

yi=xi⊤β∗+zi,zi∼N(0,σ2). y_i=x_i^{\top}\beta_*+z_i,\qquad z_i\sim N(0,\sigma^2). yi=xiβ+zi,ziN(0,σ2).

当稀疏度满足

klog⁡(p/k)n→0 \frac{k\log(p/k)}{n}\to 0 nklog(p/k)0

时,总风险尺度上的极小极大误差为

2klog⁡(p/k). 2k\log(p/k). 2klog(p/k).

SLOPE 通过调整逐坐标惩罚达到该最优阶,因此它不只是另一个惩罚方法,而是针对稀疏度未知问题设计的自适应方法。

4. LASSO 的比例渐近

k/p→ϵk/p\to\epsilonk/pϵn/p→δn/p\to\deltan/pδ 时,LASSO 的参数误差不再消失,而是由固定点方程决定:

1p∥β^L−β∗∥2→E[η(B+mZ;τm)−B]2. \frac{1}{p}\|\hat\beta^{\mathrm{L}}-\beta_*\|^2 \to \mathbb{E}\big[\eta(B+mZ;\tau m)-B\big]^2. p1β^Lβ2E[η(B+mZ;τm)B]2.

这里 BBB 是真实信号分布,ZZZ 是标准高斯变量,τ,m\tau,mτ,m 由自洽方程组确定。工程含义很直接:算法和调参都正确,比例渐近下仍可能存在不可消除的估计偏差。

5. 两个例子共同告诉我们的边界

问题关键参数边界可学对象
尖峰矩阵λ,δ\lambda,\deltaλ,δλ>δ1/4\lambda>\delta^{1/4}λ>δ1/4弱恢复方向
稀疏回归k,p,nk,p,nk,p,nklog⁡(p/k)/n→0k\log(p/k)/n\to0klog(p/k)/n0极小最大风险
LASSOk/p,n/pk/p,n/pk/p,n/p比例渐近固定点风险而非一致性

6. 工程判断

  1. 逐坐标信噪比很低时,低秩结构仍可能通过集体放大实现弱恢复。
  2. LASSO 不一致不代表算法写错,而是稀疏度与样本量进入了新的渐近区域。
  3. 先判断任务是否越过相变边界,再比较算法,比直接堆测试集更有价值。

在部署中,应先计算 p/np/np/n、稀疏度占比和谱峰位置,再决定模型评估口径。

认知检查点:尖峰模型看谱峰是否越过噪声谱,稀疏回归看稀疏度与样本量的比值;两条边界共同构成高维可学性判断入口。

附:代码实验与输出

实验分两部分:尖峰矩阵在不同 λ\lambdaλ 下的弱恢复相关度,以及 LASSO 在稀疏区与比例渐近区的逐坐标均方误差。

import numpy as np
from sklearn.linear_model import Lasso

def spiked_corr(n, p, lam, seed=0):
    rng = np.random.default_rng(seed)
    u = rng.normal(size=n); u /= np.linalg.norm(u)
    v = rng.normal(size=p); v /= np.linalg.norm(v)
    Z = rng.normal(size=(n, p)) / np.sqrt(n)
    X = lam * np.outer(u, v) + Z
    _, _, Vt = np.linalg.svd(X, full_matrices=False)
    vhat = Vt[0]
    return float(abs(np.dot(vhat, v)))

print("spiked model: n=400, p=200, delta=0.5, threshold=delta^(1/4)=0.8409")
for lam in [0.60, 0.84, 1.20]:
    print(f"lambda={lam:.2f}  corr={spiked_corr(400, 200, lam):.4f}")

def sparse_case(n, p, k, alpha, seed=0):
    rng = np.random.default_rng(seed)
    beta = np.zeros(p)
    beta[:k] = 1.0
    X = rng.normal(size=(n, p))
    y = X @ beta + rng.normal(size=n)
    model = Lasso(alpha=alpha, max_iter=5000)
    model.fit(X, y)
    return float(np.mean((model.coef_ - beta) ** 2))

print("sparse regression: sparse regime")
print(f"k=5 p=200 n=300  per_coord_mse={sparse_case(300, 200, 5, 0.02):.4f}")
print("sparse regression: proportional regime")
print(f"k=50 p=200 n=120  per_coord_mse={sparse_case(120, 200, 50, 0.05):.4f}")

实验输出:

spiked model: n=400, p=200, delta=0.5, threshold=delta^(1/4)=0.8409
lambda=0.60  corr=0.1929
lambda=0.84  corr=0.3967
lambda=1.20  corr=0.7493
sparse regression: sparse regime
k=5 p=200 n=300  per_coord_mse=0.0021
sparse regression: proportional regime
k=50 p=200 n=120  per_coord_mse=0.0815

尖峰矩阵中 λ=1.20\lambda=1.20λ=1.20 时相关度明显升高;稀疏回归中,k=5k=5k=5 的稀疏区误差很低,k=50k=50k=50 的比例渐近区误差明显上升。边界判断直接影响后续工具选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VectorShift

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值