一、符号说明
| 符号 | 含义 |
|---|---|
| $ n $ | 样本数量 |
| $ p $ | 特征数量 |
| $ X $ | $ n \times p $ 的特征矩阵 |
| $ y $ | $ n \times 1 $ 的目标向量 |
| $ \beta $ | $ p \times 1 $ 的系数向量 |
| $ \beta_j $ | 第 $ j $ 个特征的系数 |
| $ \lambda $ | 正则化强度超参数(≥0) |
| $ |\beta|_2^2 $ | L2 范数平方:$ \sum_{j=1}^p \beta_j^2 $ |
| $ |\beta|_1 $ | L1 范数:$ \sum_{j=1}^p |
二、线性回归(Linear Regression)
1. 模型假设
最早,数学家发明线性回归,想法很纯粹:“我用所有特征,最小化误差平方和,找到最优系数。”
它确实完美解决了“拟合”问题
y=Xβ+ϵ y = X\beta + \epsilony=Xβ+ϵ
2. 损失函数(最小二乘法,OLS)
L(β)=∑i=1n(yi−Xiβ)2=∥y−Xβ∥22 L(\beta) = \sum_{i=1}^{n} (y_i - X_i\beta)^2 = \|y - X\beta\|_2^2L(β)=i=1∑n(yi−Xiβ)2=∥y−Xβ∥22
为什么不直接用“最短距离”?
模型预设了“x 无误差,y 有误差”的因果关系。线性回归的基本假设是:
特征 x 是准确测量的、没有误差的;只有目标值 y*y* 带有随机误差(噪声)。
因此,我们的任务是:给定一个 x,预测最可能的 y 是多少。
所以误差自然应该是“预测的 y 和真实的 y 在纵向上的差距”,而不是几何上的最短距离——因为几何距离会把 x 的误差也算进去,但我们的假设里 x 没有误差。
3. 求解(闭式解)
对 $ \beta $ 求导并令为 0:
∂L∂β=−2XT(y−Xβ)=0 \frac{\partial L}{\partial \beta} = -2X^T(y - X\beta) = 0∂β∂L=−2XT(y−Xβ)=0
β^=(XTX)−1XTy \boxed{\hat{\beta} = (X^T X)^{-1} X^T y}β^=(XTX)−1XTy
前提条件:$ X^T X $ 可逆(即特征之间不存在完全共线性)。
4. 特点
- 无偏估计(模型假设正确时)
- 最小化训练集上的 MSE
- 对多重共线性敏感,方差大
- 所有系数非零,不做特征选择
5 致命缺点
致命弱点 1:它太“玻璃心”——对特征相关性极度敏感(多重共线性):如果两个特征高度相关(比如“房子面积”和“房间数量”),线性回归会犯难:到底把权重给谁?
结果就是,系数变得极大且正负抵消(比如面积系数 +10000,房间数系数 -9999),模型极其不稳定。只要数据稍微变一点,系数就剧烈震荡。
致命弱点 2:它太“贪心”——永远不舍弃任何特征:即便你有 10000 个特征,其中 9900 个是噪音,线性回归也会强行给每个特征分配一个非零系数。
结果就是模型极其复杂、过拟合严重,放在新数据上一塌糊涂。
致命弱点 3:它太“脆弱”——特征一多就失效(矩阵不可逆):当特征数ppp大于样本数nnn时,XTX^TXT不可逆,连数学公式都算不出来,直接“崩溃”。
于是,统计学家们想:我能不能在“追求准确”的同时,给模型加一点“规矩”,让它稳定一点、精简一点?
于是,Ridge 和 Lasso 应运而生。
三、Ridge 回归(岭回归)
1. 模型假设
与线性回归相同,但增加约束。
目的:牺牲一点点训练集的准确,换来模型的极度稳定。
- 你给模型加一条死规矩:“所有系数的平方和不能太大”(L2 惩罚)。
- 这样一来,即便两个特征相关,模型也不必把系数搞得极大正负抵消,而是大家平摊权重,皆大欢喜。
- 同时,因为加了λIλIλI,矩阵XTX+λIX^TX + λIXTX+λI远可逆,特征再多也能算。
Ridge 的哲学:我承认所有特征都有用,但你们谁都别太出格,整体温和一点。
2. 损失函数(L2 正则化)
L(β)=∥y−Xβ∥22+λ∥β∥22 L(\beta) = \|y - X\beta\|_2^2 + \lambda \|\beta\|_2^2L(β)=∥y−Xβ∥22+λ∥β∥22
等价形式(约束优化):
minβ∥y−Xβ∥22s.t.∥β∥22≤t \min_{\beta} \|y - X\beta\|_2^2 \quad \text{s.t.} \quad \|\beta\|_2^2 \le tβmin∥y−Xβ∥22s.t.∥β∥22≤t
3. 求解(闭式解)
求导:
∂L∂β=−2XT(y−Xβ)+2λβ=0 \frac{\partial L}{\partial \beta} = -2X^T(y - X\beta) + 2\lambda \beta = 0∂β∂L=−2XT(y−Xβ)+2λβ=0
β^=(XTX+λI)−1XTy \boxed{\hat{\beta} = (X^T X + \lambda I)^{-1} X^T y}β^=(XTX+λI)−1XTy
关键:加了 $ \lambda I $ 后,即使 $ X^T X $ 奇异,矩阵依然可逆,数值稳定性大大提高。
4. 特点
- 系数被压缩(Shrinkage)向 0,但严格不等于 0
- 在多重共线性下表现稳定
- 保留所有特征,适合特征数量多、且都可能有用的场景
- 相当于在目标函数中加入了“系数平方和尽量小”的偏好
四、Lasso 回归(套索回归)
1. 模型假设
与线性回归相同,但增加 L1 约束。
目的:牺牲一点点准确,换来自动特征选择和模型简洁。
- 你给模型加另一条死规矩:“所有系数的绝对值之和不能太大”(L1 惩罚)。
- 这条规矩的奇妙之处在于,它强迫一些不重要的特征系数直接变为 0。
- 结果就是,模型自动帮你挑出了“核心特征”,其余的直接丢弃。模型变得简单、可解释性强。
Lasso 的哲学:我怀疑大部分特征都是噪音,只保留真正关键的少数派。
2. 损失函数(L1 正则化)
L(β)=∥y−Xβ∥22+λ∥β∥1 L(\beta) = \|y - X\beta\|_2^2 + \lambda \|\beta\|_1L(β)=∥y−Xβ∥22+λ∥β∥1
等价形式(约束优化):
minβ∥y−Xβ∥22s.t.∥β∥1≤t \min_{\beta} \|y - X\beta\|_2^2 \quad \text{s.t.} \quad \|\beta\|_1 \le tβmin∥y−Xβ∥22s.t.∥β∥1≤t
3. 求解(无闭式解,迭代法)
常用算法:
- 坐标下降法(Coordinate Descent):逐个更新每个系数,其他固定
- 最小角回归(LARS):一种高效的路径算法
Lasso 的系数更新公式(坐标下降,单变量形式):
βj=S(XjT(y−X−jβ−j),λ)XjTXj \beta_j = \frac{S(X_j^T (y - X_{-j}\beta_{-j}), \lambda)}{X_j^T X_j}βj=XjTXjS(XjT(y−X−jβ−j),λ)
其中 $ S(z, \lambda) = \text{sign}(z) \cdot \max(|z| - \lambda, 0) $ 是软阈值函数。
4. 特点
- 产生稀疏解(大量系数为 0),自动做特征选择
- 适合特征极多($ p \gg n $)、且怀疑很多特征无用的场景
- 当特征高度相关时,Lasso 会随机选其中一个,不如 Ridge 稳定
- 模型更简洁、更可解释
五、三者对比总表
| 对比维度 | 线性回归 | Ridge | Lasso |
|---|---|---|---|
| 正则化项 | 无 | L2: $ \lambda |\beta|_2^2 $ | L1: $ \lambda |\beta|_1 $ |
| 损失函数 | $ |y-X\beta|^2 $ | $ |y-X\beta|^2 + \lambda |\beta|_2^2 $ | $ |y-X\beta|^2 + \lambda |\beta|_1 $ |
| 闭式解 | ✅ 有 | ✅ 有 | ❌ 无 |
| 系数结果 | 非零,可能很大 | 非零,被压缩 | 部分为 0(稀疏) |
| 特征选择 | ❌ 否 | ❌ 否 | ✅ 是 |
| 处理共线性 | 差(方差大) | 好(稳定) | 一般(随机选一个) |
| 偏差-方差 | 低偏差,高方差 | 较高偏差,较低方差 | 较高偏差,较低方差 |
| 适用场景 | 特征少、独立 | 特征多、共线性高 | 特征极多、需稀疏 |
六、超参数 $ \lambda $ 的选择
统一方法:交叉验证(Cross-Validation)
- 将训练集分成 K 折(如 5 折或 10 折)
- 对每个候选 $ \lambda $,用 K-1 折训练,在剩余 1 折上验证
- 选择验证误差最小的 $ \lambda $
常用实现:
RidgeCV(sklearn)LassoCV(sklearn)
扩展:Elastic Net(弹性网)
结合 Ridge 和 Lasso 的优点:
L(β)=∥y−Xβ∥22+λ1∥β∥1+λ2∥β∥22 L(\beta) = \|y - X\beta\|_2^2 + \lambda_1 \|\beta\|_1 + \lambda_2 \|\beta\|_2^2L(β)=∥y−Xβ∥22+λ1∥β∥1+λ2∥β∥22
或等价形式:
L(β)=∥y−Xβ∥22+λ(α∥β∥1+(1−α)∥β∥22) L(\beta) = \|y - X\beta\|_2^2 + \lambda \left( \alpha \|\beta\|_1 + (1-\alpha) \|\beta\|_2^2 \right)L(β)=∥y−Xβ∥22+λ(α∥β∥1+(1−α)∥β∥22)
其中 $ \alpha \in [0,1] $:
- $ \alpha = 0 $ → Ridge
- $ \alpha = 1 $ → Lasso