Normal Equation(正规方程) 是线性代数中的一个重要概念,主要用于解决最小二乘问题(Least Squares Problem)。它通过直接求解一个线性方程组,找到线性回归模型的最优参数(如权重或系数)。以下是详细介绍:


1. 定义与数学表达式

给定一个超定方程组(方程数量多于未知数):
A x = b A\mathbf{x} = \mathbf{b} Ax=b
其中:

  • A ∈ R m × n A \in \mathbb{R}^{m \times n} ARm×n m > n m > n m>n)是一个设计矩阵(Design Matrix),
  • x ∈ R n \mathbf{x} \in \mathbb{R}^n xRn 是未知参数向量,
  • b ∈ R m \mathbf{b} \in \mathbb{R}^m bRm 是目标向量(通常不在 A A A 的列空间中)。

由于 A x = b A\mathbf{x} = \mathbf{b} Ax=b 通常无解,Normal Equation 的目标是找到一个近似解 x \mathbf{x} x,使得残差向量 e = b − A x \mathbf{e} = \mathbf{b} - A\mathbf{x} e=bAxL2 范数最小(即最小化误差平方和)。

Normal Equation 的公式为
A T A x = A T b A^T A \mathbf{x} = A^T \mathbf{b} ATAx=ATb
如果 A T A A^T A ATA 可逆,则最优解为:
x = ( A T A ) − 1 A T b \mathbf{x} = (A^T A)^{-1} A^T \mathbf{b} x=(ATA)1ATb


2. 推导方法
方法一:矩阵求导
  1. 定义损失函数(误差平方和):
    J ( x ) = ∥ b − A x ∥ 2 2 = ( b − A x ) T ( b − A x ) J(\mathbf{x}) = \|\mathbf{b} - A\mathbf{x}\|_2^2 = (\mathbf{b} - A\mathbf{x})^T (\mathbf{b} - A\mathbf{x}) J(x)=bAx22=(bAx)T(bAx)
  2. x \mathbf{x} x 求导并令导数为零:
    ∂ J ∂ x = − 2 A T b + 2 A T A x = 0 \frac{\partial J}{\partial \mathbf{x}} = -2A^T \mathbf{b} + 2A^T A \mathbf{x} = 0 xJ=2ATb+2ATAx=0
  3. 得到 Normal Equation:
    A T A x = A T b A^T A \mathbf{x} = A^T \mathbf{b} ATAx=ATb
方法二:几何投影
  1. 几何视角
    • A x A\mathbf{x} Ax b \mathbf{b} b A A A 的列空间(Column Space, C ( A ) C(A) C(A))上的投影 p \mathbf{p} p
    • 残差向量 e = b − p \mathbf{e} = \mathbf{b} - \mathbf{p} e=bp 必须正交于列空间,即:
      A T e = 0 ⇒ A T ( b − A x ) = 0 A^T \mathbf{e} = 0 \quad \Rightarrow \quad A^T (\mathbf{b} - A\mathbf{x}) = 0 ATe=0AT(bAx)=0
    • 由此得到 Normal Equation:
      A T A x = A T b A^T A \mathbf{x} = A^T \mathbf{b} ATAx=ATb

3. 几何解释
  • 列空间与投影
    A A A 的列空间 C ( A ) C(A) C(A) 是所有可能的 A x A\mathbf{x} Ax 组成的子空间。由于 b \mathbf{b} b 不在 C ( A ) C(A) C(A) 中,我们寻找 x \mathbf{x} x 使得 A x A\mathbf{x} Ax b \mathbf{b} b C ( A ) C(A) C(A) 上的投影 p \mathbf{p} p

  • 正交性条件
    残差 e = b − p \mathbf{e} = \mathbf{b} - \mathbf{p} e=bp 必须与列空间正交(即 e ∈ N ( A T ) \mathbf{e} \in N(A^T) eN(AT)),从而导出 Normal Equation。


