线性代数|机器学习-P7SVD奇异值分解

news2024/11/18 2:57:22

文章目录

  • 1. 奇异值分解
    • 1.1 SVD求解
    • 1.2 行基和列基转换
  • 2. Ax图像表示
  • 3. 极坐标表示
  • 4. 小结

1. 奇异值分解

现在我们用的是一个m行n列的矩阵A,那么我们计算下特征值方程:
A m × n x n × 1 = λ x n × 1 ; b m × 1 = A m × n x n × 1 \begin{equation} A_{m\times n}x_{n\times 1}=\lambda x_{n\times 1};b_{m\times 1}=A_{m\times n}x_{n\times 1} \end{equation} Am×nxn×1=λxn×1;bm×1=Am×nxn×1

  • m ≠ n m\neq n m=n时, b m × 1 ≠ λ x n × 1 b_{m\times 1}\neq \lambda x_{n\times 1} bm×1=λxn×1,所以当A为长方形矩阵的时候,由于向量大小的原因,我们无法使用 A x = λ x Ax=\lambda x Ax=λx公式,为了解决如下问题,我们引入奇异值分解SVD。
    A m × n = U m × m Σ m × n V n × n T , U U T = I m × m , V V T = I n × n \begin{equation} A_{m\times n}=U_{m\times m}\Sigma_{m\times n}V^T_{n\times n},UU^T=I_{m\times m},VV^T=I_{n\times n} \end{equation} Am×n=Um×mΣm×nVn×nT,UUT=Im×m,VVT=In×n

1.1 SVD求解

假设我们有任意矩阵A,可以得到SVD分解, A = U Σ V T A=U\Sigma V^T A=UΣVT,那么我们可以构造对称矩阵进行求解; U U T = I , V V T = I UU^T=I,VV^T=I UUT=I,VVT=I
A A T = U Σ V T V Σ T U T = U ( Σ Σ T ) U T \begin{equation} AA^T=U\Sigma V^TV\Sigma^TU^T=U(\Sigma\Sigma^T)U^T \end{equation} AAT=UΣVTVΣTUT=U(ΣΣT)UT

  • 我们可以把 A A T AA^T AAT看作是矩阵A右乘一个矩阵 A T A^T AT,所以可以得到 A A T AA^T AAT为矩阵A的列向量的线性组合,所以得到的U肯定在A的列向量空间中。这样可以得到 U , Σ U,\Sigma U,Σ
    A T A = V Σ T U T U Σ V T = V ( Σ T Σ ) V T \begin{equation} A^TA=V\Sigma^TU^TU\Sigma V^T=V(\Sigma^T\Sigma) V^T \end{equation} ATA=VΣTUTUΣVT=V(ΣTΣ)VT
  • 我们可以把 A T A A^TA ATA看作是矩阵A左乘一个矩阵 A T A^T AT,所以可以得到 A T A A^TA ATA为矩阵A的行向量的线性组合,所以得到的V肯定在A的行向量空间中。这样可以得到 V , Σ V,\Sigma V,Σ
  • 最后我们通过验证 A v = σ u Av=\sigma u Av=σu来验证 σ \sigma σ 的符号。
    -奇异值SVD分解后矩阵向量分布情况如图:
    在这里插入图片描述
  • 我们发现,对于矩阵A的分解来说,有部分向量 u r + 1 ⋯ u m u_{r+1}\cdots u_m ur+1um对于与 σ r + 1 = ⋯ = σ n = 0 \sigma_{r+1}=\cdots=\sigma_n=0 σr+1==σn=0,所以这部分的向量其实是 N ( A T ) N(A^T) N(AT)零空间向量,所以我们希望更一步进行压缩矩阵,我们本身希望用非零的特征值,具体公式如下:
    A v 1 = σ 1 u 1 , A v 2 = σ 2 u 2 , ⋯ A v r = σ r u r \begin{equation} Av_1=\sigma_1 u_1,Av_2=\sigma_2 u_2,\cdots Av_r=\sigma_r u_r \end{equation} Av1=σ1u1,Av2=σ2u2,Avr=σrur
  • 整理可得如下:
    A [ v 1 v 2 ⋯ v r r o w − s p a c e ] = [ u 1 u 2 ⋯ u r c o l u m n − s p a c e ] [ σ 1 σ 2 ⋱ σ r ] → A V r = U r Σ r \begin{equation} A\begin{bmatrix}v_1&v_2&\cdots&v_r\\\\&row-space\end{bmatrix}=\begin{bmatrix}u_1&u_2&\cdots&u_r\\\\&column-space\end{bmatrix}\begin{bmatrix}\sigma_1&\\\\&\sigma_2\\\\&&\ddots\\\\&&&\sigma_r\end{bmatrix}\rightarrow AV_r=U_r\Sigma_r \end{equation} A v1v2rowspacevr = u1u2columnspaceur σ1σ2σr AVr=UrΣr

