正规方程推导,详细版

推导正规方程(Normal Equation)通常是在线性回归的上下文中进行的。线性回归的目标是找到一个线性模型 h θ ( x ) = θ T x h_\theta(x) = \theta^T x hθ(x)=θTx,使得模型的预测值与实际值之间的差异(通常是均方误差)最小。

以下是推导正规方程的详细步骤,每一步都会说明所依据的公式或原理:

1. 定义损失函数

线性回归的损失函数通常是均方误差(Mean Squared Error, MSE):

J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)})^2 J(θ)=2m1i=1m(hθ(x(i))y(i))2

其中:

  • m m m 是样本数量。
  • x ( i ) x^{(i)} x(i) 是第 i i i 个样本的特征向量。
  • y ( i ) y^{(i)} y(i) 是第 i i i 个样本的实际值。
  • h θ ( x ( i ) ) h_\theta(x^{(i)}) hθ(x(i)) 是模型对第 i i i 个样本的预测值。
  • θ \theta θ 是模型的参数向量。

2. 展开损失函数

h θ ( x ( i ) ) h_\theta(x^{(i)}) hθ(x(i)) 替换为 θ T x ( i ) \theta^T x^{(i)} θTx(i),并将损失函数展开:

J ( θ ) = 1 2 m ∑ i = 1 m ( θ s h i z i T x ( i ) − y ( i ) ) 2 J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} (\theta^shiziT x^{(i)} - y^{(i)})^2 J(θ)=2m1i=1m(θshiziTx(i)y(i))2

在推导正规方程的过程中,对损失函数求导是一个关键步骤。这里我们将详细说明如何使用矩阵微积分来求导。

首先,回顾损失函数的向量化表示:

J ( θ ) = 1 2 m ( X θ − y ) T ( X θ − y ) J(\theta) = \frac{1}{2m} (X\theta - y)^T (X\theta - y) J(θ)=2m1(y)T(y)

J ( θ ) = 1 2 m [ ( θ T X T − y T ) ( X θ − y ) ] J(\theta) = \frac{1}{2m} \left[ (\theta^T X^T - y^T)(X\theta - y) \right] J(θ)=2m1[(θTXTyT)(y)] 依据矩阵转置公式: ( A + B ) T = A T + B T (A+B)T=A^T+B^T (A+B)T=AT+BT, ( A B ) T = B T A T (AB)^T=B^TA^T (AB)T=BTAT

= 1 2 m [ θ T X T X θ − θ T X T y − y T X θ + y T y ] = \frac{1}{2m} \left[ \theta^T X^T X \theta - \theta^T X^T y - y^T X \theta + y^T y \right] =2m1[θTXTθTXTyyT+yTy] 乘法展开

  1. 求导
    我们的目标是找到使 J ( θ ) J(\theta) J(θ) 最小的 θ \theta θ。为此,我们需要对 J ( θ ) J(\theta) J(θ) 关于 θ \theta θ 求导。 因为最开始我们的式子 J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)})^2 J(θ)=2m1i=1m(hθ(x(i))y(i))2 是一个二次方程,所以他是一个凸函数,在导数为0的时候有最小值。

现在,我们对上式中的每一项关于 θ \theta θ 求导。

  • 对于 θ T X T X θ \theta^T X^T X \theta θTXT

使用矩阵微积分的规则, d d θ ( θ T A θ ) = 2 A θ \frac{d}{d\theta} (\theta^T A \theta) = 2A\theta dθd(θTAθ)=2Aθ(其中 A A A 是对称矩阵)。

因此, d d θ ( θ T X T X θ ) = 2 X T X θ \frac{d}{d\theta} (\theta^T X^T X \theta) = 2X^T X \theta dθd(θTXT)=2XT

  • 对于 − θ T X T y -\theta^T X^T y θTXTy − y T X θ -y^T X \theta yT