4. 应用场景

Normal Equation 是线性回归的核心工具,尤其适用于以下情况:

  1. 小规模数据集:当特征数 n n n 较小时(如 n < 10 , 000 n < 10,000 n<10,000),计算 ( A T A ) − 1 (A^T A)^{-1} (ATA)1 的开销较小。
  2. 无需迭代:与梯度下降等迭代方法不同,Normal Equation 直接通过矩阵运算得到解析解。
  3. 理论分析:在数学推导中,Normal Equation 提供了最小二乘解的唯一性、存在性等性质。

5. 注意事项
  1. 矩阵可逆性

    • A T A A^T A ATA 必须是可逆的(即 A A A 列满秩, rank ( A ) = n \text{rank}(A) = n rank(A)=n)。
    • 如果 A T A A^T A ATA 不可逆(如特征间线性相关),则有无穷多解,此时需选择最小范数解(通过伪逆 A † A^\dagger A)。
  2. 计算复杂度

    • 计算 ( A T A ) − 1 (A^T A)^{-1} (ATA)1 的时间复杂度为 O ( n 3 ) O(n^3) O(n3),当 n n n 较大时效率较低。
    • 此时通常改用梯度下降或正则化方法(如岭回归)。
  3. 数值稳定性

    • A A A 接近病态矩阵(条件数很大),可能导致 A T A A^T A ATA 不可逆或结果不稳定。

6. 示例

假设我们有以下数据:
A = [ 1 2 1 3 1 4 ] , b = [ 2 3 4 ] A = \begin{bmatrix} 1 & 2 \\ 1 & 3 \\ 1 & 4 \end{bmatrix}, \quad \mathbf{b} = \begin{bmatrix} 2 \\ 3 \\ 4 \end{bmatrix} A= 111234 ,b= 234

  1. 计算 A T A A^T A ATA A T b A^T \mathbf{b} ATb
    A T A = [ 3 9 9 29 ] , A T b = [ 9 29 ] A^T A = \begin{bmatrix} 3 & 9 \\ 9 & 29 \end{bmatrix}, \quad A^T \mathbf{b} = \begin{bmatrix} 9 \\ 29 \end{bmatrix} ATA=[39929],ATb=[929]
  2. 解 Normal Equation:
    [ 3 9 9 29 ] [ x 1 x 2 ] = [ 9 29 ] \begin{bmatrix} 3 & 9 \\ 9 & 29 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} = \begin{bmatrix} 9 \\ 29 \end{bmatrix} [39929][x1x2]=[929]
    解得 x = [ 0 , 1 ] T \mathbf{x} = [0, 1]^T x=[0,1]T,即最佳拟合直线为 y = 0 + 1 x y = 0 + 1x y=0+1x

7. 总结
项目说明
目标找到使残差 ∣ b − A x ∣ 2 |\mathbf{b} - A\mathbf{x}|_2 bAx2 最小的 x \mathbf{x} x
公式 x = ( A T A ) − 1 A T b \mathbf{x} = (A^T A)^{-1} A^T \mathbf{b} x=(ATA)1ATb
适用场景小规模数据、理论分析、无迭代需求。
局限性计算复杂度高、要求 A T A A^T A ATA 可逆。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/911743.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/911743.shtml
英文地址,请注明出处:http://en.pswp.cn/news/911743.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在架构设计中平衡动态语言与静态语言部署差异的策略分析

在软件架构设计过程中&#xff0c;语言的选型不仅仅关乎开发效率&#xff0c;更直接影响系统的部署速度、运行性能与维护成本。动态语言&#xff08;如 Python、Node.js&#xff09;部署快、开发灵活&#xff1b;静态语言&#xff08;如 Go、Java、Rust&#xff09;性能强、类型…

我的VSCode中那些插件