1.2 行基和列基转换

  • 这样 A V r = U r Σ r AV_r=U_r\Sigma_r AVr=UrΣr中的均无零向量和零值了。真神奇的想法!!那么行空间的基向量通过上面公式就可以映射到列空间的基向量上,具体如图所示 :
    在这里插入图片描述
  • 证明当 v 1 ⊥ v 2 v_1\perp v_2 v1v2,经过 A v = σ u Av=\sigma u Av=σu时, u 1 ⊥ u 2 u_1\perp u_2 u1u2
    u 1 = A v 1 σ 1 , u 2 = A v 2 σ 2 , u 1 T u 2 = ( A v 1 σ 1 ) T A v 2 σ 2 = v 1 T A T A v 2 σ 1 σ 2 \begin{equation} u_1=\frac{Av_1}{\sigma_1},u_2=\frac{Av_2}{\sigma_2},u_1^Tu_2=(\frac{Av_1}{\sigma_1})^T\frac{Av_2}{\sigma_2}=\frac{v_1^TA^TAv_2}{\sigma_1\sigma_2} \end{equation} u1=σ1Av1,u2=σ2Av2,u1Tu2=(σ1Av1)Tσ2Av2=σ1σ2v1TATAv2
  • 我们之前得到如下结论 A T A v 2 = v 2 σ 2 2 A^TAv_2=v_2\sigma_2^2 ATAv2=v2σ22,代入可得:
    u 1 T u 2 = v 1 T A T A v 2 σ 1 σ 2 = v 1 T σ 2 2 v 2 σ 1 σ 2 = σ 2 v 1 T v 2 σ 1 = 0 → u 1 ⊥ u 2 \begin{equation} u_1^Tu_2=\frac{v_1^TA^TAv_2}{\sigma_1\sigma_2}=\frac{v_1^T\sigma^2_2v_2}{\sigma_1\sigma_2}=\frac{\sigma_2v_1^Tv_2}{\sigma_1}=0\rightarrow u_1\perp u_2 \end{equation} u1Tu2=σ1σ2v1TATAv2=σ1σ2v1Tσ22v2=σ1σ2v1Tv2=0u1u2

2. Ax图像表示

假设我们有一个矩阵A,进行分解后得到 A = U Σ V T A=U\Sigma V^T A=UΣVT,那么可得:
A x = U Σ V T x \begin{equation} Ax=U\Sigma V^Tx \end{equation} Ax=UΣVTx

  • step1: V T x V^Tx VTx将图像旋转
  • step2: Σ V T x \Sigma V^Tx ΣVTx将图像沿轴拉伸
  • step3: U Σ V T x U\Sigma V^Tx UΣVTx将图像旋转
  • 小结,Ax的本质是将向量的基进行旋转,拉伸,旋转作用
    在这里插入图片描述

3. 极坐标表示

我们希望将任意一个矩阵A分解为一个对称矩阵S和正交矩阵Q的形式,可以进行如下变形:
A = U Σ V T = ( U Σ U T ) ( U V T ) , S = U Σ U T , Q = U V T \begin{equation} A=U\Sigma V^T=(U\Sigma U^T) (UV^T),S=U\Sigma U^T,Q=UV^T \end{equation} A=UΣVT=(UΣUT)(UVT),S=UΣUT,Q=UVT

4. 小结

