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

线性回归的法方程:原理与解析

核心定义

法方程是为解决线性回归问题而设计的一种数学方法,它通过直接求解一个线性方程组来找到一组最优参数,使得成本函数(Cost Function)(通常是均方误差)的值最小化。

它是一种闭式解(Closed-form Solution),或者说解析解,意味着我们可以直接通过公式计算得到最优解,而不需要使用像梯度下降那样的迭代优化算法。


数学表述

对于一个线性回归模型,我们假设假设函数(Hypothesis Function)为:
hθ(x) = θ₀ + θ₁x₁ + θ₂x₂ + ... + θₙxₙ

其中:

  • θ 是我们需要求解的参数向量 [θ₀, θ₁, ..., θₙ]ᵀ
  • x₁, x₂, ..., xₙ 是特征变量。

我们有 m 个训练样本。

法方程的解由以下公式给出:
θ = (XᵀX)⁻¹Xᵀy

这个公式就是法方程的核心。


公式组成部分详解

让我们来分解这个公式 θ = (XᵀX)⁻¹Xᵀy 的每个部分:

  1. X (设计矩阵 - Design Matrix):

    • 这是一个 m x (n+1) 维的矩阵。m 是样本数量,n 是特征数量(注意:这里包含了偏置项 θ₀ 对应的特征)。
    • 矩阵的每一行代表一个训练样本,每一列代表一个特征。
    • 第一列通常全部为 1,对应于参数 θ₀(截距项)。
    • 例如,如果有两个特征 (x₁, x₂) 和 3 个样本 (m=3),设计矩阵 X 看起来像这样:
      X = [1, x₁⁽¹⁾, x₂⁽¹⁾][1, x₁⁽²⁾, x₂⁽²⁾][1, x₁⁽³⁾, x₂⁽³⁾]
      
  2. y (目标变量向量):

    • 这是一个 m x 1 维的列向量,包含了所有训练样本对应的真实值(标签)。
    • y = [y⁽¹⁾, y⁽²⁾, ..., y⁽ᵐ⁾]ᵀ
  3. Xᵀ (X 的转置):

    • 这是一个 (n+1) x m 维的矩阵。
  4. XᵀX:

    • XᵀX 相乘,得到一个 (n+1) x (n+1) 维的方阵。这个矩阵在推导中源于对成本函数求导并设其为零。
  5. (XᵀX)⁻¹ (XᵀX 的逆):

    • 这是求解方程的关键一步。前提是 XᵀX 必须是可逆的(即满秩矩阵)。
  6. Xᵀy:

    • Xᵀ 与向量 y 相乘,得到一个 (n+1) x 1 维的列向量。

最终,将 (XᵀX)⁻¹Xᵀy 相乘,就得到了最优的参数向量 θ,其维度为 (n+1) x 1


几何解释 / 为什么叫“法方程”?

这个名字来源于它的几何意义。对于线性回归,我们是在寻找一个超平面来最佳地拟合数据点。

  • “残差向量” (y - Xθ) 代表了真实值 y 和预测值 之间的差距。
  • 最优解 θ 的一个关键性质是:残差向量与所有特征向量所张成的空间(列空间)正交
  • 这意味着残差向量与每一个特征向量(包括全为1的截距项特征)的点积都为0。用数学表达就是:
    Xᵀ (y - Xθ) = 0
  • 将这个方程重新排列,就得到了法方程:
    XᵀXθ = Xᵀy
  • 这里的 “Normal” 指的是正交(Orthogonal)垂直(Perpendicular) 的意思,即残差与特征空间垂直。所以 “Normal Equation” 更准确的翻译是 “正规方程”“正交方程”

优缺点

优点:

  • 无需选择学习率:不像梯度下降需要手动设置超参数学习率 α。
  • 无需迭代:一次计算即可得到精确解,没有收敛问题。
  • 概念清晰:是一个直接的数学解决方案。

缺点:

  • 计算成本高:当特征数量 n 非常大时(例如 >10,000),计算 (XᵀX)⁻¹ 的复杂度非常高,大约是 O(n³)。对于现代机器学习中的大规模数据集,这几乎是不可行的。
  • 可能不可逆:如果特征之间存在线性相关性(多重共线性),或者样本数量少于特征数量 (m < n),则 XᵀX 将是奇异矩阵(不可逆)。此时需要使用伪逆等技术。

总结

方面描述
定义一种用于线性回归的解析解方法,通过公式 θ = (XᵀX)⁻¹Xᵀy 直接计算最优参数。
目的最小化成本函数(均方误差)。
名字由来源于其几何意义:最优解使得残差向量与所有特征向量正交(Normal)。
适用场景特征数量 n 相对较小(例如几千以内)的线性回归问题。
替代方案当特征数量很大时,梯度下降及其变体(如随机梯度下降)是更有效的选择。

因此,法方程是机器学习工具箱中一个非常重要且基础的工具,特别适用于中小规模的数据集。

http://www.dtcms.com/a/356017.html

相关文章:

  • 复习笔记11
  • 【K8s】整体认识K8s之pod
  • 【Git】Git 常用指令
  • 使用华为 USG6000防火墙配置安全策略
  • 今日行情明日机会——20250828
  • 驾驭巨量数据:HTTP 协议与大文件传输的多种策略
  • 【Python开源环境】Anaconda/Miniconda
  • 印度尼西亚数据源 PHP 对接文档
  • 从零搭建安全帽检测(8)— 泛化性检验:构建独立测试集与模型性能公正评估
  • 动态加载和异步调用tasklet/workqueue day63 ay64
  • 卷积神经网络搭建及应用
  • 对象之间属性拷贝(Bean Mapping)的工具MapStruct 和 BeanUtils
  • 多据点协作下的数据库权限与版本管理实战
  • BeforeEach与AfterEach注解的使用
  • React学习教程,从入门到精通, ReactJS - 安装:初学者指南(3)
  • iPhone17新品曝光!未来已来主题发布会即将登场
  • CSS入门学习
  • Vim 相关使用
  • Dify 从入门到精通(第 61/100 篇):Dify 的监控与日志分析(进阶篇)
  • 笔记本电脑蓝牙搜索不到设备-已解决
  • LoRA加入嵌入层、及输出头解析(63)
  • 实测阿里图像编辑模型Qwen-Image-Edit:汉字也能无痕修改(附实测案例)
  • 【 MYSQL | 基础篇 函数与约束 】
  • 响应式编程之Flow框架
  • cmd 中设置像 linux 一样设置别名(alias)
  • Xshell自动化脚本大赛实战案例及深度分析
  • 谷歌RecLLM,大模型赋能对话推荐算法系统
  • TUN模式端口冲突 启动失败如何解决?
  • hintcon2025No Man‘s Echo
  • 【Web安全】反序列化安全漏洞全解析:从原理到实战测试指南