当前位置: 首页 > news >正文

【机器学习】(1)—— 线性回归

线性回归:从一条直线到预测模型

目录

  • 线性回归:从一条直线到预测模型
    • 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.518
3.6915
3.4418
3.4316
4.3415
4.4214
2.3724

把数据画成散点图,可以观察到一个清晰的规律:车越重,油耗(MPG)往往越低。这不是严格的物理定律,而是数据呈现出的统计趋势。

在机器学习的语境下:

概念含义本例中
特征(Feature)模型的输入汽车重量
标签(Label)希望预测的真实值油耗 MPG
预测值(Prediction)模型输出的估计值记作 y’

我们的目标,是找到一种从「重量」到「油耗」的映射关系,使得预测值尽量接近真实标签。


3. 线性回归方程

3.1 单特征情形

中学数学里,直线方程是:

y = m x + b y = mx + by=mx+b

其中m mm是斜率,b bb是截距。机器学习里习惯写成:

y ′ = b + w 1 x 1 y' = b + w_1 x_1y=b+w1x1

各项含义如下:

符号名称说明
y’预测标签模型输出
b偏置(Bias)对应直线截距,有时也记作 w0
w1权重(Weight)对应直线斜率,衡量特征对预测的影响方向和强度
x1特征输入数据,训练过程中不会被修改

偏置权重统称为模型参数(Parameter)。它们不是人工指定的,而是在训练阶段由算法从数据中学习得到。

对上面的汽车数据,拟合出的直线大致满足:截距b ≈ 34 b \approx 34b34,斜率w 1 ≈ − 4.6 w_1 \approx -4.6w14.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.0=15.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=b+w1x1+w2x2+w3x3+w4x4+w5x5

每个特征有各自独立的权重。排量和重量通常与 MPG 呈负相关(数值越大,油耗越低);加速时间越长(车越「肉」),MPG 往往反而更高——这些都可以被不同的w i w_iwi捕捉。

3.3 向量化写法

特征一多,展开写很冗长。工程实现中更常用向量形式:

y ′ = w T x + b y' = \mathbf{w}^T \mathbf{x} + by=wTx+b

其中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=yiyi

残差可正可负,直接相加会互相抵消。因此回归任务最常用的损失函数是均方误差(MSE, Mean Squared Error)