前言 最近在研究VUE.JS&#xff0c;而VUE官方推荐使用VSCode作为开发工具&#xff0c;因此最近才开始大量使用这个工具。在使用过程中&#xff0c;总会遇到一些视频博主推荐某某插件&#xff0c;于是我都将其安装在我的VSCode上。这里记录一下&#xff0c;仅供参考。 插件列表…

C# 时间格式日期格式使用合集

一、常用整理 C#时间使用整理,DateTime 使用整理_c#时间格式-CSDN博客 C# 本地时间格式&#xff0c;UTC时间格式&#xff0c;GMT时间格式处理 二、 C#如何获取今天零点的时间 C# 获取周一、周日 三、 C#计算两个时间年份月份差 C#时间点字符串转换为日期&#xff0c;当…

Ribbon负载均衡的具体实现原理

Ribbon 是 Netflix 开源的一款客户端负载均衡工具&#xff0c;广泛应用于微服务架构中&#xff0c;用于在客户端选择目标服务实例。 以下是 Ribbon 负载均衡的具体实现原理&#xff1a; 1. 什么是 Ribbon Ribbon 是一个客户端负载均衡器&#xff0c;负责从服务注册中心&#…

iOS APP上架App Store实践:通过自动化流程和辅助工具高效提

在现代开发流程中&#xff0c;持续集成&#xff08;CI&#xff09;已经成为必不可少的环节。对于iOS应用的开发与发布&#xff0c;持续集成不仅限于构建过程&#xff0c;还应该涵盖从代码提交到版本发布的整个生命周期。然而&#xff0c;由于iOS平台对开发环境的限制&#xff0…

3443. K 次修改后的最大曼哈顿距离

3443. K 次修改后的最大曼哈顿距离 题目链接&#xff1a;3443. K 次修改后的最大曼哈顿距离 代码如下&#xff1a; class Solution { public:int maxDistance(string s, int k) {int res 0;// 定义一个大小为 X&#xff08;88&#xff09;的数组&#xff0c;并初始化为 0int…

【Ubuntu】Windows11安装虚拟机超详细图文教程(VMware17.6.1 + ubuntu-24.04.2)

目录 前言 一、准备工作 1、工具安装包 2、获取方式 3、本人的电脑安装环境介绍 二、虚拟机磁盘分区&#xff08;可选&#xff09; 1、分区助手安装 2、为虚拟机准备一个单独的磁盘分区 三、VMware安装 四、ubuntu镜像安装 1、Ubuntu镜像iso文件加载引导 2、Ubuntu…

计算机视觉(Computer Vision, CV)

目录 一、核心任务 二、常见应用场景 三、主流技术框架与工具 四、热门算法简述 五、发展趋势 六、计算机视觉学习路线图&#xff08;从入门到实战&#xff09; 1.阶段总览 2.学习路径详解 阶段一&#xff1a;CV入门基础 学习目标&#xff1a; 推荐内容&#xff1a;…

使用Dagster资产工厂模式高效管理重复ETL任务

本文介绍了如何利用Dagster的资产工厂模式来高效管理和自动化重复的ETL&#xff08;提取、转换、加载&#xff09;任务。通过Python函数和YAML配置文件的结合&#xff0c;我们可以轻松地创建和管理大量相似的资产&#xff0c;同时提高代码的可维护性和可配置性。文章还探讨了如…

浅谈开源在线客服系统与 APP 集成的技术方案与优劣势

在为移动端 App 接入在线客服系统的过程中&#xff0c;我经历了长时间的技术选型探索。最初&#xff0c;我也曾被一些“技术理想主义”选项所吸引&#xff0c;比如让用户自己研发界面我提供 API 以获得最高自由度&#xff0c;或集成 SDK 以追求原生体验。然而&#xff0c;随着项…

prometheus+grafana+MySQL监控

prometheusgrafanaMySQL监控 环境说明 操作前提&#xff1a; 先去搭建Docker部署prometheusgrafana...这篇文章的系统 Docker部署prometheusgrafana...的参考文章&#xff1a; Docker部署prometheusgrafana…-CSDN博客 在的节点服务器上搭建MySQL数据库&#xff08;可以采用直…

