张量分解(4)——SVD奇异值分解

news2024/12/23 19:12:57

🍅 写在前面
👨‍🎓 博主介绍:大家好,这里是hyk写算法了吗,一枚致力于学习算法和人工智能领域的小菜鸟。
🔎个人主页:主页链接(欢迎各位大佬光临指导)
⭐️近期专栏:机器学习与深度学习
                       LeetCode算法实例
                       张量分解

张量分析系列知识,详见下方链接:

张量分解(1)——初探张量

张量分解(2)——张量运算

张量分解(3)——CP分解

张量分解(4)——SVD奇异值分解

张量分解(5)——Tucker分解

本系列文章主要参考论文:Tensor Decompositions and Applications∗

目录

  • SVD原理
  • SVD形式
  • SVD计算
  • SVD意义
  • SVD分解示例

SVD原理

SVD奇异值分解是一个有着很明显的物理意义的一种方法,它可以将一个比较复杂的矩阵用更小更简单的几个子矩阵的相乘来表示,而可以使用这些小矩阵描述矩阵的重要的特性!和矩阵的特征值特征向量分解有所不同,SVD不需要矩阵为方阵,使用局限性更小。

SVD形式

SVD矩阵分解的形式为:
A = U Σ V T \mathrm{A}=\mathrm{U} \Sigma \mathrm{V}^{\mathrm{T}} A=UΣVT
在这里插入图片描述
这里假设待分解的矩阵A为m×n维矩阵。U就是m×m维矩阵,名称为左奇异向量。Σ是m×n维矩阵,除了对角线元素,其他元素均是0,对角线元素就是奇异值。V的转置是n×n维的矩阵,名称为右奇异向量。

SVD计算

上面我们给除了SVD分解的形式,那么如何计算公式中的三个参数呢?
1、右奇异向量
( A T A ) v i = λ i v i \left(A^T A\right) v_i=\lambda_i v_i (ATA)vi=λivi
我们对 ( A T A ) \left(A^T A\right) (ATA)矩阵求特征值特征向量后,这里的 v i vi vi就是右奇异向量,关于如何求矩阵特征值和特征向量,这里不再详细介绍。
2、奇异值
σ i = λ i \begin{aligned} & \sigma_{\mathrm{i}}=\sqrt{\lambda_{\mathrm{i}}} \\ \end{aligned} σi=λi
​对上述特征值开方,即可求得奇异值。
3、左奇异向量
u i = 1 σ i A v i \begin{aligned} & & \mathrm{u}_{\mathrm{i}}=\frac{1}{\sigma_{\mathrm{i}}} A v_{\mathrm{i}} \end{aligned} ui=σi1Avi
求得奇异值与右奇异向量,二者按照上方公式计算即可得出左奇异向量。

最后将所求得的各个参数的分量合并在一起,按照形式排列,即可实现奇异值分解。

SVD意义

奇异值与矩阵特征值类似,在Σ矩阵中从大到小排列,但是奇异值减小的非常快,前10%的奇异值之和就占据奇异值总和的99%以上!我们也可以用最大的k个的奇异值和对应的左右奇异向量来近似描述矩阵。即: A m × n = U m × m Σ m × n V n × n T ≈ U m × k Σ k × k V k × n T \mathrm{A}_{\mathrm{m} \times \mathrm{n}}=\mathrm{U}_{\mathrm{m} \times \mathrm{m}} \Sigma_{\mathrm{m} \times \mathrm{n}} \mathrm{V}_{\mathrm{n} \times \mathrm{n}}^{\mathrm{T}} \approx \mathrm{U}_{\mathrm{m} \times \mathrm{k}} \Sigma_{\mathrm{k} \times \mathrm{k}} \mathrm{V}_{\mathrm{k} \times \mathrm{n}}^{\mathrm{T}} Am×n=Um×mΣm×nVn×nTUm×kΣk×kVk×nT

其中k比n要小很多。简而言之,SVD通过分解数据矩阵,帮助我们在降低数据维度的同时保留最重要的信息,这在数据压缩和去噪中非常有用。在推荐系统中,SVD通过揭示用户和物品的隐含特征,提升了推荐的准确性和个性化水平。

