SVD分解及其应用

news/2025/10/31 19:36:27/文章来源:https://www.cnblogs.com/WangLiy/p/19181113

一、SVD基本原理

奇异值分解(Singular Value Decomposition, SVD)是一种强大的矩阵分解技术,可以将任意m×n实矩阵A分解为三个特定结构的矩阵乘积:

A = UΣV^T

其中:

  • U:m×m正交矩阵(左奇异向量矩阵)
  • Σ:m×n对角矩阵(奇异值矩阵,对角线元素为奇异值)
  • V:n×n正交矩阵(右奇异向量矩阵)

SVD的核心思想是:将原始矩阵分解为三个矩阵的乘积,其中Σ中的奇异值表示了数据在不同方向上的"重要性"或"能量"。通过保留最大的k个奇异值,可以实现数据的降维。

SVD与特征值分解的区别在于,SVD可以应用于任何实矩阵(包括非方阵),而特征值分解仅适用于方阵。

二、数学原理

SVD的分解过程可以理解为三个几何变换的组合:

  1. V^T:对原始数据进行坐标旋转
  2. Σ:对数据进行拉伸变换
  3. U:对变换后的数据进行坐标旋转

SVD的推导基于以下关键点:

  • 对于任意矩阵A,A^TA和AA^T都是对称矩阵
  • A^TA和AA^T有相同的非零特征值
  • 奇异值是A^TA或AA^T特征值的平方根

三、主要应用

1. 数据降维

SVD在降维任务中发挥关键作用,通过保留最大的k个奇异值及其对应的奇异向量,可以将高维数据投影到低维空间,同时保留数据的主要特征。

应用示例:在机器学习中,SVD可用于特征提取,为分类和聚类任务提供更有效的特征表示。

2. 图像压缩

图像可以表示为矩阵,每个元素代表一个像素的颜色强度。通过SVD分解并保留最大的k个奇异值,可以实现图像压缩。

压缩过程:

  1. 应用SVD分解图像矩阵
  2. 选择保留最大的k个奇异值
  3. 用这些奇异值和对应的奇异向量重建图像

效果:保留前30个奇异值可将图像存储量减少到原始的约13%,同时保持图像的主要特征。

具体案例

假设我们有一张25×15的黑白图像(375个像素点),通过SVD分解后:

  1. 原始图像矩阵M的秩为3(只有3个非零奇异值)
  2. 通过保留前3个奇异值,可以将矩阵表示为:
    • U矩阵:25×3
    • Σ矩阵:3×3
    • V^T矩阵:3×15

原始图像需要375个像素点,而压缩后只需要(25×3 + 3×3 + 3×15) = 129个像素点,压缩率约为65%。

import numpy as np
from numpy import linalg as LA
from PIL import Image
import matplotlib.pyplot as plt# 打开图像文件
img = Image.open("lena.bmp")
# 转换为灰度图像
if img.mode != 'L':img = img.convert('L')
# 将图像转换为NumPy数组
img_array = np.array(img).astype(float)# 对图像矩阵进行奇异值分解
U, s, Vt = LA.svd(img_array)# 选择保留的奇异值数量(k)
k = 10  # 保留前10个奇异值# 重建图像
sigma_k = np.zeros((U.shape[1], Vt.shape[0]))
sigma_k[:k, :k] = np.diag(s[:k])
img_compressed = np.dot(U[:, :k], np.dot(sigma_k, Vt[:k, :]))# 显示结果
plt.figure(figsize=(12, 6))plt.subplot(1, 2, 1)
plt.imshow(img_array, cmap='gray')
plt.title('Original Image')plt.subplot(1, 2, 2)
plt.imshow(img_compressed, cmap='gray')
plt.title(f'Compressed Image (k={k})')plt.show()

3. 推荐系统

SVD在推荐系统中应用广泛,特别是基于协同过滤的推荐算法。

