奇异值分解 (SVD)原理及python实现

2023-10-27

奇异值分解(Singular Value Decomposition,SVD)是一种矩阵分解(Matrix Decomposition)的方法。除此之外,矩阵分解还有很多方法,例如特征分解(Eigendecomposition)、LU分解(LU decomposition)、QR分解(QR decomposition)和极分解(Polar decomposition)等。这篇文章主要说下奇异值分解,这个方法在机器学习的一些算法里占有重要地位。

————————————————————————————————————————————————————————

定义

下面引用 SVD 在维基百科中的定义

In linear algebra, the singular value decomposition (SVD) is a factorization of a real or complex matrix. It is the generalization of the eigendecomposition of a positive semidefinite normal matrix (for example, a symmetric matrix with positive eigenvalues) to any m×nm×n matrix via an extension of polar decomposition.

也就是说 SVD 是线代中对于实数矩阵和复数矩阵的分解,将特征分解从 半正定矩阵 推广到任意 m×nm×n 矩阵。

注意:本篇文章内如未作说明矩阵均指实数矩阵。

假设有 m×nm×n 的矩阵 AA ,那么 SVD 就是要找到如下式的这么一个分解,将 AA 分解为 3 个矩阵的乘积:

                                                             

其中,UU 和 VV 都是正交矩阵 (Orthogonal Matrix),在复数域内的话就是酉矩阵(Unitary Matrix),即

                                                                 

换句话说,就是说 UU 的转置等于 UU 的逆,VV 的转置等于 VV 的逆:

                                                               

而 ΣΣ 就是一个非负实对角矩阵。

那么 UU 和 VV 以及 ΣΣ 是如何构成的呢?

_____________________________________________________________________________________________________

求解

UU 和 VV 的列分别叫做 AA 的 左奇异向量(left-singular vectors)和 右奇异向量(right-singular vectors),ΣΣ 的对角线上的值叫做 AA 的奇异值(singular values)。

其实整个求解 SVD 的过程就是求解这 3 个矩阵的过程,而求解这 3 个矩阵的过程就是求解特征值和特征向量的过程,问题就在于 求谁的特征值和特征向量

  • U 的列由AA^{T}  的单位化过的特征向量构成
  • V 的列由 A^{T}A 的单位化过的特征向量构成
  • Σ 的对角元素来源于 AA^{T} 或 A^{T}A 的特征值的平方根,并且是按从大到小的顺序排列的

知道了这些,那么求解 SVD 的步骤就显而易见了:

  1. 求 AA^{T} 的特征值和特征向量,用单位化的特征向量构成 U
  2. 求 A^{T}A 的特征值和特征向量,用单位化的特征向量构成 V
  3. 将 AA^{T} 或者 A^{T}A 的特征值求平方根,然后构成 Σ

_____________________________________________________________________________________________________

举例

假设

                                                                    

那么可以计算得到

                                                         

接下来就是求这个矩阵的特征值和特征向量了

                                                            

要想该方程组有非零解(即非零特征值),那么系数矩阵 AA^{T}−λE 的行列式必须为 0

                                                    

求解这个行列式我就不再赘述了,这个直接使用行列式展开定理就可以了,可以得到 λ1≈29.86606875,λ2≈0.13393125,λ3=λ4=0,有 4 个特征值,因为特征多项式 |AA^{T}−λE| 是一个 4 次多项式。对应的单位化过的特征向量为

                                            

这就是矩阵 U 了。

同样的过程求解 A^{T}A 的特征值和特征向量,求得 λ1≈0.13393125,λ2≈29.86606875,将特征值降序排列后对应的单位化过的特征向量为

                                               

这就是矩阵 V 了。

而矩阵 Σ 根据上面说的为特征值的平方根构成的对角矩阵

                                           

到此,SVD 分解就结束了,原来的矩阵 A 就被分解成了 3 个矩阵的乘积。

     

____________________________________________________________________________________________________

Numpy 实现

Python 中可以使用 numpy 包的 linalg.svd() 来求解 SVD。

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