这两项是标量的转置,它们实际上是相等的(只是符号相反)。我们可以将它们合并为一个项( − 2 θ T X T y -2\theta^T X^T y 2θTXTy),并注意到 d d θ ( − θ T a ) = − a \frac{d}{d\theta} (-\theta^T a) = -a dθd(θTa)=a(其中 a a a 是常数向量, 这里a是 X T y X^Ty XTy)。 为什么这两项相等呢? 读者可以自行找三个矩阵乘一下试试, 为什么。 − θ T X T y -\theta^T X^T y θTXTy − y T X θ -y^T X \theta yT 是标量呢?

  1. 对于 − θ T X T y -\theta^T X^T y θTXTy

    • θ T \theta^T θT 是一个 1 × n 1 \times n 1×n 的矩阵(或向量)。
    • X T X^T XT 是一个 n × m n \times m n×m 的矩阵。
    • y y y 是一个 m × 1 m \times 1 m×1 的矩阵(或向量)。

    θ T \theta^T θT X T X^T XT 相乘时,结果是一个 1 × m 1 \times m 1×m 的矩阵。然后,这个 1 × m 1 \times m 1×m 的矩阵再与 y y y 相乘(这里实际上是行向量与列向量的点积),结果是一个 1 × 1 1 \times 1 1×1 的矩阵,即一个标量。

  2. 对于 − y T X θ -y^T X \theta yT

    • 虽然这个表达式的乘法顺序与上面的不同,但根据矩阵乘法的结合律和分配律,以及 X T X^T XT(如果 X X X 是实数矩阵)与 X X X 的对称性(如果 X X X 是对称矩阵,则 X = X T X = X^T X=XT,但在这里我们不需要 X X X 是对称的,只需要关注维度),这个表达式也可以化简为一个标量。然而,更直接的理解是:

      • y T y^T yT 是一个 1 × m 1 \times m 1×m 的矩阵。
      • X X X 是一个 m × n m \times n m×n 的矩阵。
      • θ \theta θ 是一个 n × 1 n \times 1 n×1 的矩阵。

      y T y^T yT X X X 相乘时,结果是一个 1 × n 1 \times n 1×n 的矩阵。然后,这个 1 × n 1 \times n 1×n 的矩阵再与 θ \theta θ 相乘(同样是行向量与列向量的点积,但在这里是通过矩阵乘法隐含地进行的),结果同样是一个 1 × 1 1 \times 1 1×1 的矩阵,即一个标量。

因此, d d θ ( − θ T X T y − y T X θ ) = − X T y − ( X T y ) T = − 2 X T y \frac{d}{d\theta} (-\theta^T X^T y - y^T X \theta) = -X^T y - (X^T y)^T = -2X^T y dθd(θTXTyyT)=XTy(XTy)T=2XTy(注意: ( X T y ) T = y T X (X^T y)^T = y^T X (XTy)T=yTX,但在这里我们不需要转置,因为 X T y X^T y XTy 已经是一个与 θ \theta θ 兼容的向量)。

  1. 组合导数

将上述导数组合起来,得到:

∇ θ J ( θ ) = 1 2 m [ 2 X T X θ − 2 X T y ] \nabla_\theta J(\theta) = \frac{1}{2m} \left[ 2X^T X \theta - 2X^T y \right] θJ(θ)=2m1[2XT2XTy]

= 1 m [ X T X θ − X T y ] = \frac{1}{m} \left[ X^T X \theta - X^T y \right] =m1[XTXTy]

令导数等于零

为了找到使损失函数最小的 θ \theta θ,我们令导数等于零:

1 m [ X T X θ − X T y ] = 0 \frac{1}{m} \left[ X^T X \theta - X^T y \right] = 0 m1[XTXTy]=0

X T X θ − X T y = 0 X^T X \theta - X^T y = 0 XTXTy=0

X T X θ = X T y X^T X \theta = X^T y XT=XTy

如果 X T X X^T X XTX 是可逆的,我们可以解出 θ \theta θ

θ = ( X T X ) − 1 X T y \theta = (X^T X)^{-1} X^T y θ=(XTX)1XTy

这一步推导过程如下:
在推导正规方程的过程中,我们得到了一个线性方程组:

X T X θ = X T y X^T X \theta = X^T y XT=XTy

这个方程组是一个 n × n n \times n n×n 的矩阵 X T X X^T X XTX 与一个 n × 1 n \times 1 n×1 的向量 θ \theta θ 的乘积等于另一个 n × 1 n \times 1 n×1 的向量 X T y X^T y XTy