工作原理:

  • 构建用户-物品评分矩阵
  • 对评分矩阵进行SVD分解
  • 通过低秩近似重建评分矩阵
  • 预测用户对未评分物品的兴趣度

实际案例:Netflix Prize竞赛中,基于SVD的协同过滤算法取得了显著成功。

4. 信息检索与文本处理

SVD在潜语义标引(LSI,Latent Semantic Indexing)中发挥核心作用,用于消除同义词干扰并捕捉文本主题关联性。

LSI工作流程:

  1. 构建词项-文档矩阵(TF-IDF加权)
  2. 对矩阵进行SVD分解
  3. 选取前k个最大奇异值实现特征降维
  4. 将文本映射到k维潜在语义空间,解决同义词和多义词问题。

应用场景:

  • 解决查询词与文档词汇不匹配问题
  • 提升信息检索的召回率
  • 用于推荐系统构建和文本聚类分析

5. 矩阵近似与数据修复

SVD可用于矩阵的低秩近似,通过截断奇异值,可以得到一个近似的低秩矩阵,常用于:

  • 数据降噪
  • 缺失数据的填补
  • 提取数据的主要模式

四、SVD的优缺点

优点

  • 适用于任何实矩阵(包括非方阵)
  • 能够保留数据的主要特征
  • 提供了数据的几何解释(旋转+拉伸+旋转)
  • 在多种应用中计算效率高

缺点

  • 计算复杂度高(O(n^3)),不适用于大规模动态语料
  • 降维过程中有不可逆的信息损失
  • 对于高度稀疏的数据集,标准SVD可能不是最有效的方法
  • 缺乏明确的概率解释

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

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

相关文章

2025年市场上工业线束生产厂家排名前十

摘要 工业线束作为智能制造和自动化设备的核心组件,在2025年迎来快速发展,市场需求持续增长。本文基于行业数据和技术评测,为您呈现2025年市场上工业线束生产厂家的前十排名,旨在帮助用户高效选择可靠供应商。排名…

解决Python matplotlib绘制图像无法显示中文的问题

引言 在数据可视化过程中,Python 的 Matplotlib 是广泛使用的绘图库。然而,在图表标题、坐标轴标签或图例中使用中文时,字符会显示为方块。这直接影响数据图表的可读性,尤其在学术论文、技术报告或博客中,这种可读…

2025年工业线束生产厂家排名前十强,东莞众晟强电子引领行业创新

摘要 随着工业4.0和智能制造的深入推进,2025年工业线束行业迎来新一轮技术变革。本文基于市场调研数据和技术实力评估,为您呈现行业内前十强生产厂家的综合排名,并提供详细的企业实力分析供采购决策参考。表单数据显…

完整教程:【C语言数据结构】第2章:线性表(1)--定义ADT

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【论道】前端动画总结

楼高望不见,尽日栏杆头。—— 《西洲曲》 最近在做某项目首页,甲方要求要有动效,不得不捡起当年在AI部练就的css技能,索性做个总结,以便归纳自己在交互与动效的经验。 前端岗是用户与产品的一道桥梁,既是UI在htm…

软件构建,藏在细节里的“工程思维”

如果说编程入门时,我学的是“如何写出一行能执行的代码”,那《代码大全2》教会我的,就是“如何用工程思维构建一个可靠的软件系统”。这本书厚达千页,却没有一句废话,从需求分析到代码调试,从团队协作到项目维护…

从“会编码”到“懂开发”,一场开发者的认知升级

在编程这条路上,我曾以为“技术栈越新、代码写得越快”就是优秀开发者的标准。直到读完《代码大全2》,才发现自己一直停留在“会编码”的层面,而这本书,恰好为我打开了“懂开发”的大门。它不只是一本编码技巧手册…

Mac版4K Video Downloader Plus Pro v1.5.2安装教程|dmg文件下载后拖拽到应用程序教程