SVD分解示例

  1. 矩阵 A \boldsymbol{A} A 为: A = ( 0 1 1 1 1 0 ) \mathbf{A}=\left(\begin{array}{ll}0 & 1 \\ 1 & 1 \\ 1 & 0\end{array}\right) A= 011110
  2. 首先求出 A T A \boldsymbol{A}^T \boldsymbol{A} ATA A A T \boldsymbol{A} \boldsymbol{A}^T AAT
    A T A = ( 0 1 1 1 1 0 ) ( 0 1 1 1 1 0 ) = ( 2 1 1 2 ) A A T = ( 0 1 1 1 1 0 ) ( 0 1 1 1 1 0 ) = ( 1 1 0 1 2 1 0 1 1 ) \begin{aligned} & \mathbf{A}^{\mathrm{T}} \mathbf{A}=\left(\begin{array}{lll} 0 & 1 & 1 \\ 1 & 1 & 0 \end{array}\right)\left(\begin{array}{ll} 0 & 1 \\ 1 & 1 \\ 1 & 0 \end{array}\right)=\left(\begin{array}{ll} 2 & 1 \\ 1 & 2 \end{array}\right) \\ & \mathbf{A A}^{\mathrm{T}}=\left(\begin{array}{ll} 0 & 1 \\ 1 & 1 \\ 1 & 0 \end{array}\right)\left(\begin{array}{lll} 0 & 1 & 1 \\ 1 & 1 & 0 \end{array}\right)=\left(\begin{array}{lll} 1 & 1 & 0 \\ 1 & 2 & 1 \\ 0 & 1 & 1 \end{array}\right) \\ & \end{aligned} ATA=(011110) 011110 =(2112)AAT= 011110 (011110)= 110121011
  3. 进而分别求出 A T A \boldsymbol{A}^T \boldsymbol{A} ATA A A T \boldsymbol{A} \boldsymbol{A}^T AAT 的特征值和特征向量:
    A T A : λ 1 = 3 ; v 1 = ( 1 / 2 1 / 2 ) ; λ 2 = 1 ; v 2 = ( − 1 / 2 1 / 2 ) A A T : λ 1 = 3 ; u 1 = ( 1 / 6 2 / 6 1 / 6 ) ; λ 2 = 1 ; u 2 = ( 1 / 2 0 − 1 / 2 ) ; λ 3 = 0 ; u 3 = ( 1 / 3 − 1 / 3 1 / 3 ) \begin{aligned} & \boldsymbol{A}^{\boldsymbol{T}} \boldsymbol{A}: \lambda_1=3 ; \mathrm{v}_1=\binom{1 / \sqrt{2}}{1 / \sqrt{2}} ; \lambda_2=1 ; \mathrm{v}_2=\binom{-1 / \sqrt{2}}{1 / \sqrt{2}} \\ & \boldsymbol{A} \boldsymbol{A}^T: \lambda_1=3 ; \mathrm{u}_1=\left(\begin{array}{c} 1 / \sqrt{6} \\ 2 / \sqrt{6} \\ 1 / \sqrt{6} \end{array}\right) ; \lambda_2=1 ; \mathrm{u}_2=\left(\begin{array}{c} 1 / \sqrt{2} \\ 0 \\ -1 / \sqrt{2} \end{array}\right) ; \lambda_3=0 ; \mathrm{u}_3= \\ & \left(\begin{array}{c} 1 / \sqrt{3} \\ -1 / \sqrt{3} \\ 1 / \sqrt{3} \end{array}\right) \end{aligned} ATA:λ1=3;v1=(1/2 1/2 );λ2=1;v2=(1/2 1/2 )AAT:λ1=3;u1= 1/6 2/6 1/6 ;λ2=1;u2= 1/2 01/2 ;λ3=0;u3= 1/3 1/3 1/3

利用 A v i = σ i u i , i = 1 , 2 A v_i=\sigma_i u_i, i=1,2 Avi=σiui,i=1,2 求奇异值:
( 0 1 1 1 1 0 ) ( 1 / 2 1 / 2 ) = σ 1 ( 1 / 6 2 / 6 1 / 6 ) ⇒ σ 1 = 3 ( 0 1 1 1 1 0 ) ( − 1 / 2 1 / 2 ) = σ 2 ( 1 / 2 0 − 1 / 2 ) ⇒ σ 2 = 1 \begin{aligned} & \left(\begin{array}{ll} 0 & 1 \\ 1 & 1 \\ 1 & 0 \end{array}\right)\binom{1 / \sqrt{2}}{1 / \sqrt{2}}=\sigma_1\left(\begin{array}{l} 1 / \sqrt{6} \\ 2 / \sqrt{6} \\ 1 / \sqrt{6} \end{array}\right) \Rightarrow \sigma_1=\sqrt{3} \\ & \left(\begin{array}{ll} 0 & 1 \\ 1 & 1 \\ 1 & 0 \end{array}\right)\binom{-1 / \sqrt{2}}{1 / \sqrt{2}}=\sigma_2\left(\begin{array}{c} 1 / \sqrt{2} \\ 0 \\ -1 / \sqrt{2} \end{array}\right) \Rightarrow \sigma_2=1 \end{aligned} 011110 (1/2 1/2 )=σ1 1/6 2/6 1/6 σ1=3 011110 (1/2 1/2 )=σ2 1/2 01/2 σ2=1

