线性回归从一条直线到预测模型目录线性回归从一条直线到预测模型1. 为什么从线性回归开始2. 问题定义特征、标签与预测3. 线性回归方程3.1 单特征情形3.2 多特征情形3.3 向量化写法4. 训练时到底在更新什么5. 损失函数如何衡量「够好」5.1 残差与均方误差5.2 从几何直觉理解6. 梯度下降如何找到最优参数6.1 核心思路6.2 学习率最重要的超参数之一6.3 批量、随机与小批量6.4 收敛与解析解7. 线性回归的能力边界7.1 适合的场景7.2 局限与应对8. 一个完整的训练流程回顾9. 小结1. 为什么从线性回归开始线性回归是机器学习里最基础、也最有代表性的监督学习模型之一。它形式简单却几乎涵盖了机器学习训练流程中的全部核心环节特征与标签、模型参数、损失函数、优化算法、超参数调优。理解线性回归等于拿到了一把钥匙——后面遇到的逻辑回归、神经网络本质上都是在更复杂的结构里做类似的事情用参数把输入映射到输出再用数据把参数调到合适的位置。本篇以「预测汽车油耗」为例把线性回归从直觉、公式到训练过程串起来讲清楚。2. 问题定义特征、标签与预测假设我们想根据汽车的重量预测它的燃油效率英里/加仑MPG。手头有这样一份数据重量千磅油耗 MPG标签3.5183.69153.44183.43164.34154.42142.3724把数据画成散点图可以观察到一个清晰的规律车越重油耗MPG往往越低。这不是严格的物理定律而是数据呈现出的统计趋势。在机器学习的语境下概念含义本例中特征Feature模型的输入汽车重量标签Label希望预测的真实值油耗 MPG预测值Prediction模型输出的估计值记作 y’我们的目标是找到一种从「重量」到「油耗」的映射关系使得预测值尽量接近真实标签。3. 线性回归方程3.1 单特征情形中学数学里直线方程是y m x b y mx bymxb其中m mm是斜率b bb是截距。机器学习里习惯写成y ′ b w 1 x 1 y b w_1 x_1y′bw1​x1​各项含义如下符号名称说明y’预测标签模型输出b偏置Bias对应直线截距有时也记作 w0w1权重Weight对应直线斜率衡量特征对预测的影响方向和强度x1特征输入数据训练过程中不会被修改偏置和权重统称为模型参数Parameter。它们不是人工指定的而是在训练阶段由算法从数据中学习得到。对上面的汽车数据拟合出的直线大致满足截距b ≈ 34 b \approx 34b≈34斜率w 1 ≈ − 4.6 w_1 \approx -4.6w1​≈−4.6。模型可写为y ′ 34 ( − 4.6 ) × x 1 y 34 (-4.6) \times x_1y′34(−4.6)×x1​代入一辆 4000 磅即x 1 4.0 x_1 4.0x1​4.0的车y ′ 34 ( − 4.6 ) × 4.0 15.6 y 34 (-4.6) \times 4.0 15.6y′34(−4.6)×4.015.6预测结果约为15.6 MPG。这就是线性回归做预测的基本方式一次乘法、一次加法。3.2 多特征情形真实问题很少只依赖一个特征。预测油耗时还可以引入发动机排量百公里加速时间气缸数马力多特征模型的形式是自然延伸y ′ b w 1 x 1 w 2 x 2 w 3 x 3 w 4 x 4 w 5 x 5 y b w_1 x_1 w_2 x_2 w_3 x_3 w_4 x_4 w_5 x_5y′bw1​x1​w2​x2​w3​x3​w4​x4​w5​x5​每个特征有各自独立的权重。排量和重量通常与 MPG 呈负相关数值越大油耗越低加速时间越长车越「肉」MPG 往往反而更高——这些都可以被不同的w i w_iwi​捕捉。3.3 向量化写法特征一多展开写很冗长。工程实现中更常用向量形式y ′ w T x b y \mathbf{w}^T \mathbf{x} by′wTxb其中x [ x 1 , x 2 , … , x n ] T \mathbf{x} [x_1, x_2, \ldots, x_n]^Tx[x1​,x2​,…,xn​]Tw [ w 1 , w 2 , … , w n ] T \mathbf{w} [w_1, w_2, \ldots, w_n]^Tw[w1​,w2​,…,wn​]T。批量训练时还会把许多样本叠成矩阵一次性算出所有预测值——这是后续用 NumPy、PyTorch 写代码时的标准姿势。4. 训练时到底在更新什么一个常见误区是把「预测值」也当成要学习的对象。实际上对象训练时是否更新偏置 b、权重 wi是— 这是训练的核心特征 xi否— 来自数据集预测值 y’否— 由参数和特征计算得出训练的本质就是在海量可能的参数组合中找到让预测「足够好」的那一组。5. 损失函数如何衡量「够好」5.1 残差与均方误差对每个样本i ii残差Residual是预测值与真实值的差记为e i y i ′ − y i e_i y_i - y_iei​yi′​−yi​残差可正可负直接相加会互相抵消。因此回归任务最常用的损失函数是均方误差MSE, Mean Squared ErrorL 1 N ∑ i 1 N ( y i ′ − y i ) 2 L \frac{1}{N} \sum_{i1}^{N} (y_i - y_i)^2LN1​i1∑N​(yi′​−yi​)2MSE 有几个优点处处可导便于用梯度下降等优化方法对大误差更敏感平方放大促使模型认真对待偏离较远的样本形式简洁与「最小二乘法」在数学上等价。有时也使用均方根误差RMSE即对 MSE 开方R M S E L \mathrm{RMSE} \sqrt{L}RMSEL​其单位与标签一致更易向业务方解释。5.2 从几何直觉理解在单特征情形下最小化 MSE 等价于找一条直线使所有数据点到直线的竖直距离平方和最小——这就是「最小二乘拟合」的几何含义。参数b bb和w 1 w_1w1​确定直线位置损失函数衡量直线与数据的贴合程度。6. 梯度下降如何找到最优参数6.1 核心思路参数空间可以看作一座「地形图」损失函数是海拔高度。训练的目标是走到海拔最低的山谷。梯度下降Gradient Descent的做法很直接随机或按顺序取一组初始参数计算损失函数对各个参数的梯度偏导数梯度指向损失上升最快的方向沿梯度的反方向走一小步更新参数重复直到损失足够小或达到迭代上限。单变量权重w 1 w_1w1​的更新公式w 1 ← w 1 − η ∂ L ∂ w 1 w_1 \leftarrow w_1 - \eta \frac{\partial L}{\partial w_1}w1​←w1​−η∂w1​∂L​偏置b bb同理。η \etaη是学习率Learning Rate控制每步迈多大。6.2 学习率最重要的超参数之一学习率η \etaη不在训练数据中「学」出来而是训练前由人设定的超参数Hyperparameter。学习率情况典型表现过大损失震荡甚至发散参数越过最优点过小收敛极慢训练时间大幅拉长适中损失平稳下降较快逼近最优实践中常采用「先试几个数量级」的策略例如10 − 1 10^{-1}10−1、10 − 2 10^{-2}10−2、10 − 3 10^{-3}10−3观察损失曲线再定夺。线性回归因为损失面相对光滑通常比深度网络更容易调。6.3 批量、随机与小批量按每次更新使用多少样本梯度下降有三种常见变体方法每次更新使用的样本特点批量梯度下降BGD全部 N 个稳定但数据量大时慢随机梯度下降SGD1 个快、有噪声有助于逃离浅局部极小小批量梯度下降Mini-batch一批如 32、64工程上最常用兼顾速度与稳定性现代框架默认基本都是 Mini-batch SGD 及其改进变体如 Adam。线性回归数据量不大时用全部样本做一次 BGD 也完全可行。6.4 收敛与解析解线性回归有一个「捷径」在特征不多、矩阵可逆时可以直接用正规方程Normal Equation算出闭式解不必迭代w ( X T X ) − 1 X T y \mathbf{w} (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{y}w(XTX)−1XTy但当特征维度很高成千上万或数据量极大时矩阵求逆代价过高梯度下降反而更实用。理解梯度下降是为了掌握更复杂模型里通用的优化范式。7. 线性回归的能力边界线性回归强大但不是万能的。认清它的适用边界能避免很多踩坑。7.1 适合的场景特征与标签之间近似线性需要可解释性每个权重直接表示特征贡献作为复杂模型的基线Baseline快速验证数据和特征是否有效。7.2 局限与应对局限说明常见应对只能拟合线性关系对抛物线、周期性等模式力不从心特征工程多项式特征、交叉特征对异常值敏感MSE 会放大大误差的影响换用 MAE 损失或清洗异常点多重共线性特征高度相关时权重不稳定删除冗余特征、L2 正则化外推风险超出训练数据范围的预测不可靠限制预测区间或换更合适的模型例如重量与 MPG 在观测范围内近似线性但若把模型外推到「10 吨重卡」预测结果很可能失真——因为训练数据里根本没有这个区间。8. 一个完整的训练流程回顾把以上内容串成实际工作中的步骤1. 准备数据 - 划分特征 x 与标签 y必要时做归一化 2. 初始化参数 - b、w 置零或随机小值 3. 前向计算 - y b w * x 4. 计算损失 - MSE(y, y) 5. 反向求梯度 - dL/db, dL/dw 6. 更新参数 - 沿梯度反方向走步长由学习率控制 7. 重复 3-6 - 直到收敛 8. 评估与部署 - 在验证集上看 RMSE满意后用于推理其中第 3-6 步就是几乎所有可训练模型共同拥有的「训练循环」。神经网络只是把线性映射换成了多层非线性变换其余骨架不变。9. 小结线性回归用一条直线或高维空间里的一个超平面描述特征与标签的关系。模型本身很简单但训练它的过程——定义损失、算梯度、调学习率、观察收敛——与深度学习并无本质区别。下一篇可以继续深入逻辑回归看看当标签不再是连续数值、而是「是/否」这类分类问题时模型形式和损失函数如何相应变化。系列导航下一篇【机器学习】2—— 线性回归损失函数