尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

线性回归与L2正则化:从最小二乘到岭回归的原理与实战

发布时间:2026/9/24 21:13:59

资讯中心
01
ARTICLE

线性回归与L2正则化:从最小二乘到岭回归的原理与实战

线性回归与L2正则化:从最小二乘到岭回归的原理与实战
1. 线性回归与L2正则化先搞懂这门课想让你掌握什么每次带学生复习“模式识别与机器学习”线性回归这一章都是我反复强调的重点。原因很简单它是整门课的地基。你现在可能觉得“不就是拟合一条直线嘛”但等你学到后面会发现逻辑回归、Softmax分类、神经网络的全连接层本质上都是在做“广义线性模型”的事。而L2正则化更是贯穿始终——从岭回归到SVM的对偶推导再到深度学习里的权重衰减weight decay全是同一个思想在变着花样出现。这篇内容适合三类人正在准备“模式识别与机器学习”期末考试的在校学生做课程设计或头歌平台作业卡壳的同学以及想把自己对线性回归的理解从“会调库”提升到“懂原理”的入门学习者。我尽量把课堂上不会细讲的那些“为什么”也讲透毕竟考试考的不只是公式默写更重要的是你能不能现场推一遍、能不能说清楚每个符号的含义。先说结论性的一句话线性回归解决的是“给定连续数值标签的预测问题”L2正则化解决的是“模型在特征多、样本少或共线性严重时不稳定”的问题。两者结合起来就是你对“岭回归”这个名字的全部理解。2. 线性回归的本质从解方程到拟合分布2.1 两种角度理解线性模型给定训练数据 \(\{(x_i, y_i)\}_{i1}^N\)其中 \(x_i \in \mathbb{R}^d\) 是d维特征向量\(y_i \in \mathbb{R}\) 是连续标签线性回归要学的就是一个映射 \(f(x) w^T x b\)。这里 \(w\) 是权重向量\(b\) 是偏置。可以有三种理解方式按难度递增排列第一种理解几何视角。当 \(d1\) 时f是平面上的直线\(d2\) 时f是三维空间的平面\(d2\) 时叫“超平面”想象不出来没关系知道它是线性函数就行。线性回归就是找到一条直线/平面/超平面让所有样本点到它的“竖向距离”预测值与真实值的差尽量小。第二种理解代数视角。把偏置 \(b\) 吸收进权重向量 \(w\)同时给每个 \(x\) 增加一维常数1那么模型变成 \(f(x) w^T x\)。把所有样本拼接成矩阵形式就是 \(y Xw\) 的线性方程组问题。当 \(N d\) 且 \(X\) 可逆时这个问题有唯一解 \(w X^{-1}y\)当 \(N d\) 时方程组超定通常没有精确解就要找“误差最小的近似解”。第三种理解统计视角。假设 \(y w^T x \epsilon\)其中 \(\epsilon \sim \mathcal{N}(0, \sigma^2)\) 是高斯噪声。那么给定 \(x\) 时 \(y\) 的分布是 \(\mathcal{N}(w^T x, \sigma^2)\)。最大似然估计MLE在这个设定下推导出来就是最小化均方误差——因为高斯分布的对数似然函数展开后唯一与 \(w\) 相关的部分就是 \(\sum_i (y_i - w^T x_i)^2\)。第三种视角特别重要因为它把“误差平方和最小”从“一种合理的选择”变成了“在特定假设下的必然结论”。考试如果问“为什么线性回归用平方误差损失”你要能答出高斯噪声假设下的最大似然推导。2.2 最小二乘法的闭式解怎么来的目标函数写出来是\[ J(w) \frac{1}{2} \sum_{i1}^N (y_i - w^T x_i - b)^2 \]这里为什么加 \(\frac{1}{2}\)纯粹是为了后面求导时把2消掉形式上好看点不影响解的结果。你把 \(b\) 吸收入 \(w\) 后矩阵形式变成\[ J(w) \frac{1}{2} \|y - Xw\|^2 \]求梯度\[ \nabla_w J(w) -X^T(y - Xw) \]令梯度为零得到正规方程\[ X^T X w X^T y \]如果 \(X^T X\) 可逆则\[ w (X^T X)^{-1} X^T y \]考试时经常在中间卡人的一个点是\(X\) 的维度到底是 \(N \times d\) 还是 \(d \times N\)。不同教材习惯不一样矩阵形式一换整个推导看着就变了。我建议你固定用“每行一个样本”的约定\(X\) 是 \(N \times d\)那么 \(X^T X\) 就是 \(d \times d\)\(X^T y\) 是 \(d \times 1\)最终 \(w\) 是 \(d \times 1\)。这个维度检查习惯能帮你少丢大部分过程分。2.3 什么情况下闭式解会失效\(X^T X\) 不可逆本质上就是特征之间存在多重共线性或者说数据没有提供足够的信息来唯一确定每个特征的权重。举一个直观的例子假设你要预测房价特征是“房屋面积平方米”和“房屋面积平方英尺”。这两个特征完全线性相关1平方米约等于10.76平方英尺那么 \(X^T X\) 就是奇异的闭式解求不出来。你没法单独确定两个权重分别取多少因为“面积加1”、“尺”特征相应调整总预测值可以完全不变——解有无穷多个。更常见的情况是特征数 \(d\) 大于样本数 \(N\)比如基因表达数据几万个基因但只有几十个样本。这时候 \(X^T X\) 一定不可逆秩最多只有 \(N\)普通最小二乘直接失灵。这时候L2正则化就该登场了。3. L2正则化原理它在做的其实是“压缩”3.1 从惩罚函数的角度理解L2正则化也叫岭回归、Tikhonov正则化的目标函数是\[ J(w) \frac{1}{2} \|y - Xw\|^2 \frac{\lambda}{2} \|w\|^2 \]新的梯度是\[ \nabla_w J(w) -X^T(y - Xw) \lambda w \]令梯度为零正规方程变成\[ (X^T X \lambda I) w X^T y \]注意只要 \(\lambda 0\)\(X^T X \lambda I\) 就一定是正定矩阵一定可逆——不论 \(X^T X\) 是不是奇异。这就是L2正则化修复不可逆问题的底层逻辑。\(\lambda\) 在主对角线上加了一个正的常数把零特征值都抬高了。这就像你在一个摇晃的桌脚下垫了一片楔子桌子立刻稳了。加在这的作用就是给原本“悬空”的维度一个拉力让解从无穷多个候选里选出一个“权重范数最小”的。3.2 为什么L2会把权重往零压缩从梯度更新的角度看标准的梯度下降迭代是\[ w_{t1} w_t - \eta \nabla J(w_t) \]加入L2项后\(\nabla J(w)\) 里多了一个 \(\lambda w_t\)所以更新变成\[ w_{t1} w_t - \eta (\nabla E(w_t) \lambda w_t) (1 - \eta \lambda) w_t - \eta \nabla E(w_t) \]当 \(\eta \lambda\) 在0到1之间时每一步更新前权重先乘以一个略小于1的系数 \((1 - \eta \lambda)\)这就是“权重衰减”这个名字的由来。权重每轮都被“打折”再往误差下降的方向移动最终结果是对于数据支撑强的方向权重保持较大对于数据支撑弱的方向权重被压得很小。这对应到统计学里的偏差-方差权衡标准最小二乘是无偏估计但方差大加了L2后有偏但方差显著降低。在真实数据上总误差偏差方差噪声往往方差的下降幅度超过偏差的上升幅度所以整体效果更好。3.3 贝叶斯视角高斯先验下的最大后验估计理解L2的另一个重要视角是贝叶斯。在2.1节的统计视角里假设 \(y w^T x \epsilon\)噪声 \(\epsilon \sim \mathcal{N}(0, \sigma^2)\)。现在再给权重 \(w\) 一个先验分布 \(w \sim \mathcal{N}(0, \tau^2 I)\)——先验认为权重应该在零附近且各维度独立。最大后验估计MAP要最大化 \(\log p(w|y, X)\)根据贝叶斯公式就是最大化 \(\log p(y|X, w) \log p(w)\)。第一部分是似然第二部分是先验。代入高斯分布的具体形式后你会发现\[ \log p(w) -\frac{1}{2\tau^2} \|w\|^2 \text{常数} \]所以MAP估计等价于最小化 \(\frac{1}{\sigma^2} \cdot \frac{1}{2}\|y - Xw\|^2 \frac{1}{\tau^2} \cdot \frac{1}{2}\|w\|^2\)。令 \(\lambda \sigma^2 / \tau^2\)得到的就是L2正则化的目标函数。考试问“L2正则化的概率解释”你就这样答高斯似然 高斯先验 MAP L2正则化。4. L1与L2对比什么时候加哪个这是高频考点4.1 几何直觉为什么L1稀疏而L2不稀疏L1正则化Lasso的目标是\[ J(w) \frac{1}{2} \|y - Xw\|^2 \lambda \|w\|_1 \]和L2只差一个细节——L1用的是绝对值之和L2用的是平方和。但这个细节导致了完全不同的行为。不看公式看几何。等误差线误差常数的轨迹在高维空间里是一个椭球面L2正则项的等值面\(\|w\|^2 \) 常数是球面L1正则项的等值面\(\|w\|_1 \) 常数是菱形在2维情况下或多面体。最优解出现在误差等值面与正则等值面“相切”的位置。L1的正则等值面有“尖角”——顶点落在坐标轴上所以最优解很容易出现在某个坐标分量等于0的位置这就是稀疏性。L2的等值面是光滑球面相切点通常不在坐标轴上所以L2得到的解是“很多小权重”而不是“一些零权重”。4.2 什么时候选L1、什么时候选L2这是搜索热词里“什么情况加l1和l2损失”对应的核心问题也是期末简答题常客。场景推荐原因特征数量远大于样本数d N优先L1或ElasticNet需要特征选择稀疏解能筛出关键特征特征间存在强相关性L2L2能让相关特征的权重均衡分摊L1则可能随机选中其中一个关注预测精度、不关心可解释性L2通常L2在预测精度上更稳定需要模型可解释、要压缩特征个数L1稀疏解自动做特征选择实际工程中两类都有用ElasticNetL1L2同时获得稀疏性和稳定性一个实际经验数据量小时L2通常比L1更稳。因为L1在数据不充分时选特征的随机性更强不稳定而L2平滑地把所有特征都用上某种意义上相当于“用全部信息做预测”反而更稳健。4.3 ElasticNet两个都想要时的妥协方案ElasticNet把L1和L2合起来\[ J(w) \frac{1}{2} \|y - Xw\|^2 \lambda_1 \|w\|_1 \frac{\lambda_2}{2} \|w\|^2 \]它在高维数据上表现好尤其是特征之间存在分组相关性时Lasso只会从一组相关特征里随机选一个而ElasticNet倾向于整组特征都选进来或都去掉。sklearn里的ElasticNet类可以直接用多两个超参数 \(\lambda_1\) 和 \(\lambda_2\)。5. 实操环节手推公式、代码实现与调参经验5.1 手推一遍步骤拆解与易错点如果考试允许带一页A4纸我建议你把“最小二乘 岭回归”的推导完整写一遍并反复默写因为它是整门课里最容易拿满分的10分大题。步骤拆成五步第一步定义符号。训练集 \(\{(x_i, y_i)\}_{i1}^N\)\(x_i \in \mathbb{R}^d\)矩阵 \(X \in \mathbb{R}^{N \times d}\)每行一个样本权重 \(w \in \mathbb{R}^d\)为了简化省略偏置或把人印在 \(X\) 里加一列1。第二步写出目标函数。无正则时是 \(J(w) \frac{1}{2}\|y - Xw\|^2\)有L2时是 \(J(w) \frac{1}{2}\|y - Xw\|^2 \frac{\lambda}{2}\|w\|^2\)。第三步求梯度。要会两个矩阵求导公式\(\nabla_w \|y - Xw\|^2 -2X^T(y - Xw)\)\(\nabla_w \|w\|^2 2w\)。代入函数L2情况下梯度是 \(-X^T(y - Xw) \lambda w\)。第四步令梯度为零。展开整理\((X^T X \lambda I)w X^T y\)。第五步写出解并标注条件。当 \(\lambda 0\) 时 \(X^T X \lambda I\) 正定闭式解为 \(w (X^T X \lambda I)^{-1} X^T y\)不需要考虑 \(X^T X\) 是否可逆。最容易扣分的地方有三处一是矩阵维度写错导致后续全崩二是忘记 \(X\) 的转置位置三是没有说明 \(\lambda0\) 时 \(X^T X\) 需要可逆。5.2 Python实现不用sklearn也得会写梯度下降现成的库很多但课程作业或面试手撕代码时裸写才是硬功夫。给你一个最小可用的手写实现用批量梯度下降解决岭回归import numpy as np def ridge_regression_gd(X, y, lr0.01, lambd1.0, max_iter1000, tol1e-6): 手写岭回归梯度下降版 X: 形状 (N, d)建议先做标准化 y: 形状 (N,) N, d X.shape # 加一列1把偏置b吸收进w X_b np.column_stack([np.ones(N), X]) w np.zeros(d 1) for i in range(max_iter): # 注意L2正则化通常不对偏置项做惩罚 grad X_b.T.dot(X_b.dot(w) - y) / N grad[1:] lambd * w[1:] w_new w - lr * grad if np.max(np.abs(w_new - w)) tol: return w_new w w_new return w注意我在梯度里对偏置项做了特殊处理——grad[1:] lambd * w[1:]这一行的意思是第0维对应常数项的偏置不参与正则化。这是实践中很常见的做法因为把偏置也压向零没有意义数据平移一下结果就变了。你课本里的公式可能为了简洁没有区分但考试问你“偏置项要不要正则化”你要能说清楚通常不惩罚。用之前要对特征做标准化不然不同尺度下L2惩罚的效果会被扭曲。5.3 超参数lambda怎么选网格搜索 交叉验证\(\lambda\) 太小没效果太大把所有权重都压没了模型变成“只预测均值”。实际做法是用交叉验证from sklearn.model_selection import GridSearchCV from sklearn.linear_model import Ridge # 候选lambda从1e-3到1e3按对数刻度取 param_grid {alpha: np.logspace(-3, 3, 20)} ridge Ridge() search GridSearchCV(ridge, param_grid, cv5, scoringneg_mean_squared_error) search.fit(X_train, y_train) best_lambda search.best_params_[alpha] print(最优lambda:, best_lambda)选 \(\lambda\) 的经验法则是先看 \(\lambda0\) 时的误差然后逐步增大观察验证集误差先降后升的曲线取最低点对应的 \(\lambda\)。验证集误差开始上升说明正则化过度了。还有一个小技巧用标准化后的数据\(\lambda\) 的量级通常在 \(10^{-2}\) 到 \(10\) 之间比较合理。如果你发现最优值是 \(10^6\)大概率是特征没做标准化。6. 实际问题排查头歌作业和期末调试中的常见坑我在各种群和问答平台看过大量关于线性回归头歌作业的问题汇总几个高频卡点基本覆盖了八成的情况。6.1 梯度爆炸或loss不收敛典型表现loss在某个迭代后变成NaN或者直接冲到天文数字。原因通常是学习率太大或特征尺度差太大。排查方法先输出每一步的loss和w的范数看到某一步范数突然跳变大概率就是梯度爆炸把学习率缩小10倍再试如果问题缓解就是学习率的问题检查特征数值范围如果一个特征在0到1之间另一个在0到100000之间L2惩罚对这第二个特征基本无力梯度更新对第一个特征又会过猛。标准化是必须的from sklearn.preprocessing import StandardScaler scaler StandardScaler() X_scaled scaler.fit_transform(X) # 记住训练后用scaler.transform处理测试数据不能重新fit6.2 加了L2还是过拟合有些同学加了L2后测试误差不见好就开始怀疑正则化没用。问题可能出在\(\lambda\)设置太小正则项在目标函数里占比可以忽略不计。检查方法看训练集上的loss和测试集上的loss差距。如果差距依然很大尝试把 \(\lambda\) 按10倍加大看验证集误差是否有下降趋势。另一个隐蔽问题是对测试集也做了标准化但用了测试集的均值和方差。正确做法是只用训练集的均值和方差来转换测试集。6.3 矩阵不可逆但代码没报错sklearn的LinearRegression底层用的不是直接求逆而是SVD分解。所以即使 \(X^T X\) 奇异它也能返回一个解——但这时候的权重值是不稳定的、依赖数值精度解释性很差。如果你发现权重异常大甚至符号和常识相反先检查是不是存在多重共线性再考虑换成岭回归。检查多重共线性的办法算特征间相关系数矩阵看有没有接近±1的值。6.4 头歌平台输出格式问题头歌这类在线实验平台对输出格式的要求比较严格经常有同学代码逻辑对但就是过不了。我的经验是输出精度按要求保留注意print的格式是否包含多余空格如果要求返回数据而不是打印注意返回类型是float还是numpy.float64多测几组边界条件比如只有一个样本、特征全零的情况7. 期末高频考点速查表最后把这门课上关于该主题最容易考到的几类题整理一下每类背后的考察意图我也标注出来你能一眼看出老师在考你什么。考点典型问题答题要点最小二乘推导推导线性回归的闭式解写出目标函数→求梯度→令零→解正规方程注意矩阵维度L2正则化作用为什么L2能解决不可逆解释 \(X^T X \lambda I\) 的可逆性用特征值解释L1/L2区别L1和L2正则化各自的优缺点L1稀疏、可解释、做特征选择L2稳定、处理共线性、不稀疏偏差-方差正则化如何影响偏差和方差L2增大偏差、降低方差总误差可能降低贝叶斯解释L2对应的先验是什么高斯先验MAP推导过拟合判断训练误差低、测试误差高怎么办加正则化、收集更多数据、特征选择梯度下降手推写出L2正则化的梯度更新公式\(w (1 - \eta \lambda)w - \eta \nabla E(w)\)解释权重衰减参数选择如何确定λ交叉验证、网格搜索特征需标准化这几类题在期末卷面上出现的概率极高而且经常是“推导简述”组合出现。建议你合上笔记尝试独立把正规方程、岭回归求解、梯度更新三套路完整写一遍。8. 写在最后的一些实际体会我带过很多轮机器学习相关的课程和培训发现大家最常见的误区是把线性回归当“太简单了”而忽略细节。但实际上半数的后续内容都是在线性回归基础上修修补补。模型的损失函数、正则化、优化方法——这三样东西一旦吃透后面学逻辑回归里做分类、学支持向量机里换损失函数、学神经网络里堆层数你都会有一种“套路我见过”的底气。L2正则化更像一个提醒好的模型不是把所有信息都用得干干净净而是知道自己什么时候该克制什么时候该对某些不可靠的信息做出妥协。这其实跟做工程项目的后期阶段一样不要试图拿一套代码解决一切问题留点余量反而更稳。建议你把正规方程的推导和梯度下降的推导每一步都自己写一遍写到不需要看笔记也能顺畅完成。然后去头歌把对应的实验多跑几轮针对上面列的那几个常见问题故意制造一次过拟合、一次矩阵奇异亲眼看效果比背十遍公式都管用。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。