L = 1 N ∑ i = 1 N ( y i ′ − y i ) 2 L = \frac{1}{N} \sum_{i=1}^{N} (y'_i - y_i)^2L=N1i=1N(yiyi)2

MSE 有几个优点:

  1. 处处可导,便于用梯度下降等优化方法;
  2. 对大误差更敏感(平方放大),促使模型认真对待偏离较远的样本;
  3. 形式简洁,与「最小二乘法」在数学上等价。

有时也使用均方根误差(RMSE),即对 MSE 开方:

R M S E = L \mathrm{RMSE} = \sqrt{L}RMSE=L

其单位与标签一致,更易向业务方解释。

5.2 从几何直觉理解

在单特征情形下,最小化 MSE 等价于找一条直线,使所有数据点到直线的竖直距离平方和最小——这就是「最小二乘拟合」的几何含义。参数b bbw 1 w_1w1确定直线位置,损失函数衡量直线与数据的贴合程度。


6. 梯度下降:如何找到最优参数

6.1 核心思路

参数空间可以看作一座「地形图」,损失函数是海拔高度。训练的目标,是走到海拔最低的山谷。

梯度下降(Gradient Descent)的做法很直接:

  1. 随机或按顺序取一组初始参数;
  2. 计算损失函数对各个参数的梯度(偏导数),梯度指向损失上升最快的方向;
  3. 沿梯度的反方向走一小步,更新参数;
  4. 重复,直到损失足够小或达到迭代上限。

单变量权重w 1 w_1w1的更新公式:

w 1 ← w 1 − η ∂ L ∂ w 1 w_1 \leftarrow w_1 - \eta \frac{\partial L}{\partial w_1}w1w1ηw1L

偏置b bb同理。η \etaη学习率(Learning Rate),控制每步迈多大。

6.2 学习率:最重要的超参数之一

学习率η \etaη不在训练数据中「学」出来,而是训练前由人设定的超参数(Hyperparameter)

学习率情况典型表现
过大损失震荡甚至发散,参数越过最优点
过小收敛极慢,训练时间大幅拉长
适中损失平稳下降,较快逼近最优

实践中常采用「先试几个数量级」的策略,例如10 − 1 10^{-1}10110 − 2 10^{-2}10210 − 3 10^{-3}103,观察损失曲线再定夺。线性回归因为损失面相对光滑,通常比深度网络更容易调。

6.3 批量、随机与小批量

按每次更新使用多少样本,梯度下降有三种常见变体:

方法每次更新使用的样本特点
批量梯度下降(BGD)全部 N 个稳定,但数据量大时慢
随机梯度下降(SGD)1 个快、有噪声,有助于逃离浅局部极小
小批量梯度下降(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)—— 线性回归:损失函数
http://www.rkmt.cn/news/1514997.html

相关文章:

  • Python函数设计四层跃迁:从能用到敢改的工程实践
  • 新手避坑指南:用Arduino UNO和TB6600驱动42步进电机,从接线到调试的全流程记录
  • 基于PLC的自动物料分拣机器人31(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_可以扫码
  • 计算机毕业设计之django基于Python Web对高校学生宿舍管理的开发与设计
  • 2026年山特UPS电源供应商综合能力评估:行业头部企业横向对比与案例解析 - 优质品牌商家
  • 2026年质量好的东莞企业注册代办/东莞无地址注册公司代办/东莞公司注册代办/东莞营业执照代办客户信赖公司 - 行业平台推荐
  • AI 不可变基础设施与 GitOps 驱动的模型交付:OCI 制品、声明式推理与可复现训练环境深度解析
  • MLOps实战:从数据版本到模型监控的端到端工程化落地
  • 2026年质量好的成都grg构件/成都grg吊顶推荐品牌厂家 - 品牌宣传支持者
  • CLion 2025.1.1 非商业免费版 介绍与完整部署教程
  • 别再手动拼接了!Python处理JSONL文件转JSON的3种实用方法(附完整代码)
  • 记录Linux(wait和waitpid函数)
  • numpy.std的ddof参数:总体标准差与样本标准差的关键分界
  • 如何快速掌握APA第7版格式规范:面向学术写作新手的完整教程
  • 别再只用W7805了!手把手教你给5V稳压电源加装三极管扩流和过压保护(附完整电路图)
  • RustMark v0.2:文档模型 — Rust 枚举、模式匹配与错误处理深度实战
  • DataGrip 2024.1新版本上手:5个隐藏功能让SQL调试和数据分析快人一步
  • SmartWriter v0.3:带研究的写作 — 文档加载与基础 RAG 检索链实战
  • java+vue+SpringBoot漫画之家(程序+数据库+报告+部署教程+答辩指导)
  • 别再只调参了!给ResNet50加上SENet/CBAM/ECA模块,让你的猫狗分类模型涨点明显
  • 2026年口碑好的广州婚介服务/广州婚介平台/广州婚介机构/广州婚介中心热门推荐榜 - 行业平台推荐
  • Claude推理卸载层:零感知成本的动态计算分流技术
  • 2026年铁路道岔采购指南:从煤矿到地铁,这些厂家的道岔值得关注! - 优质品牌商家
  • AccessGuard v0.2:用户与角色管理 — TypeScript 接口、类型别名与函数重载深度实战
  • 用物理直觉压力测试纳维-斯托克斯方程的数学鲁棒性
  • 国内排名前几名的最完整 的ros2快速上手入门教程
  • 数据科学问题为何没有唯一解?四维决策框架实战指南
  • 微信好友关系检测终极指南:3步识别单向好友并清理社交圈
  • TOFU多模态知识图谱基础模型:跨模态令牌化与推理
  • Mythos能力解析:大模型世界建模与约束推理技术