张量分解(4)——SVD奇异值分解
🍅 写在前面
👨🎓 博主介绍:大家好,这里是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×nT≈Um×kΣk×kVk×nT
其中k比n要小很多。简而言之,SVD通过分解数据矩阵,帮助我们在降低数据维度的同时保留最重要的信息,这在数据压缩和去噪中非常有用。在推荐系统中,SVD通过揭示用户和物品的隐含特征,提升了推荐的准确性和个性化水平。
SVD分解示例
- 矩阵 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
- 首先求出 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 - 进而分别求出 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/21/2);λ2=1;v2=(1/2−1/2)AAT:λ1=3;u1= 1/62/61/6 ;λ2=1;u2= 1/20−1/2 ;λ3=0;u3= 1/3−1/31/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/21/2)=σ1 1/62/61/6 ⇒σ1=3 011110 (1/2−1/2)=σ2 1/20−1/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/62/61/61/20−1/21/3−1/31/3 300010 (1/2−1/21/21/2)
相关文章:
张量分解(4)——SVD奇异值分解
🍅 写在前面 👨🎓 博主介绍:大家好,这里是hyk写算法了吗,一枚致力于学习算法和人工智能领域的小菜鸟。 🔎个人主页:主页链接(欢迎各位大佬光临指导) ⭐️近…...
第三方配件也能适配苹果了,iOS 18与iPadOS 18将支持快速配对
苹果公司以其对用户体验的不懈追求和对创新技术的不断探索而闻名。随着iOS 18和iPadOS 18的发布,苹果再次证明了其在移动操作系统领域的领先地位。 最新系统版本中的一项引人注目的功能,便是对蓝牙和Wi-Fi配件的配对方式进行了重大改进,不仅…...
Docker 部署 Nginx 并在容器内配置申请免费 SSL 证书
文章目录 dockerdocker-compose.yml申请免费 SSL 证书请求头参数带下划线 docker https://hub.docker.com/_/nginx docker pull nginx:1.27注: 国内网络原因无法下载镜像,nginx 镜像文件下载链接 https://pan.baidu.com/s/1O35cPbx6AHWUJL1v5-REzA?pw…...
模型评估与选择
2.1 经验误差与过拟合 错误率(error rate): 分类错误的样本数占样本总数的比例 精度(accuracy):1- 错误率 训练误差 / 经验误差:在训练集上的误差 泛化误差:在新样本上的误差 过…...
有必要把共享服务器升级到VPS吗?
根据自己的需求来选择是否升级,虚拟专用服务器 (VPS) 是一种托管解决方案,它以低得多的成本提供专用服务器的大部分功能。使用 VPS,您的虚拟服务器将与在其上运行的其他虚拟服务器共享硬件服务器的资源。但是,与传统的共享托管&am…...
LLM代理应用实战:构建Plotly数据可视化代理
如果你尝试过像ChatGPT这样的LLM,就会知道它们几乎可以为任何语言或包生成代码。但是仅仅依靠LLM是有局限的。对于数据可视化的问题我们需要提供一下的内容 描述数据:模型本身并不知道数据集的细节,比如列名和行细节。手动提供这些信息可能很麻烦&#…...
大模型系列3--pytorch dataloader的原理
pytorch dataloader运行原理 1. 背景2. 环境搭建2.1. 安装WSL & vscode2.2. 安装conda & pytorch_gpu环境 & pytorch 2.112.3 命令行验证python环境2.4. vscode启用pytorch_cpu虚拟环境 3. 调试工具3.1. vscode 断点调试3.2. py-spy代码栈探测3.3. gdb attach3.4. …...
SQLServer 如何设置端口
在SQL Server中,可以通过以下步骤设置端口: 打开SQL Server配置管理器。可以在开始菜单中搜索“SQL Server配置管理器”来找到它。 在左侧导航窗格中,展开“SQL Server网络配置”节点。 选择你要配置的实例,如“SQL Server Netw…...
调整网络安全策略以适应不断升级的威胁形势
关键网络安全统计数据和趋势 当今数字时代网络安全的重要性...
(leetcode学习)9. 回文数
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数 是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例如,121 是回文,而…...
QT VTK 简单测试工程
目录 1 目录结构 2 文件源码 3 运行结果 4 报错及处理 使用编译好的VTK库进行测试 1 目录结构 2 文件源码 Pro文件 QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c17# You can make your code fail to compile if it uses deprecated APIs. #…...
ES6 Generator函数的异步应用 (八)
ES6 Generator 函数的异步应用主要通过与 Promise 配合使用来实现。这种模式被称为 “thunk” 模式,它允许你编写看起来是同步的异步代码。 特性: 暂停执行:当 Generator 函数遇到 yield 表达式时,它会暂停执行,等待 …...
Navicat:打造高效数据库管理之道
1. 导言 1.1 介绍Navicat Navicat是一款功能强大的数据库管理工具,旨在帮助用户高效地管理多种类型的数据库,包括MySQL、PostgreSQL、Oracle、SQL Server等。通过Navicat,用户可以轻松地进行数据库的创建、编辑、备份、同步和调试等操作,极大地简化了数据库管理的复杂性。…...
Python和C++全球导航卫星系统和机器人姿态触觉感知二分图算法
🎯要点 🎯马尔可夫随机场网格推理学习 | 🎯二维伊辛模型四连网格模型推理 | 🎯统计物理学模型扰动与最大乘积二值反卷积 | 🎯受限玻尔兹曼机扰动和最大乘积采样 | 🎯视觉概率生成模型测试图像 dz…...
Unity 优化合集
1️⃣ 贴图优化 1. Read/Write Enable 这个属性勾选后允许你在运行时读取和写入纹理数据,这对于需要实时生成内容或者需要动态修改纹理的场合非常有用但在大部分情况下这是不必要的。如果打开这个属性,会使运行时贴图大小翻倍,内存中会额外…...
第九届MathorCup高校数学建模挑战赛-A题:基于数据驱动的城市轨道交通网络优化研究
目录 摘 要 一、 问题的提出 二、 基本假设 三、 符号说明 四、 问题分析 4.1 问题 1 的分析 4.2 问题 2 的分析 4.3 问题 3 的分析 4.4 问题 4 的分析 五、 问题 1 的模型建立与求解 5.1 问题分析 5.2 数据处理 5.2.1 数据统计 5.2.2 异常数据处理方法 5.2.3 剔除异常数据值 5…...
Spring webflux基础核心技术
一、 用操作符转换响应式流 1 、 映射响应式流元素 转换序列的最自然方式是将每个元素映射到一个新值。 Flux 和 Mono 给出了 map 操作符,具有 map(Function<T,R>) 签名的方法可用于逐个处理元素。 当操作符将元素的类型从 T 转变为 R 时…...
关闭Ubuntu烦人的apport
先来看让人绷不住的(恼) 我查半天apport是啥玩意发现就一错误报告弹窗,十秒钟给我弹一次一天给我内存弹爆了 就算我程序就算真的不停崩溃,也没你这傻比apport杀伤性强啊??? 原则上是不建议关闭…...
海事无人机解决方案
海事巡察 海事巡察现状 巡查效率低下,存在视野盲区,耗时长,人力成本高。 海事的职能 统一管理水上交通安全和防治船舶污染。 管理通航秩序、通航环境。负责水域的划定和监督管理,维护水 上交通秩序;核定船舶靠泊安…...
Docker--在linux安装软件
Docker 引用Docker原因是在linux中安装软件 以前在linux中安装软件,是直接安装在linux操作系统上,软件和操作系统耦合度很高,不方便管理,因为linux版本不同,环境也就改变了 docker是一种容器技术,提供标…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目
应用场景: 1、常规某个机器被钓鱼后门攻击后,我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后,我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...
6.计算机网络核心知识点精要手册
计算机网络核心知识点精要手册 1.协议基础篇 网络协议三要素 语法:数据与控制信息的结构或格式,如同语言中的语法规则语义:控制信息的具体含义和响应方式,规定通信双方"说什么"同步:事件执行的顺序与时序…...
用js实现常见排序算法
以下是几种常见排序算法的 JS实现,包括选择排序、冒泡排序、插入排序、快速排序和归并排序,以及每种算法的特点和复杂度分析 1. 选择排序(Selection Sort) 核心思想:每次从未排序部分选择最小元素,与未排…...
GC1808:高性能音频ADC的卓越之选
在音频处理领域,高质量的音频模数转换器(ADC)是实现精准音频数字化的关键。GC1808,一款96kHz、24bit立体声音频ADC,以其卓越的性能和高性价比脱颖而出,成为众多音频设备制造商的理想选择。 GC1808集成了64倍…...