为什么可逆就能求出来结果?

  1. 定义与性质
    一个矩阵 A A A 是可逆的(或非奇异的),如果存在一个矩阵 A − 1 A^{-1} A1,使得 A A − 1 = A − 1 A = I AA^{-1} = A^{-1}A = I AA1=A1A=I,其中 I I I 是单位矩阵。可逆矩阵的一个重要性质是,对于任何向量 b b b,线性方程组 A x = b Ax = b Ax=b 都有唯一解 x = A − 1 b x = A^{-1}b x=A1b

  2. 应用到正规方程
    在我们的情况下, A = X T X A = X^T X A=XTX。如果 X T X X^T X XTX 是可逆的,那么我们可以直接通过乘以 X T X X^T X XTX 的逆矩阵来求解 θ \theta θ

    θ = ( X T X ) − 1 X T y \theta = (X^T X)^{-1} X^T y θ=(XTX)1XTy

    这个表达式给出了 θ \theta θ 的唯一解(在 X T X X^T X XTX 可逆的条件下)。

  3. 可逆的条件
    X T X X^T X XTX 可逆的一个充分条件是 X X X 的列向量线性无关(即 X X X 的列满秩)。这意味着 X X X 的列向量不能通过其他列向量的线性组合来表示,从而保证了 X T X X^T X XTX 是一个满秩矩阵,因此是可逆的。

  4. 求解过程
    X T X X^T X XTX 可逆时,我们实际上是在执行以下步骤来求解 θ \theta θ

    • 首先,计算 X T y X^T y XTy,这是一个线性变换,将 y y y 投影到 X X X 的列空间上(或者更准确地说,是 X X X 的行空间,因为 X T X^T XT X X X 的转置)。
    • 然后,通过乘以 ( X T X ) − 1 (X^T X)^{-1} (XTX)1,我们实际上是在“撤销” X T X X^T X XTX 对某个向量所做的变换,从而找到原始参数向量 θ \theta θ

总结

在求导过程中,我们使用了矩阵微积分的规则,特别是关于二次型和线性项的导数。通过仔细展开和组合这些项,我们得到了损失函数关于 θ \theta θ 的导数,并令其等于零来找到最优解。

以上过程通过提问文心一言获得,目前在这方面最好用的大模型。

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

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

相关文章

GitHub每日最火火火项目(10.19)

项目名称:kokkos/kokkos 项目介绍:kokkos/kokkos 是 Kokkos C性能可移植编程生态系统。它专注于提供并行执行和内存抽象的编程模型。在现代计算中,充分利用硬件的并行处理能力对于提高程序性能至关重要。kokkos 为 C开发者提供了强大的工具&a…

分布式篇(分布式事务)(持续更新迭代)

一、事务 1. 什么是事务 2. 事务目的 3. 事务的流程 4. 事务四大特性 原子性(Atomicity) 一致性(Consistency) 持久性(Durability) 隔离性(Isolation) 5. MySQL VS Oracle …

016_基于python+django网络爬虫及数据分析可视化系统2024_kyz52ks2

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍:CodeMentor毕业设计领航者、全网关注者30W群落,InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者,博客领航之星、开发者头条/腾讯云/AW…

AMBA总线AXI与CHI特性接口比对

AXI(Advanced eXtensible Interface) 和 CHI(Coherent Hub Interface) 协议的接口和特性区别的对比表: 特性/接口AXI 协议CHI 协议协议类型内存映射接口,专注于数据传输和外设通信缓存一致性接口&#xff…

IE11删除hao360主页

欲删 hao.360.com,hao360.mainshe.com 主页,必先删除注册表键: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\EUPP HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main "Start Page" "Default_Pag…

87. 多边形轮廓Shape(圆弧)

先掌握上节课关于Shape内容,再继续学习本节课关于Shape圆弧的介绍。 圆弧方法.arc() 圆弧方法.arc()使用方式和原来学习过的圆弧曲线ArcCurve整体相似,区别在于圆心定位方式有差异。 圆弧.arc()参数的圆心坐标是相对当前.currentPoint而言,而不是坐标原…

0x12 Dapr Dashboard configurations 未授权访问漏洞 CVE-2022-38817

参考: Dapr Dashboard configurations 未授权访问漏洞 CVE-2022-38817 | PeiQi文库 (wgpsec.org)免责声明 欢迎访问我的博客。以下内容仅供教育和信息用途: 合法性:我不支持或鼓励非法活动。请确保遵守法律法规。信息准确性:尽管我尽力提供准确的信息,但不保证其完全准确…

