线性代数|机器学习-P10最小二乘法的四种方案

文章目录

  • 1. 概述
  • 2. SVD奇异值分解
  • 3. 最小二乘法方程解
  • 4. 最小二乘法图像解释
  • 5. Gram-Schmidt

1. 概述

当我们需要根据一堆数据点去拟合出一条近似的直线的时候,就会用到 最小二乘法 .根据矩阵A的情况,有如下四种方法

  • 在r = n = m 时,SVD奇异值分解, A = U Σ V T A=U\Sigma V^T A=UΣVT,伪逆矩阵 A + = V Σ − 1 U T A^{+}=V\Sigma^{-1}U^T A+=VΣ1UT
  • 在矩阵A列满秩的情况下(r=n),直接用方程 A T A x ^ = A T b → x ^ = ( A T A ) − 1 A T b A^TA\hat{x}=A^Tb\rightarrow \hat{x}=(A^TA)^{-1}A^Tb ATAx^=ATbx^=(ATA)1ATb
  • 在条件数 σ 1 σ r \frac{\sigma_1}{\sigma_r} σrσ1太大时,通过Gram-Schmidt生成一个正交列向量, A = Q R → x ^ = R − 1 Q T b A=QR\rightarrow \hat{x}=R^{-1}Q^Tb A=QRx^=R1QTb,通过消除后得到可以求逆的 R − 1 R^{-1} R1
  • 加惩罚项, ( A T A + δ 2 I ) x ^ = A T b → x ^ = ( A T A + δ 2 I ) − 1 A T b (A^TA+\delta ^2 I)\hat{x}=A^Tb\rightarrow \hat{x}=(A^TA+\delta ^2 I)^{-1}A^Tb (ATA+δ2I)x^=ATbx^=(ATA+δ2I)1ATb,通过在对角线上加一个趋近于0的 δ 2 \delta ^2 δ2保证矩阵 ( A T A + δ 2 I ) (A^TA+\delta ^2 I) (ATA+δ2I)可逆,这样通过方程就可以得到想要的 x ^ \hat{x} x^

2. SVD奇异值分解