通过SVD奇异值分解可得,我们将任意矩阵分解后,可以挑选出r个重要的非零特征值的矩阵。
A = σ 1 u 1 v 1 T + σ 2 u 2 v 2 T + ⋯ + σ r u r v r T , σ 1 ≥ σ 2 ≥ ⋯ ≥ σ r ; \begin{equation} A=\sigma_1u_1v_1^T+\sigma_2u_2v_2^T+\cdots+\sigma_ru_rv_r^T,\sigma_1\geq\sigma_2\geq\cdots\geq\sigma_r; \end{equation} A=σ1u1v1T+σ2u2v2T++σrurvrT,σ1σ2σr;

  • 所以可得得到矩阵A中最重要的信息在 σ 1 u 1 v 1 T + ⋯ + σ k u k v k T \sigma_1u_1v_1^T+\cdots+\sigma_ku_kv_k^T σ1u1v1T++σkukvkT上。其他的部分因为 σ k + 1 u k + 1 v k + 1 T + ⋯ + σ r u r v r T \sigma_{k+1}u_{k+1}v_{k+1}^T+\cdots+\sigma_ru_rv_r^T σk+1uk+1vk+1T++σrurvrT中的 σ \sigma σ太小而可以忽略,这样就起到以小的矩阵组合来表示原始矩阵的方式,这个就是我们的 主成分分析PCA,真神奇!!!

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

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

相关文章

攻防世界---misc---misc_pic_again

1、题目描述,flag为hctf{}格式,下载附件是一张图片 2、将图片放在winhex中分析,没有发现奇怪的信息,接着将图片用Stegsolve分析,查看通道没有发现奇怪的图片,接着分析,对数据进行提取 3、将三个…

性能工具之 JMeter 常用组件介绍(三)

文章目录 一、常用组件介绍二、Sampler:取样器三、Controller:控制器(逻辑控制器)四、Pre Processor:预处理五、Post Processor:请求之后的处理六、Assertions:断言七、Timer:定时器八、Test Fragment:片段九、Config Element:配置…

【全开源】云调查考试问卷系统(FastAdmin+ThinkPHP+Uniapp)

便捷、高效的在线调研与考试新选择​ 云调查考试问卷是一款基于FastAdminThinkPHPUniapp开发的问卷调查考试软件,可以自由让每一个用户自由发起调查问卷、考试问卷。发布的问卷允许控制问卷的搜集、回答等各个环节的设置,同时支持系统模板问卷&#xff…

【CMake】CMake从入门到实战系列(十五)—— CMake中添加编译选项的几种方法

文章目录 一、前言二、add_compile_options【1】基本语法【2】参数含义【3】示例【4】备注 三、target_compile_options【1】基本语法【2】参数含义【3】示例【4】备注 四、CMAKE_C_FLAGS 或 CMAKE_CXX_FLAGS 一、前言 在嵌入式工作开发调试过程中,我们常会遇到需要…

科技赋能,无障碍出行的新纪元

在现代社会,公共设施的建设不仅是衡量城市文明程度的标尺,更是实现社会公平与包容的重要载体。对于盲人群体而言,一个完善的公共设施网络,意味着他们能够更加独立、自信地融入社会,享受与视力健全者同等的公共服务与便…

【C语言之排序】-------六大排序

作者主页:作者主页 数据结构专栏:数据结构 创作时间 :2024年5月18日 前言: 今天我们就给大家带来几种排序的讲解,包括冒泡排序,插入排序,希尔排序,选择排序,堆排序&…

jmeter的infludb+grafana实时监控平台

目的:可以实时查看到jmeter拷机信息 框架:将 Jmeter 的数据导入 InfluxDB ,再用 Grafana 从 InfluxDB 中获取数据并以特定的模板进行展示 性能监控平台部署实践 一、influxDB 官网:https://www.influxdata.com/downloads/ wget h…

Unity 自定义房间布局系统 设计与实现一个灵活的房间放置系统 ——物体占用的区域及放置点自动化

放置物体功能 效果: 功能: 自定义物体占用区域的大小一键调整占用区域调整旋转度数,分四个挡位: NoRotation:该物体不能调整旋转。MaximumAngle:每次转动90。NormalAngle:每次转动45&#xff…

Vue03-HelloWord