斜视角,视角和入射角

注意分辨率中的2 在;雷达的径向,分辨率(时间)就是脉冲宽度/2

SAP 控制生产订单发料数量不能超过生产订单预留数量

SAP 控制生产订单发料数量不能超过生产订单预留数量 业务场景前台操作1、创建生产订单---CO012、生产订单发料---MIGO3、系统后台配置业务场景 正常生产订单进行投料的根据生产订单组件进行投料,比如生产订单组件数量是100PCS,那在做工单发料的时候MIGO带出的默认发料数量就…

机器学习(MachineLearning)(8)——模型评估与优化

机器学习(MachineLearning)(1)——机器学习概述 机器学习(MachineLearning)(2)——线性回归 机器学习(MachineLearning)(3)——决策树…

Linux_进程控制

一&#xff1a;进程创建 fork()函数创建新进程 #include <unistd.h> pid_t fork(void); 返回值&#xff1a;自进程中返回0&#xff0c;父进程返回子进程id&#xff0c;出错返回-1 进程调用fork&#xff0c;当控制转移到内核中的fork代码后&#xff0c;内核做&#xff1a;…

Spring Boot Web框架:智慧社区设计新思路

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…

cocos Creator + fairyGUI 快速入门

版本 Creator 3.8.x&#xff0c;FairyGUI 2022 大部分内容来自 https://en.fairygui.com/docs/sdk/creator 1.新建cocos项目&#xff0c;根目录运行 npm install --save fairygui-cc 引入 fairyGUI库 2.assets目录之外新建fairyGUI项目 3.fairyGUI中编辑UI 完成后发布到Creato…

uniapp,获取头部高度

头部自定义时候&#xff0c;设置获取安全区域&#xff0c;可以用 uni.getSystemInfoSync();接口。 <view class"statusBar" :style"{height:statusBarHeightpx}"> let SYSuni.getSystemInfoSync(); let statusBarHeightref(SYS.statusBarHeight) …

SAP_FI_学习树状图

SAP FI学习 │ ├── SAP FI基础知识 │ ├── SAP FI概述 │ ├── 财务会计的基本概念 │ └── SAP FI的主要功能 │ ├── 核心组件 │ ├── 会计凭证处理 │ │ ├── 凭证类型 │ │ ├── 借贷记账 │ │ └── 凭证审核流程 │ ├──…

Python基础——类与对象

类与对象的理解&#xff1a; 在程序中我们将类看作是设计图纸&#xff0c;对象则是根据这个图纸生产的产品。面向对象编程就是使用对象编程&#xff0c;在类中我们定义成员属性和方法。 来看下面这个例子&#xff0c;创建student类&#xff0c;定义对象并对属性赋值。 class S…

解决linux服务器磁盘占满问题(详细,有效,100%解决)

应用场景&#xff1a; 在我们的日常开发中&#xff0c;我们的服务器总是在不知不觉中磁盘莫名奇妙少了很多空间&#xff0c;或者被占满了&#xff0c;如果这时候要想要存储什么文件&#xff0c;突然发现空间不够了。但我们通常也不知道那些文件占用的空间大&#xff0c;这时候…

Vue是一套构建用户界面的渐进式框架,常用于构建单页面应用

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把手教你开发炫酷的vbs脚本制作(完善中……&#xff09; 4、牛逼哄哄的 IDEA编程利器技巧(编写中……&#xff09; 5、面经吐血整理的 面试技…

红黑树的理解与实现(详解)

相关的数据结构&#xff1a; 搜索二叉树-CSDN博客 AVL树的创建与检测-CSDN博客 个人主页&#xff1a;敲上瘾-CSDN博客 个人专栏&#xff1a;游戏、数据结构、c语言基础、c学习、算法 目录 一、红黑树规则&#xff1a; 二、红黑树的插入 1.变色 2.单旋变色 3.双旋变色 三、…

WebGoat SQL Injection (intro) 源码分析

首先了解 java 中 mysql 的连接&#xff1a;java连接Mysql WebGoat SQL Injection (intro) 10 根据提示&#xff1a;下面两个输入框只有一个受到 sql 注入攻击。题目要求是检索到所有数据 发现请求路径为 SqlInjection/assignment5b 定位到所在文件如下&#xff0c;根据代码…