假设我们矩阵A可逆,那么我们就可以直接得到矩阵A的逆,那么此时的矩阵A的伪逆就等于矩阵A的逆
当矩阵 A 可逆 → A + = A − 1 \begin{equation} 当矩阵A可逆\rightarrow A^{+}=A^{-1} \end{equation} 当矩阵A可逆A+=A1
将矩阵A通过奇异值SVD分解可得如下:
A = U Σ V T , A T = V Σ T U T \begin{equation} A=U\Sigma V^T,A^T=V\Sigma^TU^T \end{equation} A=UΣVT,AT=VΣTUT

  • 得到 A A T , A T A AA^T,A^TA AAT,ATA
    A A T = U Σ Σ T U T , A T A = V Σ T Σ V T \begin{equation} AA^T=U\Sigma\Sigma^T U^T,A^TA=V\Sigma^T\Sigma V^T \end{equation} AAT=UΣΣTUT,ATA=VΣTΣVT
  • A A T AA^T AAT可以看出矩阵A右乘以 A T A^T AT,所以得到结果为列空间向量,所以U为列空间基;同理 A T A A^TA ATA可以看出矩阵A左乘以 A T A^T AT,所以结果为行空间向量,所以V为行空间基。那么我们可以通过 A v i = σ i u i Av_i=\sigma_i u_i Avi=σiui来对看作是行空间基 v i v_i vi 通过 A v i Av_i Avi变换后直接得到列空间基 σ i u i \sigma_i u_i σiui,同理可得, A T u i = σ i v i A^Tu_i=\sigma_i v_i ATui=σivi可以看作是列空间基 u i u_i ui,通过 A T u i A^Tu_i ATui变换后直接得到行空间基 σ i v i \sigma_i v_i σivi,那么对于行空间(r个基向量)和列空间(r个基向量)之间可以通过 A , A T A,A^T A,AT进行转换
    A v i = σ i u i , A T u i = σ i v i → A + = A T \begin{equation} Av_i=\sigma_iu_i,A^Tu_i=\sigma_iv_i\rightarrow A^{+}=A^T \end{equation} Avi=σiui,ATui=σiviA+=AT
    在这里插入图片描述
  • 通过奇异值分解可得:
    A = U Σ V T = [ u 1 u 2 ⋯ u m ] [ σ 1 σ 2 ⋱ σ r 0 ] [ v 1 T v 2 T ⋮ v n T ] \begin{equation} A=U\Sigma V^T=\begin{bmatrix}u_1&u_2&\cdots &u_m\end{bmatrix}\begin{bmatrix}\sigma_1\\\\&\sigma_2\\\\&&\ddots\\\\&&&\sigma_r\\\\&&&&0\end{bmatrix}\begin{bmatrix}v_1^T\\\\v_2^T\\\\\vdots \\\\v_n^T\end{bmatrix} \end{equation} A=UΣVT=[u1u2um] σ1σ2σr0 v1Tv2TvnT
  • 将矩阵A求逆可得:
    A − 1 = V Σ − 1 U T = V [ σ 1 − 1 σ 2 − 1 ⋱ σ r − 1 0 − 1 ] U T \begin{equation} A^{-1}=V\Sigma^{-1} U^T=V\begin{bmatrix}\sigma_1^{-1}\\\\&\sigma_2^{-1}\\\\&&\ddots\\\\&&&\sigma_r^{-1}\\\\&&&&0^{-1}\end{bmatrix}U^T \end{equation} A1=VΣ1UT=V σ11σ21σr101 UT
    Σ Σ − 1 = [ 1 1 ⋱ 1 0 ⋱ 0 ] \begin{equation} \Sigma\Sigma^{-1}=\begin{bmatrix}1\\\\&1\\\\&&\ddots\\\\&&&1\\\\&&&&0\\\\&&&&&\ddots\\\\&&&&&&0\end{bmatrix} \end{equation} ΣΣ1= 11100
  • 我们发现 0 − 1 0^{-1} 01根本不存在,所以奇异值分解直接求伪逆 A − 1 A^{-1} A1也出问题了。出问题的点在于对于特征值为0时候,无法求0的倒数,那就是所如果我们不用零空间的向量和其0特征值,只有行和列空间里面的向量,那么就没这个问题了,这就是Gram-Schmidt的思路,从矩阵A的列空间中挑选向量u_1,其他向量 m 1 m_1 m1 不是列空间的,那就通过正交化Gram-Schmidt 将其变换为 m 1 → u 2 m_1\rightarrow u_2 m1u2,这样我们就能得到一个可逆矩阵M,这样我们就能通过公式 M − 1 M^{-1} M1直接计算所需要的 x ^ \hat{x} x^

3. 最小二乘法方程解

我们知道,当我们有一个方程 A x = b Ax=b Ax=b时,我们得到的是一堆数据点,我们需要拟合一个直线,使得 ∣ ∣ A x ^ − b ∣ ∣ 2 2 = ( A x ^ − b ) 2 ||A\hat{x}-b||_2^2=(A\hat{x}-b)^2 ∣∣Ax^b22=(Ax^b)2 值最小,所以我们得到如下方程:
y = ( A x − b ) 2 = ( A x − b ) T ( A x − b ) = ( x T A T − b T ) ( A x − b ) \begin{equation} y=(Ax-b)^2=(Ax-b)^T(Ax-b)=(x^TA^T-b^T)(Ax-b) \end{equation} y=(Axb)2=(Axb)T(Axb)=(xTATbT)(Axb)

  • 整理可得:
    y = x T A T A x − x T A T b − b T A x + b T b \begin{equation} y=x^TA^TAx-x^TA^Tb-b^TAx+b^Tb \end{equation} y=xTATAxxTATbbTAx+bTb
  • 因为 b T A x b^TAx bTAx为常数,所以得到 x T A T b = b T A x x^TA^Tb=b^TAx xTATb=bTAx
    y = x T A T A x − 2 b T A x + b T b → ∂ y ∂ x = ∂ x T A T A x ∂ x − 2 ∂ b T A x ∂ x \begin{equation} y=x^TA^TAx-2b^TAx+b^Tb\rightarrow \frac{\partial y}{\partial x}= \frac{\partial x^TA^TAx}{\partial x}-2 \frac{\partial b^TAx}{\partial x} \end{equation} y=xTATAx2bTAx+bTbxy=xxTATAx2xbTAx
  • 根据矩阵求导可得,注意转置符号,别漏了
    ∂ x T A T A x ∂ x = 2 A T A x ; − 2 ∂ b T A x ∂ x = A T b \begin{equation} \frac{\partial x^TA^TAx}{\partial x}=2A^TAx;-2 \frac{\partial b^TAx}{\partial x}=A^Tb \end{equation} xxTATAx=2ATAx;2xbTAx=ATb
  • 所以求导公式可以整理得到:
    ∂ y ∂ x = 2 A T A x − 2 A T b = 0 → A T A x ^ = A T b \begin{equation} \frac{\partial y}{\partial x}=2A^TAx-2A^Tb=0\rightarrow A^TA\hat{x}=A^Tb \end{equation} xy=2ATAx2ATb=0ATAx^=ATb
  • 是不是很神奇,用矩阵求导得到的结果,居然是跟我们用投影法一样的,如果要满足求出上述的 x ^ \hat{x} x^,也就需要 A T A A^TA ATA 可逆,也就是需要矩阵A满秩,所以跟以前对上来了。
  • 当矩阵A列满秩,所以 A T A A^TA ATA 可逆,方程有解如下:
    x ^ = ( A T A ) − 1 A T b \begin{equation} \hat{x}=(A^TA)^{-1}A^Tb \end{equation} x^=(ATA)1ATb