Mac版4K Video Downloader Plus Pro v1.5.2安装教程|dmg文件下载后拖拽到应用程序教程​ 一款 ​Mac 专用​ 的视频下载工具,支持从 ​YouTube、抖音、B站、Facebook 等主流平台​ 高速下载视频、音频,还能下载 ​4…

《代码大全》的读后感

在软件开发领域摸爬滚打三年后,我曾陷入一种 “技能停滞” 的困境 —— 能熟练使用主流框架实现需求,却总在项目迭代中频繁遭遇代码臃肿、bug 频发的问题,始终无法突破 “合格开发者” 到 “优秀开发者” 的壁垒。直…

把coarse粗调音高转换成频率的数学公式

把coarse粗调音高转换成频率的数学公式频率倍数 = 2^(coarse/12)

思科vManage漏洞分析:四漏洞链实现未授权远程代码执行

本文详细分析了Cisco Viptela vManage中的四个安全漏洞,包括SSRF+任意文件写入、未授权文件读取+目录遍历、命令注入和权限提升漏洞,攻击者可通过组合利用这些漏洞实现未授权的远程代码执行并获取root权限。SD-PWN —…

Java流程控制练习——打印三角形及debug调试

Java流程控制练习——打印三角形及debug调试练习————用*号打印三角形 public class test_demo {static void main(String[] args) {//打印一个5行的三角形for (int i = 1; i <=5; i++) {for (int j = 5; j>…

CH585驱动CH271播放音频

前言: 本文提供CH585通过双路PWM驱动271芯片,进而实现驱动音频。相较单路PWM,优点在于不需要调节RC电路,且外围简单。 操作指令: ①通过ffmpeg命令行工具将wav格式文件转换为sbc格式文件,转换成的文件需手动将.s…

10.31 —— (VP)2023icpc济南

这把打得中规中矩,前期一道签到题出得有点慢了;最后一道铜牌题关键思路是对的,但还是做法有问题超时了。 \(D\) 纯签到 \(J\):每一次考虑排好一整个前缀,那么每次操作至少会让前缀长度加 \(2\),只需要选择 当前已…

MIM + PEFT + MLP + Q

零样本学习------稳健的语义特征能力----富含语义信息的训练数据集----使用SOS数据集(主要关注语义重要区域内的低频特征) 密集预测任务-----处理高频细节--------擅长密集预测的与训练模型----使用COS模型(善于识别…

《程序员修炼之道 - 从小工到专家》阅读笔记2

3 石头汤与煮青蛙 两个方面,一还是软件的熵当中的含义,喜欢书里面的这段话:大多数的项目的拖 延都是一天一天发生的,系统一个特性一个特性的偏离其规范.一个又一个的补丁被打 到某段代码上,直到最初的代码一点没有留下…

《程序员修炼之道 - 从小工到专家》阅读笔记3

5 你的知识资产 关于学习的一个章节,提到了不少如何学习,把学习知识作为投资一样看待,分析的也 很在理.自认为在这方面还是赶上了书中的要求,不然也不会看到这本书了_,学习是 一个过程,不会有立杆见影的效果,当然我们不…

《程序员修炼之道 - 从小工到专家》阅读笔记1

1.我的源码让猫给吃了 不要寻找借口,从自身找原因 2.软件的熵 一句话:不以善小而不为,勿以恶小而为之. 从初期就要做好规范,不要因为是poc这样的前提而放松对代码的规范,现在的项目就有这种问题,初期的时候有人认为(自…

Java流程控制——break,continue,goto

Java流程控制——break,continue,gotobreak,continue语句在任何循环语句的主体部分,都可以使用break语句控制循环流程。 break用于强制退出循环,不执行循环中剩余的语句。(在switch中也使用) continue语句用于在循…

读《代码大全2》第三部分有感

《代码大全2》第三部分“变量”,看似聚焦于软件开发中最基础的“变量”概念,却以极致的细节与深度,打破了我对“变量只是存储数据的容器”的浅层认知。这部分从变量使用的常规问题、命名规则,到基本与不常见数据类…