当前位置: 首页 > news >正文

张量分解(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×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 )

相关文章:

张量分解(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++全球导航卫星系统和机器人姿态触觉感知二分图算法

🎯要点 🎯马尔可夫随机场网格推理学习 | 🎯二维伊辛模型四连网格模型推理 | 🎯统计物理学模型扰动与最大乘积二值反卷积 | 🎯受限玻尔兹曼机扰动和最大乘积采样 | 🎯视觉概率生成模型测试图像 &#x1f3…...

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 操作符&#xff0c;具有 map(Function<T&#xff0c;R>) 签名的方法可用于逐个处理元素。 当操作符将元素的类型从 T 转变为 R 时&#xf…...

关闭Ubuntu烦人的apport

先来看让人绷不住的&#xff08;恼&#xff09; 我查半天apport是啥玩意发现就一错误报告弹窗&#xff0c;十秒钟给我弹一次一天给我内存弹爆了 就算我程序就算真的不停崩溃&#xff0c;也没你这傻比apport杀伤性强啊&#xff1f;&#xff1f;&#xff1f; 原则上是不建议关闭…...

海事无人机解决方案

海事巡察 海事巡察现状 巡查效率低下&#xff0c;存在视野盲区&#xff0c;耗时长&#xff0c;人力成本高。 海事的职能 统一管理水上交通安全和防治船舶污染。 管理通航秩序、通航环境。负责水域的划定和监督管理&#xff0c;维护水 上交通秩序&#xff1b;核定船舶靠泊安…...

Docker--在linux安装软件

Docker 引用Docker原因是在linux中安装软件 以前在linux中安装软件&#xff0c;是直接安装在linux操作系统上&#xff0c;软件和操作系统耦合度很高&#xff0c;不方便管理&#xff0c;因为linux版本不同&#xff0c;环境也就改变了 docker是一种容器技术&#xff0c;提供标…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

小木的算法日记-多叉树的递归/层序遍历

&#x1f332; 从二叉树到森林&#xff1a;一文彻底搞懂多叉树遍历的艺术 &#x1f680; 引言 你好&#xff0c;未来的算法大神&#xff01; 在数据结构的世界里&#xff0c;“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的&#xff0c;它…...

C++实现分布式网络通信框架RPC(2)——rpc发布端

有了上篇文章的项目的基本知识的了解&#xff0c;现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...