4. 最小二乘法图像解释

假设我们有一个矩阵A和方程 A x = b Ax=b Ax=b,求解最优 b ^ \hat{b} b^?

  • 从四个子空间可以看出,我们画出任意向量b,如下图所示:
    当我们要求的向量b不在由矩阵A的列向量组成的空间时候,我们其实无法得到正确的解,那么怎么办呢?如果我们将向量b分解,一部分通过投影可得向量 p = A x ^ p=A\hat{x} p=Ax^,其在矩阵A的列空间中,另外一部分就是e= A x − b Ax-b Axb,只有投影上去了,我们才能够根据向量p来求得近似的解 x ^ \hat{x} x^
    在这里插入图片描述

5. Gram-Schmidt

Gram-Schmidt 的作用是将矩阵A进行正交分解为 A = Q R A=QR A=QR,本身也是通过投影后相减得到垂直向量,这样通过Gram-Schmidt 变换后的矩阵都正交,得到一个可逆矩阵Q和R
A = Q R , A T = R T Q T , A T A x ^ = A T b → R T Q T Q R x ^ = R T Q T b → R x ^ = Q T b \begin{equation} A=QR,A^T=R^TQ^T,A^TA\hat{x}=A^Tb\rightarrow R^TQ^TQR\hat{x}=R^TQ^Tb\rightarrow R\hat{x}=Q^Tb \end{equation} A=QR,AT=RTQT,ATAx^=ATbRTQTQRx^=RTQTbRx^=QTb

  • 整理可得:
    x ^ = R − 1 Q T b \begin{equation} \hat{x}=R^{-1}Q^Tb \end{equation} x^=R1QTb

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java Web学习笔记30——打包部署

打包: 到资源管理器中再看下: 将这些文件压缩成一个zip文件,然后到nginx的html目录中执行unzip 解压即可。 部署: Nginx:Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代…

SprirngBoot+Vue房屋租赁系统(前后端分离)

技术栈 JavaSpringBootMavenMySQLMyBatisVueShiroElement-UI 角色对应功能 租客管理员 功能截图

搭建智慧互联网医院系统教学:源码解析与在线问诊APP开发

本篇文章,小编将以“源码解析与在线问诊APP开发”为切入点,详细介绍搭建智慧互联网医院系统的过程。 一、智慧互联网医院系统的架构设计 系统架构概述 -前端 -后端 -数据库 功能模块划分 -用户 -预约 -挂号 -问诊、 -病历 -管理 -药品 -配送…

数据:人工智能的基石 | Scale AI 创始人兼 CEO 亚历山大·王的创业故事与行业洞见

引言 在人工智能领域,数据被誉为“新石油”,其重要性不言而喻。随着GPT-4的问世,AI技术迎来了新的浪潮。众多年轻创业者纷纷投身这一领域,Scale AI的创始人兼CEO亚历山大王(Alexander Wang)就是其中的佼佼…

TCP协议与UDP协议区别

举个列子: 三次握手:为了解决网络信道不可靠的问题;防止客户端向服务端发送两次数据,客户端一直处于接收的状态。 四次挥手是一样的。当客户端提出关闭请求,服务端处于关闭等待状态,此时客户端可以发送数据…

西门子step7脉冲方波