也可以用 σ i = λ i \sigma_i=\sqrt{\lambda_i} σi=λi 直接求!
再利用左奇异值求解公式,可得左奇异值。
最终得到A的奇异值分解为:
A = U Σ V T = ( 1 / 6 1 / 2 1 / 3 2 / 6 0 − 1 / 3 1 / 6 − 1 / 2 1 / 3 ) ( 3 0 0 1 0 0 ) ( 1 / 2 1 / 2 − 1 / 2 1 / 2 ) \mathrm{A}=\mathrm{U} \Sigma \mathrm{V}^{\mathrm{T}}=\left(\begin{array}{ccc} 1 / \sqrt{6} & 1 / \sqrt{2} & 1 / \sqrt{3} \\ 2 / \sqrt{6} & 0 & -1 / \sqrt{3} \\ 1 / \sqrt{6} & -1 / \sqrt{2} & 1 / \sqrt{3} \end{array}\right)\left(\begin{array}{cc} \sqrt{3} & 0 \\ 0 & 1 \\ 0 & 0 \end{array}\right)\left(\begin{array}{cc} 1 / \sqrt{2} & 1 / \sqrt{2} \\ -1 / \sqrt{2} & 1 / \sqrt{2} \end{array}\right) A=UΣVT= 1/6 2/6 1/6 1/2 01/2 1/3 1/3 1/3 3 00010 (1/2 1/2 1/2 1/2 )

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

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

相关文章

那一单,教会我的不只是后悔

在销售行业中,每一笔成交都是一场精心策划的战役。每一个细节、每一次沟通都需要谨慎处理,以防辛苦建立的信任大厦瞬间崩塌。然而,即便是最小心谨慎的人也难免会犯错。我的一位好友,我们姑且称他为杰克,在一次不经意间…

实战篇(九):解锁3D魔方的秘密:用Processing编程实现交互式魔方

解锁3D魔方的秘密:用Processing编程实现交互式魔方 使用 Processing 创建一个 3D 魔方效果展示1. 安装 Processing2. 项目结构3. 代码实现4. 代码解释4.1. 初始化魔方4.2. 绘制魔方4.3. 处理鼠标事件4.4. 检查点击的面4.5. 旋转面和最终确定旋转5. 运行和测试6. 细节解释6.1. …

数据精度丢失

js数据精度丢失 最近看面试题想到了之前在开发钟遇到过的问题,现总结一下 在开发过程中,发现从后台返回的数据结构中的id字段在前端显示为不正确的值。经过排查,怀疑是JavaScript中Number类型精度丢失的问题。通过将id字段的类型从Number改为…

I/O多路复用:解锁服务器高性能的钥匙

文章目录 I/O 多路复用引言I/O 多路复用:并发处理的艺术介绍I/O多路复用的意义Linux下的I/O多路复用机制总结 文件描述符(fd):连接的桥梁概述文件描述符的作用文件描述符的生命周期特殊的文件描述符文件描述符与I/O多路复用 套接字…

数据结构—链式二叉树-C语言

代码位置:test-c-2024: 对C语言习题代码的练习 (gitee.com) 一、前言: 在现实中搜索二叉树为常用的二叉树之一,今天我们就要通过链表来实现搜索二叉树。实现的操作有:建二叉树、前序遍历、中序遍历、后序遍历、求树的节点个数、求…

路径规划 | 基于DQN深度强化学习算法的路径规划(Matlab)

目录 效果一览基本介绍程序设计参考文献 效果一览 基本介绍 DQN路径规划算法 基于深度强化学习算法的路径规划 matlab2023b 栅格环境,走迷宫,可以通过窗口界面方便观察交互过程,代码注释详尽。 程序设计 完整源码和数据私信博主回复基于DQN深…

什么是大数据信用?它的作用有哪些?怎么查询大数据?

在金融行业中,风险管理是至关重要的一环。传统的信用评估方法主要基于借款人的财务状况和信用历史,但这些信息往往无法全面反映借款人的信用状况。大数据信用的出现为金融风控提供了新的解决方案。 首先,大数据信用可以为金融机构提供更全面的…

flutter实现语言的国际化

目录 前言 一、GetX实现国际化(推荐) 1.安装Getx 2.创建国际化的文件 3.使用国际化字符串 4.配置GetMaterialApp 5.更改语言 6.系统语言 ​编辑 7.原生工程配置 1.iOS工程配 1.打开iOS工程,在Project的info里面添加语言 2.创建String File文件 2.andr…