多模态+类人认知:Embodied AI迈向AGI的三大瓶颈与突破路径

作者&#xff1a;Yequan Wang&#xff1b;Aixin Sun 摘要 AGI常被视为本质上具有具身特性。随着机器人技术和基础人工智能模型的最新进展&#xff0c;我们正站在一个新时代的门槛上——这一时代以日益通用化的具身人工智能系统为标志。本文通过提出一个涵盖五个层级&#xff…

wpf DataTemplate 宽度和控件宽度一样

wpf DataTemplate 宽度和控件宽度一样 在WPF中,如果你想要一个DataTemplate的宽度与它内部控件的宽度一致,你可以使用几种不同的方法来实现这一点。下面是一些常见的方法: 方法1:使用DataTemplate的Width属性 你可以在DataTemplate中直接设置Width属性,使其与内部控件的…

C#上位机实现报警语音播报

我们在开发C#上位机时&#xff0c;有时候会需要将报警信息通过语音进行播报&#xff0c;今天跟大家分享一下具体的实现过程。 一、组件安装 首先我们创建好一个Windows窗体项目&#xff0c;然后添加System.Speech库引用。 点击引用&#xff0c;右击添加引用&#xff0c;在程…

01-StarRocks安装部署FAQ

StarRocks安装部署FAQ 概述 本文档整理了StarRocks安装部署过程中常见的问题和解决方案,涵盖了环境准备、集群部署、配置优化等各个方面,帮助用户快速解决安装部署过程中遇到的问题。 环境准备FAQ Q1: StarRocks对硬件配置有什么要求? A: StarRocks的硬件配置要求如下:…

MinIO入门教程:从零开始搭建方便快捷的分布式对象存储服务

目录 一、MinIO简介二、环境准备三、MinIO服务部署1. 下载指定版本MinIO镜像2. 启动MinIO容器3. 参数详解 四、访问MinIO控制台1. 在浏览器中打开管理控制台&#xff1a;2. 输用户名和密码登录3. 创建存储桶Bucket4. 设置访问权限为公有5. 上传文件6. 访问文件 一、MinIO简介 …

多卡解决报错torch.distributed.elastic.multiprocessing.errors.ChildFailedError的问题

使用多卡运行 Pytorch出现下面的报错&#xff1a; E0619 10:29:15.774000 5065 site-packages/torch/distributed/elastic/multiprocessing/api.py:874] failed (exitcode: -11) local_rank: 0 (pid: 5184) of binary: /root/miniconda3/bin/python Traceback (most recent ca…

Kubernetes 架构的两种节点

前言 Kubernetes 采用主从(master-node)架构模式&#xff0c;主要由主节点&#xff0c;也称 控制平面(Control Plane)和工作节点(node)组成。 master 节点职责&#xff1a; ‌集群管理‌&#xff1a;负责整个集群的全局决策和状态管理API服务‌&#xff1a;通过 kube-apiser…

数据迷雾中的灯塔:奥威BI+AI数据分析如何照亮企业决策之路

决策进化史&#xff1a;从“盲人摸象”到“智能导航” 在每天83%的中国企业所面临的决策场景中&#xff0c;数据往往沉默不语&#xff0c;无法为管理者提供明确的指引。从决策依赖人工统计的“石器时代”&#xff08;2010年前&#xff09;&#xff0c;到依赖静态报表的“铁器时…

Flutter 与 原生(Android/iOS)通信 Platform Channel

在Flutter中&#xff0c;Platform Channel是实现Flutter与原生平台&#xff08;Android/iOS&#xff09;通信的核心机制&#xff0c;其设计遵循轻量级异步通信原则&#xff0c;用于解决Flutter跨平台开发时与原生功能的交互需求。 一、核心作用 Flutter作为跨平台框架&#x…