西门子300/400PLC程序可以使用系统时钟脉冲来完成一些定时任务,节省自己写Timer定时器。 定时器字节位定义 默认定义的MB1,则M1.5是1秒定时脉冲方波。 案例 快闪,慢闪。 报警器一闪一闪用。 1分钟计时及1分钟一个脉冲 30分钟计时及30分…

多模态vlm综述:An Introduction to Vision-Language Modeling 论文解读

目录 1、基于对比学习的VLMs 1.1 CLIP 2、基于mask的VLMs 2.1 FLAVA 2.2 MaskVLM 2.3 关于VLM目标的信息理论视角 3、基于生成的VLM 3.1 学习文本生成器的例子: 3.2 多模态生成模型的示例: 3.3 使用生成的文本到图像模型进行下游视觉语言任务 4、 基于预训练主干网…

双列集合底层源码

tips: 竖着的箭头:重写 横着的箭头:继承

单元测试之CppTest测试框架

目录 1 背景2 设计3 实现4 使用4.1 主函数4.2 测试用例4.2.1 定义4.2.2 实现 4.3 运行 1 背景 前面文章CppTest实战演示中讲述如何使用CppTest库。其主函数如下: int main(int argc, char *argv[]) {Test::Suite mainSuite;Test::TextOutput output(Test::TextOut…

App UI 风格,引领时尚

App UI 风格,引领时尚

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 6月9日,星期日

每天一分钟,知晓天下事! 2024年6月9日 星期日 农历五月初四 1、 人社部:个人养老金开户人数已超6000万,其中31岁至40岁的中高收入人群是开户、缴费和购买产品的主力军。 2、 医保局刊文:研究显示集采仿制药替代原研药…

URL的编码解码(一),仅针对ASCII码字符

用十六进制对特定字符编码,利用百分号标识搜索字符串解码十六进制字符。 (笔记模板由python脚本于2024年06月09日 18:05:25创建,本篇笔记适合喜好探寻URL的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free…

内存管理--3.用幻灯片讲解C++手动内存管理

用幻灯片讲解C手动内存管理 1.栈内存的基本元素 2.栈内存的聚合对象 3.手动分配内存和释放内存 注意:手动分配内存,指的是在堆内存中。 除非实现自己的数据结构,否则永远不要手动分配内存! 即使这样,您也应该通过std::allocator…

如何在本地和远程删除 Git 分支

欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识,目前是武汉城市开发者社区主理人 擅长.net、C、python开发, 如果遇…

计算机组成原理之指令格式

1、指令的定义 零地址指令: 1、不需要操作数,如空操作、停机、关中断等指令。 2、堆栈计算机,两个操作数隐藏在栈顶和此栈顶,取两个操作数,并运算的结果后重新压回栈顶。 一地址指令: 二、三地址指令 四…

selenium-java自动化教程

文章目录 Selenium支持语言WebDriver 开始使用chromedriver模拟用户浏览访问模拟点击事件关闭弹窗,选中元素并点击 获取页面文本结语 Selenium Selenium是一个自动化测试工具,可以模拟用户操作web端浏览器的行为,包括点击、输入、选择等。也可…

高考后志愿填报信息采集系统制作指南

在高考的硝烟散去之后,每位学生都面临着一个重要的任务——志愿填报。老师们如何高效、准确地收集和整理这些信息,成为了一个棘手的问题。难道我们只能依赖传统的手工登记方式,忍受其繁琐和易错吗? 易查分是一个简单易用的在线工具…

数据结构--递归和数组

个人介绍 hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 🦁作者简介:一名喜欢分享和记录学习的…

ESP32:FreeRTOS节拍配置(vTaskDelay延时10ms改为1ms)

文章目录 背景方法手动修改sdkconfig通过idf.py menuconfig 背景 在FreeRTOS的默认配置中,任务调度的频率默认是100HZ,因此默认vTaskDelay默认延时是10ms。 FreeRTOS 的系统时钟节拍可以在配置文件 FreeRTOSConfig.h 里面设置:#define confi…

论文阅读KAN: Kolmogorov–Arnold Networks

学习了最近大热的KAN网络 论文地址:https://arxiv.org/pdf/2404.19756 按我个人读论文的习惯总结了如下几点: 1,背景: 1)灵感来源:于Kolmogorov-Arnold表示定理,也就是多变量连续函数可以表…