正规方程推导,详细版
推导正规方程(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(θ)=2m1∑i=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(θ)=2m1∑i=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(Xθ−y)T(Xθ−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[(θTXT−yT)(Xθ−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[θTXTXθ−θTXTy−yTXθ+yTy] 乘法展开
- 求导:
我们的目标是找到使 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(θ)=2m1∑i=1m(hθ(x(i))−y(i))2 是一个二次方程,所以他是一个凸函数,在导数为0的时候有最小值。
现在,我们对上式中的每一项关于 θ \theta θ 求导。
- 对于 θ T X T X θ \theta^T X^T X \theta θTXTXθ:
使用矩阵微积分的规则, 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(θTXTXθ)=2XTXθ。
- 对于 − θ T X T y -\theta^T X^T y −θTXTy 和 − y T X θ -y^T X \theta −yTXθ:
这两项是标量的转置,它们实际上是相等的(只是符号相反)。我们可以将它们合并为一个项( − 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 −yTXθ 是标量呢?
-
对于 − θ 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 的矩阵,即一个标量。
-
对于 − y T X θ -y^T X \theta −yTXθ:
-
虽然这个表达式的乘法顺序与上面的不同,但根据矩阵乘法的结合律和分配律,以及 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(−θTXTy−yTXθ)=−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 θ 兼容的向量)。
- 组合导数:
将上述导数组合起来,得到:
∇ θ 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[2XTXθ−2XTy]
= 1 m [ X T X θ − X T y ] = \frac{1}{m} \left[ X^T X \theta - X^T y \right] =m1[XTXθ−XTy]
令导数等于零
为了找到使损失函数最小的 θ \theta θ,我们令导数等于零:
1 m [ X T X θ − X T y ] = 0 \frac{1}{m} \left[ X^T X \theta - X^T y \right] = 0 m1[XTXθ−XTy]=0
X T X θ − X T y = 0 X^T X \theta - X^T y = 0 XTXθ−XTy=0
X T X θ = X T y X^T X \theta = X^T y XTXθ=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 XTXθ=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。
为什么可逆就能求出来结果?
-
定义与性质:
一个矩阵 A A A 是可逆的(或非奇异的),如果存在一个矩阵 A − 1 A^{-1} A−1,使得 A A − 1 = A − 1 A = I AA^{-1} = A^{-1}A = I AA−1=A−1A=I,其中 I I I 是单位矩阵。可逆矩阵的一个重要性质是,对于任何向量 b b b,线性方程组 A x = b Ax = b Ax=b 都有唯一解 x = A − 1 b x = A^{-1}b x=A−1b。 -
应用到正规方程:
在我们的情况下, 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 可逆的条件下)。
-
可逆的条件:
X T X X^T X XTX 可逆的一个充分条件是 X X X 的列向量线性无关(即 X X X 的列满秩)。这意味着 X X X 的列向量不能通过其他列向量的线性组合来表示,从而保证了 X T X X^T X XTX 是一个满秩矩阵,因此是可逆的。 -
求解过程:
当 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 θ 的导数,并令其等于零来找到最优解。
以上过程通过提问文心一言获得,目前在这方面最好用的大模型。
相关文章:
正规方程推导,详细版
推导正规方程(Normal Equation)通常是在线性回归的上下文中进行的。线性回归的目标是找到一个线性模型 h θ ( x ) θ T x h_\theta(x) \theta^T x hθ(x)θTx,使得模型的预测值与实际值之间的差异(通常是均方误差࿰…...
【原创】java+ssm+mysql在线文件管理系统设计与实现
个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…...
cocos Creator + fairyGUI 快速入门
版本 Creator 3.8.x,FairyGUI 2022 大部分内容来自 https://en.fairygui.com/docs/sdk/creator 1.新建cocos项目,根目录运行 npm install --save fairygui-cc 引入 fairyGUI库 2.assets目录之外新建fairyGUI项目 3.fairyGUI中编辑UI 完成后发布到Creato…...
UICollectionView 的UICollectionReusableView复用 IOS18报错问题记录
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath 方法复用报错 报错详情: Terminating app due to uncaught exception NSInternal…...
Ansible Roles与优化
Ansible Roles与优化 Ansible作为一款自动化运维工具,凭借其简洁的语法、强大的功能以及良好的扩展性,在IT运维领域得到了广泛应用。Ansible Roles作为Ansible的核心特性之一,为自动化部署和管理提供了极大的便利。本文将深入探讨Ansible Ro…...
Ubuntu 22.04上安装Miniconda
在Ubuntu 22.04上安装Miniconda,可以按照以下步骤进行: 步骤1:更新系统 首先,更新您的系统软件包: sudo apt update sudo apt upgrade -y步骤2:下载Miniconda安装脚本 访问Miniconda的官方网站或使用以下…...
【MySQL】入门篇—SQL基础:数据定义语言(DDL)
数据定义语言(DDL,Data Definition Language)是SQL(结构化查询语言)的一部分,主要用于定义和管理数据库的结构。 DDL允许用户创建、修改和删除数据库及其对象(如表、索引、视图等)。…...
电影评论网站开发:Spring Boot技术详解
摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了电影评论网站的开发全过程。通过分析电影评论网站管理的不足,创建了一个计算机管理电影评论网站的方案。文章介绍了电影评论网站的系统分析部分&…...
20240817 全志 笔试
文章目录 1、选择题1.11.21.31.41.51.61.71.81.91.101.111.121.131.141.151.161.171.181.191.202、填空题2.12.23、问答题3.14、编程题4.14.2岗位:NO2510 嵌入式软件设计工程师(珠海/广州/西安/深圳) 题型:20 道选择题,2 道填空题,1 道问答题,2 道编程题 1、选择题 1.…...
laravel 查询数据库
数据库准备 插入 三行 不同的数据 自行搭建 laravel 工程 参考 工程创建点击此处 laravel 配置 数据库信息 DB_CONNECTIONmysql #连接什么数据库 DB_HOST127.0.0.1 # 连接 哪个电脑的 ip (决定 电脑 本机) DB_PORT3306 # 端口 DB_DATABASEyanyu…...
【Codeforces】CF 2009 F
Firefly’s Queries #前缀和 #数据结构 #数学 题目描述 Firefly is given an array a a a of length n n n. Let c i c_i ci denote the i i i’th cyclic shift ∗ ^{\text{∗}} ∗ of a a a. She creates a new array b b b such that b c 1 c 2 ⋯ c n b c…...
GTP4聊天记录中letax保存为word
别的不说,GPT4用来看代码很是很爽的,可以让他直接恢复出函数中的数学公式,有的时候为了做笔记,GPT4回复的答案,复制出来使markdown、letax等格式,为了更好的记笔记,可以使用下面的工具将复制…...
vscode调试编译找不到gcc,只有cl,但是检查cmd是对的,控制面板的路径也更改了
🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&am…...
空间解析几何5-空间圆到平面的距离【附MATLAB代码】
目录 理论公式 matlab代码 理论公式 matlab代码 function [dis,P,Q,L]Circle2PlaneDistance(T,R,n,Pn) % output % dis 为最短距离,P为距离最短时圆上的点 Q为P对应的投影点 L为最小值有几个 % input % T为园心到基坐标系的变换矩阵 R为圆半径 n为平面的单位法向…...
[已解决] pycharm添加本地conda虚拟环境 + 配置解释器 - pycharm找不到conda可执行文件
目录 问题: 方法: 补充:创建conda虚拟环境 参考文档:pycharm找不到conda可执行文件怎么办?-CSDN 问题: 1.显示:未为项目配置 Python 解释器 2.想在pycharm中使用本地创建的虚拟环境 方法&a…...
SENT - Single Edge Nibble Transmission for Automotive
SENT 总线的特征和优势 SENT 总线是一种数字信号传输协议,具有更高的传输精度和速度;SENT 总线是单线传输数据,减少信号线,降低成本。加上电源和地线,总共 3 线;SENT 总线具有更强大的诊断功能;…...
2024年软件设计师中级(软考中级)详细笔记【7】面向对象技术(下)23种设计模式(分值10+)
目录 前言阅读前必看 第七章 面向对象技术(下)7.3 设计模式(固定4分)7.3.1 设计模式的要素7.3.2 创建型设计模式7.3.2.1 Abstract Factory(抽象工厂)7.3.2.2 Builder(生成器)7.3.2.3…...
未来人工智能的发展对就业市场的影响 人工智能在生活中的相关
人工智能(Artificial Intelligence),英文缩写为AI.是新一轮科技革命和产业变革的重要驱动力量, 是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学. 人工智能的发展对就业市场的影响主要…...
Oracle EBS 中财务模块
Oracle E-Business Suite (EBS) 提供了全面的财务管理解决方案,涵盖了企业财务活动的各个方面。以下是EBS中主要的财务模块及其功能概述: 总账(General Ledger, GL):Oracle EBS 中 GL 模块的财务流程概览-CSDN博客 总账…...
基于SSM公廉租房维保系统的设计
管理员账户功能包括:系统首页,个人中心,业主管理,维修单位管理,房屋信息管理,维修申报管理,维修完成,房屋维护管理 业主账号功能包括:系统首页,个人中心&…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