奇异值分解 (SVD)原理及python实现 的相关文章

  • 【数学证明 笔记01】证明常见的逻辑方法有哪些?

    文章目录 一 声明 二 直接证明 三 反证法 四 数学归纳法 五 对证法 六 构造法 七 分情况讨论 一 声明 本帖持续更新中 如有纰漏 望指正 二 直接证明 原理 通过一系列逻辑推理和推断来证明目标命
  • 机器学习之迁移学习(Transfer Learning)

    概念 迁移学习 Transfer Learning 是一种机器学习方法 其核心思想是将从一个任务中学到的知识应用到另一个相关任务中 传统的机器学习模型通常是从头开始训练 使用特定于任务的数据集 而迁移学习则通过利用已经在一个任务上学到的知识
  • 【提示工程】Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

    解决问题 探索大语言模型解决推理问题的能力 从头训练或微调模型 需要创建大量的高质量含中间步骤的数据集 成本过大 相关工作 1 使用中间步骤来解决推理问题 1 使用自然语言通过一系列中间步骤解决数学应用题 2 通过创建更大的数据集微调语言模
  • 吴恩达机器学习笔记八 正则化

    使第一项均方差较小来符合数据 使第二项正则化项较小来使 w 较小 0 采用高阶多项式会过拟合 非常大 则每个 w 都很小 F X 约为 b 结果为一条直线 欠拟合 含正则化线性回归的梯度下降 含正则化逻辑回归的梯度下降 到这里第一个专项课程
  • 互操作性(Interoperability)如何影响着机器学习的发展?

    互操作性 Interoperability 也称为互用性 即两个系统之间有效沟通的能力 是机器学习未来发展中的关键因素 对于银行业 医疗和其他生活服务行业 我们期望那些用于信息交换的平台可以在我们需要时无缝沟通 我们每个人都有成千上万个数据
  • 澳鹏干货解答!“关于机器学习的十大常见问题”

    探索机器学习的常见问题 了解机器学习和人工智能的基本概念 原理 发展趋势 用途 方法和所需的数据要求从而发掘潜在的商机 什么是机器学习 机器学习即教授机器如何学习的过程 为机器提供指导 帮助它们自己开发逻辑 访问您希望它们访问的数据 机器学
  • 与 MATLAB 相比,使用 cuSolver 时 SVD 非常慢

    我正在尝试使用gesvd函数来自cuSOLVER我发现它比svdMATLAB 中的函数 对于这两种情况都使用double数组或gpuArray C 代码 使用cuSolver include
  • MATLAB eig 有时会返回倒号

    我正在尝试编写一个获取矩阵的程序A任何大小 SVD 分解它 A U S V Where A是用户输入的矩阵 U是由特征向量组成的正交矩阵A A S是奇异值的对角矩阵 并且V是特征向量的正交矩阵A A 问题是 MATLAB 函数eig有时会返
  • Python机器学习实战:用Python构建10个有趣的应用

    机器学习是一门强大的工具 可以用于解决各种各样的问题 通过学习机器学习 您可以开发出能够自动化任务 做出预测甚至创造艺术的应用程序 如果您是一名 Python 开发人员 那么您将很高兴知道 有许多可以用 Python 构建的有趣机器学习应用
  • lr推荐模型 特征重要性分析

    在分析lr模型特征重要性之前 需要先明白lr模型是怎么回事儿 lr模型公式是sigmoid w1 x1 w2 x2 wn xn 其中w1 w2 wn就是模型参数 x1 x2 xn是输入的特征值 对于lr模型来说 特征可以分为两个粒度 一个是
  • MIT_线性代数笔记:第 23 讲 微分方程和 exp(At)

    目录 微分方程 Differential equations 矩阵指数函数 Matrix exponential e A t e At
  • 山西电力市场日前价格预测【2024-01-05】

    日前价格预测 预测说明 如上图所示 预测明日 2024 01 05 山西电力市场全天平均日前电价为259 10元 MWh 其中 最高日前电价为363 99元 MWh 预计出现在18 00 最低日前电价为0 00元 MWh 预计出现在11 1
  • 奇异值分解:Jama、PColt 和 NumPy 的不同结果

    我想在一个大 稀疏 矩阵上执行奇异值分解 为了选择最好 最准确 的库 我尝试复制提供的 SVD 示例here http www ling ohio state edu kbaker pubs Singular Value Decomposi
  • 通过 SVD 从基本矩阵中提取翻译的正确方法

    我校准了相机并找到了内部参数 K 我还计算了基本矩阵 F 现在 E K T F K 到目前为止 一切都很好 现在我们将基本矩阵 E 传递给 SVD 以使用分解值 U W V 来提取旋转和平移 essentialMatrix K Transp
  • SVD算法实现

    有谁知道 C 上 SVD 对于非常大的矩阵的良好可扩展实现吗 ILNumerics net http ilnumerics net 似乎有 SVD 除其他外 功能列表 http ilnumerics net main php site 21
  • 如何用GPT制作PPT和写代码?

    详情点击链接 如何用GPT制作PPT和写模型代码 一OpenAI 1 最新大模型GPT 4 Turbo 2 最新发布的高级数据分析 AI画图 图像识别 文档API 3 GPT Store 4 从0到1创建自己的GPT应用 5 模型Gemin
  • 【需求响应】改进连续时间控制方法用于分散式需求响应的恒温负荷研究(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码及文章
  • 基于GPT4+Python近红外光谱数据分析及机器学习与深度学习建模

    详情点击链接 基于ChatGPT4 Python近红外光谱数据分析及机器学习与深度学习建模教程 第一 GPT4 基础 1 ChatGPT概述 GPT 1 GPT 2 GPT 3 GPT 3 5 GPT 4模型的演变 2 ChatGPT对话初
  • R程序中非常大矩阵的svd

    我的 txt 文件中有一个矩阵 60 000 x 60 000 我需要获取该矩阵的 svd 我使用R 但我不知道R是否可以生成它 我认为可以计算 部分 svd使用irlba包装和bigmemory and bigalgebra无需使用大量内
  • 机器学习鸡尾酒会音频应用

    我对这篇文章有一个疑问 鸡尾酒会算法 SVD 实现 用一行代码 https stackoverflow com questions 20414667 cocktail party algorithm svd implementation i

随机推荐

  • 配置pacemaker时用到的一些CRM CLI命令

    官方网站 http www clusterlabs org doc crm cli html CRM CLI是分层设计 常见层级如下 node 主要用于节点的各种操作 resource 主要用于资源的各种操作 ra 查看RA的各种属性 co
  • python 均方误差_python如何实现均方误差和均方根误差?

    一 python实现均方误差 均方误差是各数据偏离真实值的距离平方和的平均数 也即误差平方和的平均数 用法 一般被用在机器学习的预测值与真实值之间的距离 均方误差对应的是最小二乘法 coding utf 8 import math def
  • python程序员 培训

    非常感谢大家这么长时间对我们的喜爱和关注 我们都知道 python是当前的大趋势 无论是就业前景 发展空间 还是薪资待遇都是当下最为火爆的行业 所以我们特意联系了央视公开课曾推荐的万门大学 向大家赠送一份人工智能的课程 这个课程我们已经了解
  • QSlider风格设置

    QT的滑动条在开发的过程中经常使用 默认的QSlider风格比较简陋 一般达不到UI设计的效果 本篇记录一个QSlider使用过程中风格的设置 1 qss常用的字段属性 1 1背景属性 属性 值 意思 background Backgrou
  • 用C语言实现经典游戏——贪吃蛇

    目录 1 游戏实现思想 1 定义蛇对象 2 食物对象 3 分数 4 初始化蛇 5 初始化食物 6 修改控制台光标位置 7 画出蛇和食物 8 蛇的移动控制 9 开始游戏 10 蛇移动 11 画墙 12 去除蛇尾 13 去除光标 14 显示分数
  • 06.数据库日常应用实例

    生活事例 01 用户注册 A select操作 搜索数据库所有用户名 B 与新注册的用户名进行比对 C 如果相同 新用户需从新改名 D 直到与数据库中的用户名不同 方能注册 02 转账 A select操作 搜索数据库所有账号 B 收款方账
  • Please enable Javascript to view this page

    今天进防火墙时出错 以下设置解决 internet选项 gt 安全 gt 受信任站点 gt 添加站点 转载于 https www cnblogs com cw828 p 10063200 html
  • 测试原则-阶段-测试用例设计-调试

    测试原则 阶段 测试用例设计 调试 测试原则和方法 测试阶段 测试策略 测试用例的设计 调试 软件度量 测试原则和方法 系统测试 成功的测试 测试原则 软件测试的方法 静态测试 动态测试 测试阶段 单元测试 集成测试 确认测试 系统测试 配
  • 【ETH链游】阿蟹Axie Infinity模拟器运行及多开

    Axie Infinity 众所周知 阿蟹 Axie Infinity 是去年最火的一款GameFi游戏 由越南团队Sky Mavis开发 短短几个月内就红遍东南亚 最大市场在菲律宾 其次是越南 马来西亚 印尼与美国等 去年6月 该游戏单日
  • 个人学习经验: C++ ifndef 作用和用法

    ifndef是if not define的简写 一般的使用场景为 1 头文件中使用 防止头文件被多重调用 2 作为测试使用 省去注释代码的麻烦 3 作为不同角色或者场景的判断使用 头件的中的 ifndef 这是一个很关键的东西 比如你有两个
  • react函数式组件传值之子传父

    在用react进行函数式编程时 父组件可以通过props向子组件传值 那么子组件怎么向父组件传值呢 首先 父组件需要向子组件传递一个函数 然后 子组件通过props获取函数并附上参数 最后 父组件通过函数拿到子组件传递的值 一 具体案例 父
  • gridcontrol选中多行数据进行复制_奇技淫巧:在 ssh 里面把服务器的文本复制到本地电脑...

    点击上方 Python编程时光 选择 加为星标 第一时间关注Python技术干货 2020年 力度最大的购书优惠 千万别错过了 使用 macOS 的同学 应该熟悉一个命令pbcopy 它可以在命令行中把一段内容写入到剪贴板 例如 echo
  • Java安装配置教程,2023年最新版,全部版本看这一篇就够了!!

    JDK新手无脑安装配置教程 JDK下载网址 ps 如果你的JDK版本在官网没有找到 可以通过第三方资源进行下载 下载安装配置教程是通用的 官方链接 gt https www oracle com java technologies java
  • 关于ViewGroup$ViewLocationHolder$mRoot的内存泄漏

    今儿遇到个场景 在Android P API 28 中 在退出了含有RecyclerView的RelativeLayout中 LeakCanary报了这么一个内存泄漏 1 定位问题 1 1 定位源码 在AndroidP中ViewGroup内
  • 初探计算机网络代理

    初探计算机网络代理 文章目录 初探计算机网络代理 什么是计算机网络代理 代理的类型有哪些 正向代理 反向代理 正向代理的实现原理是什么 普通代理 隧道代理 SOCKS 协议 反向代理的实现原理是什么 都有哪些代理产品 TL DR 这篇文章介
  • CH8-多线程

    案例8 1 龟兔赛跑 案例介绍 1 任务描述 众所周知的 龟兔赛跑 故事 兔子因为太过自信 比赛中途休息而导致乌龟赢得了比赛 本案例要求编写一个程序模拟龟兔赛跑 乌龟的速度为1米 1500毫秒 兔子的速度为5米 500毫秒 等兔子跑到第70
  • Prometheus在kubernetes集群的搭建教程

    Prometheus在kubernetes集群的搭建 一 Prometheus介绍 1 Prometheus简介 2 Prometheus介绍 3 Prometheus与市面的监控系统区别 4 Prometheus特点 5 Promethe
  • 21.QT-QTreeWidget,QTabWidget

    QTreeWidget树形列表 设置标签相关函数 void QTreeWidget setHeaderItem QTreeWidgetItem item void QTreeWidget setHeaderLabel constQStrin
  • 论文笔记:NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis

    目录 文章摘要 1 Neural Radiance Field Scene Representation 基于神经辐射场的场景表示 2 Volume Rendering with Radiance Fields 基于辐射场的体素渲染 2 1
  • 奇异值分解 (SVD)原理及python实现

    奇异值分解 Singular Value Decomposition SVD 是一种矩阵分解 Matrix Decomposition 的方法 除此之外 矩阵分解还有很多方法 例如特征分解 Eigendecomposition LU分解 L