运维管理数智化:数据与智能运维场景实践

本文来自腾讯蓝鲸智云社区用户:CanWay 摘要:笔者根据自身的技术和行业理解,分享嘉为蓝鲸数据与智能运维场景实践。 涉及关键字:一体化运维、平台化运维、数智化运维、AIOps、运维PaaS、运维工具系统、蓝鲸等。 本文作者&#xf…

vue2迁移到vue3注意点

vue2迁移到vue3注意点 1、插槽的修改 使用 #default , 以及加上template 模板 2、 类型的定义,以及路由,vue相关资源(ref, reactive,watch)的引入等 3、类装饰器 1)vue-class-component是vue官方库,作…

ActiveMQ-CVE-2023-46604

Apache ActiveMQ OpenWire 协议反序列化命令执行漏洞 OpenWire协议在ActiveMQ中被用于多语言客户端与服务端通信。在Apache ActvieMQ5.18.2版本以及以前,OpenWire协议通信过程中存在一处反序列化漏洞,该漏洞可以允许具有网络访问权限的远程攻击者通过操作…

网页数据抓取:融合BeautifulSoup和Scrapy的高级爬虫技术

网页数据抓取:融合BeautifulSoup和Scrapy的高级爬虫技术 在当今的大数据时代,网络爬虫技术已经成为获取信息的重要手段之一。Python凭借其强大的库支持,成为了进行网页数据抓取的首选语言。在众多的爬虫库中,BeautifulSoup和Scrap…

1140 分珠

这是一个图的划分问题&#xff0c;可以使用深度优先搜索&#xff08;DFS&#xff09;或广度优先搜索&#xff08;BFS&#xff09;来解决。我们需要找到一种划分方式&#xff0c;使得划分后的两部分总重的差值的绝对值最小。 以下是对应的C代码&#xff1a; #include <iost…

房地产市场2024年展望——深度解读行业趋势

作为一名有十多年经验的地产营销人&#xff0c;对于2024年房地产行业的发展趋势&#xff0c;我认为可以从以下几个方面来探讨&#xff0c;如果觉得对你有帮助&#xff0c;请不吝一个三连&#xff08;赞同喜欢收藏&#xff09; 一、市场调整与分化加剧 在经历了较长时间的市场…

用chatgpt写了个二级导航,我全程一个代码没写,都是复制粘贴

今天心血来潮&#xff0c;让chatgpt给我写个移动端的二级导航菜单&#xff0c;效果如下&#xff1a; 1、两级导航&#xff0c;竖向排列&#xff0c;一级导航默认显示&#xff0c;二级隐藏 2、抽屉伸缩效果&#xff0c;点击一级导航&#xff0c;展开二级导航&#xff0c;再次点…

同步IO、异步IO以及五种网络IO模式

目录 一、同步IO和异步IO 二、五种网络IO模式 1、阻塞IO 2、非阻塞IO 3、IO多路复用 3.1、SELECT 3.2、POLL 3.3、EPOLL 一、同步IO和异步IO 场景1&#xff1a; 小明去打开水&#xff0c;而开水塔此时没有水&#xff0c;小明在现场一直等待开水到来&#xff0c;或者不断…

老牌数据库HRS,三分之二二区以上!| CHARLS等七大老年公共数据库周报(7.10)...

七大老年公共数据库 七大老年公共数据库共涵盖33个国家的数据&#xff0c;包括&#xff1a;美国健康与退休研究 (Health and Retirement Study, HRS)&#xff1b;英国老龄化纵向研究 &#xff08;English Longitudinal Study of Ageing, ELSA&#xff09;&#xff1b;欧洲健康、…

图片转文字的软件,分享3种不同的类型的软件!

在信息爆炸的时代&#xff0c;图片作为一种直观、生动的信息载体&#xff0c;已经成为我们日常生活中不可或缺的一部分。然而&#xff0c;有时候我们可能需要将图片中的文字提取出来&#xff0c;以便于编辑、整理或进一步使用。那么&#xff0c;有哪些实用的图片转文字软件可以…

基于粒子滤波和帧差法的目标跟踪matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 帧差法 4.2 粒子滤波 4.3 粒子滤波与帧差法的结合 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 原重采样方法&#xff1a; 改进重采样方法&#xff1a; 2.算法…

OpenSceneGraph学习笔记

目录 引言第一章&#xff1a;OSG概述一、前言&#xff08;1&#xff09;为什么要学习OSG?&#xff08;2&#xff09;OSG的组成&#xff08;3&#xff09;OSG的智能指针&#xff08;4&#xff09;OSG的安装编译 二、第一个OSG程序&#xff08;1&#xff09;Hello OSG程序&#…