一、Hello World 1-1、示例1 1、现有html容器; 2、再有vue实例。 new Vue({});中的{}是配置对象。配置对象是:key:value的格式。 el:element元素。id对应#,class对应. 把容器中变化的数据,交给Vue实例去保…

嵌入式软件跳槽求指导?

嵌入式软件行业的跳槽确实需要一些特定的策略和技巧。我这里有一套嵌入式入门教程,不仅包含了详细的视频讲解,项目实战。如果你渴望学习嵌入式,不妨点个关注,给个评论222,私信22,我在后台发给你。 因为这个…

[Algorithm][动态规划][两个数组的DP][最长公共子序列][不相交的线][不同的子序列][通配符匹配]详细讲解

目录 1.最长公共子序列1.题目链接2.算法原理详解3.代码实现 2.不相交的线1.题目链接2.算法原理详解3.代码实现 3.不同的子序列1.题目链接2.算法原理详解3.代码实现 4.通配符匹配1.题目链接2.算法原理详解3.代码实现 1.最长公共子序列 1.题目链接 最长公共子序列 2.算法原理详…

Linux网络编程:数据链路层协议

目录 前言: 1.以太网 1.1.以太网帧格式 1.2.MTU(最大传输单元) 1.2.1.IP协议和MTU 1.2.2.UDP协议和MTU 1.2.3.TCP协议和MTU 2.ARP协议(地址解析协议) 2.1.ARP在局域网通信的角色 2.2.ARP报文格式 2.3.ARP报文…

SpringBoot高手之路02-全局异常处理器

RestControllerAdvice 可以将响应数据返回json格式然后响应 那么开始做全局异常处理器 首先先定义一个类 package com.healer.exception;import com.healer.common.Result; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.we…

AIGC专栏11——EasyAnimateV2结构详解与Lora训练 最大支持768x768 144帧视频生成

AIGC专栏11——EasyAnimateV2结构详解与Lora训练 最大支持768x768 144帧视频生成 学习前言源码下载地址EasyAnimate V2简介技术储备Diffusion Transformer (DiT)Motion ModuleU-VITLora 算法细节算法组成视频VAE视频DIT 数据处理视频分割视频筛选视频描述 模型训练视频VAE视频D…

Leetcode3168. 候诊室中的最少椅子数

Every day a Leetcode 题目来源:3168. 候诊室中的最少椅子数 解法1:模拟 代码: /** lc appleetcode.cn id3168 langcpp** [3168] 候诊室中的最少椅子数*/// lc codestart class Solution { public:int minimumChairs(string s){int chair…

前缀树的实现

前缀树的实现 何谓前缀树?实现前缀树节点的选择插入查找查找前缀完整代码 何谓前缀树? 前缀树(字典树),使用树状的数据结构存储一个字典的所有单词。前缀树是一个多叉树,一个节点可能有多个子节点&#xf…

SpringMVC:转发和重定向

1. 请求转发和重定向简介 参考该链接第9点 2. forward 返回下一个资源路径,请求转发固定格式:return "forward:资源路径"如 return "forward:/b" 此时为一次请求返回逻辑视图名称 返回逻辑视图不指定方式时都会默认使用请求转发in…

优化你的WordPress网站:内链建设与Link Whisper Pro插件的利用

文章目录 内链的重要性WordPress SEO插件:Link Whisper Pro主要功能使用指南下载与安装 结语 在数字营销和网站管理领域,SEO内部优化是提升网站排名、增加流量和提高用户参与度的核心策略。在众多SEO技巧中,内链建设是构建良好网站结构和提升…

使用Django JWT实现身份验证

文章目录 安装依赖配置Django设置创建API生成和验证Token总结与展望 在现代Web应用程序中,安全性和身份验证是至关重要的。JSON Web Token(JWT)是一种流行的身份验证方法,它允许在客户端和服务器之间安全地传输信息。Django是一个…

docker实战流程:

Docker-compose是docker官方的开源项目,负责实现对docker容器的集群的快速编排(通过yaml文件docker-compose.yml管理写好容器之间的调用关系只需一个命令就能实现容器的通识开启或关闭)。 类比spring容器,spring管理的是bean而do…