首页 > 其他分享 >奇异值分解(SVD)

奇异值分解(SVD)

时间:2024-06-11 17:58:42浏览次数:18  
标签:特征值 特征向量 SVD 矩阵 分解 奇异 对应 向量

文章目录

在这里插入图片描述
在这里插入图片描述

基本概念

奇异值分解(Singular Value Decomposition,简称SVD)是一种将任意矩阵分解为三个矩阵乘积的重要线性代数技术。对于一个 m * n 的矩阵 ( A ),其奇异值分解可以表示为:

A = U Σ V T A = U \Sigma V^T A=UΣVT

其中,( U ) 是一个 m*m 的正交矩阵,其列向量称为左奇异向量

Σ 是一个 m*n 的对角矩阵,其非零元素称为奇异值,且按降序排列;

( V ) 是一个 n*n 的正交矩阵,其列向量称为右奇异向量; V T 表示 V 的转置。 V^T 表示 V 的转置。 VT表示V的转置。

计算步骤:

1. 计算 ( A^TA ) 和 ( AA^T )
  • A T A 是一个 n × n 的矩阵,其特征值对应于矩阵 A 的右奇异向量的平方,对应的特征向量即为 V 中的列向量。 A^TA 是一个 n \times n 的矩阵,其特征值对应于矩阵 A 的右奇异向量的平方,对应的特征向量即为 V 中的列向量。 ATA是一个n×n的矩阵,其特征值对应于矩阵A的右奇异向量的平方,对应的特征向量即为V中的列向量。
  • A A T 是一个 m × m 的矩阵,其特征值同样对应于矩阵 A 的左奇异向量的平方,对应的特征向量即为 U 中的列向量。 AA^T 是一个 m \times m 的矩阵,其特征值同样对应于矩阵 A 的左奇异向量的平方,对应的特征向量即为 U 中的列向量。 AAT是一个m×m的矩阵,其特征值同样对应于矩阵A的左奇异向量的平方,对应的特征向量即为U中的列向量。
2. 求解特征值和特征向量
  • 对于 A T A ,求解得到 n 个特征值 σ i 2 和相应的特征向量 v i ,这些特征向量需要单位化成为正交基,即构成了矩阵 V 。 对于 A^TA ,求解得到 n 个特征值 \sigma_i^2 和相应的特征向量 v_i ,这些特征向量需要单位化成为正交基,即构成了矩阵 V 。 对于ATA,求解得到n个特征值σi2​和相应的特征向量vi​,这些特征向量需要单位化成为正交基,即构成了矩阵V。
  • 对于 A A T ,求解得到 m 个特征值(最多 n 个非零),对应的特征向量 u i 组成矩阵 U 。注意,如果 m > n ,则 A A T 会有 m − n 个额外的零特征值,对应的特征向量可自由选择,但通常选择使得 U 为正交矩阵。 对于 AA^T ,求解得到 m 个特征值(最多 n 个非零),对应的特征向量 u_i 组成矩阵 U 。注意,如果 m > n ,则 AA^T 会有 m-n 个额外的零特征值,对应的特征向量可自由选择,但通常选择使得 U 为正交矩阵。 对于AAT,求解得到m个特征值(最多n个非零),对应的特征向量ui​组成矩阵U。注意,如果m>n,则AAT会有m−n个额外的零特征值,对应的特征向量可自由选择,但通常选择使得U为正交矩阵。
3. 构造奇异值矩阵 Σ
  • 奇异值 σ i 是 A T A 或 A A T 特征值的平方根,按照大小顺序排列,并填充到对角矩阵 Σ 的对角线上。如果 m > n , Σ 的右边会有 m − n 列全为 0 。 奇异值 \sigma_i 是 A^TA 或 AA^T 特征值的平方根,按照大小顺序排列,并填充到对角矩阵 \Sigma 的对角线上。如果 m > n , \Sigma 的右边会有 m-n 列全为0。 奇异值σi​是ATA或AAT特征值的平方根,按照大小顺序排列,并填充到对角矩阵Σ的对角线上。如果m>n,Σ的右边会有m−n列全为0。
4. 完成分解
  • 确保 U , Σ , 和 V 按照上述步骤构建后,它们的乘积 U Σ V T 应当等于原始矩阵 A 。 确保 U , \Sigma , 和 V 按照上述步骤构建后,它们的乘积 U \Sigma V^T 应当等于原始矩阵 A 。 确保U,Σ,和V按照上述步骤构建后,它们的乘积UΣVT应当等于原始矩阵A。

具体例子:

假设有一个简单的 2 * 2 矩阵 ( A ):

A = ( 1 2 3 4 ) A = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} A=(13​24​)

计算步骤简化:

对于这样一个小矩阵,直接计算其特征值和特征向量较为直接,但为了演示奇异值分解,我们仍按步骤进行:

  1. 计算 ( A^TA ) 和 ( AA^T ):

    • A T A = ( 14 32 32 80 ) A^TA = \begin{pmatrix} 14 & 32 \\ 32 & 80 \end{pmatrix} ATA=(1432​3280​)
    • A A T = ( 10 26 26 74 ) AA^T = \begin{pmatrix} 10 & 26 \\ 26 & 74 \end{pmatrix} AAT=(1026​2674​)
  2. 求解特征值和特征向量:

    • 对于 A T A ,设其特征值和对应的单位特征向量为 ( σ 1 2 , v 1 ) , ( σ 2 2 , v 2 ) 。实际计算略过,但理论上我们会得到两个正交的单位向量 v 1 , v 2 ,和对应的 σ 1 2 , σ 2 2 。 对于 A^TA ,设其特征值和对应的单位特征向量为 (\sigma_1^2, v_1), (\sigma_2^2, v_2) 。实际计算略过,但理论上我们会得到两个正交的单位向量 v_1, v_2 ,和对应的 \sigma_1^2, \sigma_2^2 。 对于ATA,设其特征值和对应的单位特征向量为(σ12​,v1​),(σ22​,v2​)。实际计算略过,但理论上我们会得到两个正交的单位向量v1​,v2​,和对应的σ12​,σ22​。
    • 对于 A A T ,类似地,设其特征值和对应的单位特征向量为 ( σ 1 2 , u 1 ) , ( σ 2 2 , u 2 ) 。 对于 AA^T ,类似地,设其特征值和对应的单位特征向量为 (\sigma_1^2, u_1), (\sigma_2^2, u_2) 。 对于AAT,类似地,设其特征值和对应的单位特征向量为(σ12​,u1​),(σ22​,u2​)。
  3. 构造奇异值矩阵 Σ:

    • 假设计算后得到 σ 1 = 最大特征值 , σ 2 = 次大特征值 ,则 Σ = ( σ 1 0 0 σ 2 ) 。 假设计算后得到 \sigma_1 = \sqrt{\text{最大特征值}} , \sigma_2 = \sqrt{\text{次大特征值}} ,则 \Sigma = \begin{pmatrix} \sigma_1 & 0 \\ 0 & \sigma_2 \end{pmatrix} 。 假设计算后得到σ1​=最大特征值 ​,σ2​=次大特征值 ​,则Σ=(σ1​0​0σ2​​)。
  4. 完成分解:

    • 假定求得的 U = [ u 1 , u 2 ] , V = [ v 1 , v 2 ] ,则 A = U Σ V T 。 假定求得的 U = [u_1, u_2] , V = [v_1, v_2] ,则 A = U \Sigma V^T 。 假定求得的U=[u1​,u2​],V=[v1​,v2​],则A=UΣVT。

注意:在实际操作中,特别是对于较大的矩阵,直接手动计算可能会非常复杂,通常会使用数值计算软件或编程语言中的库函数(如Python中的NumPy库)来完成这一过程。

作用和用途

奇异值分解(SVD)在多个领域有着重要且广泛的应用,以下是一些主要的作用和用途:

  1. 数据压缩与降维:通过仅保留最大的几个奇异值及其对应的左、右奇异向量,可以对原始数据进行有效压缩,去除噪声,实现数据的低秩近似表示,这对于图像和视频压缩、文本分析等领域非常有用。

  2. 推荐系统:在推荐系统中,用户-物品评分矩阵往往稀疏且非负,SVD可以用来填充缺失值,预测用户可能对未评分项目的喜好,从而提供个性化推荐。

  3. 图像处理与去噪:在图像处理领域,SVD可以用来分离图像中的不同特征,通过移除较小的奇异值对应的分量,可以去除图像中的噪声,实现图像去噪和增强。

  4. 自然语言处理:通过将词汇表或文档-词频矩阵进行SVD分解,可以得到词语和文档的低维表示,有助于文本分类、情感分析、主题建模等任务。

  5. 信号处理与分析:在信号处理中,SVD可以用于信号的分离,比如从混合信号中提取出独立的源信号,或者在生物医学信号分析中分离出特定的生理活动模式。

  6. 主成分分析(PCA)的泛化:虽然PCA主要应用于方阵或协方差矩阵,但SVD可以看作是对PCA的一种泛化,能处理任意形状的矩阵,进行数据的主成分分析和降维。

  7. 数据分析与模式识别:SVD可以帮助识别数据中的主要模式和结构,特别是在高维数据集中,通过降低数据的维度,使得数据更容易理解和可视化,同时保留数据的主要特征。

  8. 搜索引擎与信息检索:在信息检索系统中,SVD可以用于文档排名和关键词提取,提高搜索结果的相关性和精确度。

综上所述,SVD作为一种强大的数学工具,通过揭示数据中的主要结构和特征,广泛应用于各种复杂数据处理和分析场景,提升了算法的效率和效果。

标签:特征值,特征向量,SVD,矩阵,分解,奇异,对应,向量
From: https://blog.csdn.net/weixin_50569789/article/details/139604629

相关文章

  • NOIP 2012 T1 质因数分解
    描述已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数。输入描述输入只有一行,包含一个正整数 n。输出描述输出只有一行,包含一个正整数 p,即较大的那个质数。用例输入1 21用例输出1 7提示【数据范围】对于 60%的数据, 6≤n≤1000。 对于 1......
  • 2032:【例4.18】分解质因数
    2032:【例4.18】分解质因数时间限制:1000ms      内存限制:65536KB提交数:41561   通过数: 26559【题目描述】把一个合数分解成若干个质因数乘积的形式(即求质因数的过程)叫做分解质因数。分解质因数(也称分解素因数)只针对合数。输入一个正整数<spanid="......
  • 基于多尺度相关小波分解的单幅图像去雾和去噪方法(MATLAB)
    小波变换具有优美的数学背景和强大的多分辨率分析能力。它集成和发展了短时傅里叶变换的思想并克服了其时间窗口不可变的缺点。小波变换通过使用具有局部感受野和多尺度的基函数。形成了同时具有局部和全局性质的信号表征。与DCT等全局变换相比,小波变换可以防止局部高频信息扩......
  • Java运算符 二进制计算 素数问题 九九乘法表 月份问题 分解质因数 完全数问题 天数计
    1.代码观察inta=6--;System.out.println(a);在Java中,后置递减运算符--只能在整型(int)和长整型(long)变量上使用,而且必须将--放在变量值的后面。因此,6--是非法的,Java编译器会报错。正确代码如下inta=6;a--;System.out.println(a);输出结果为52.代码分析Syst......
  • 基于DCT变换和位平面分解的数字水印嵌入提取算法matlab仿真
    1.算法运行效果图预览    2.算法运行软件版本matlab2022a 3.算法理论概述    基于离散余弦变换(DiscreteCosineTransform,DCT)和位平面分解(Bit-PlaneDecomposition)的数字水印嵌入与提取算法,是一种结合了频域与空域特性的稳健数字水印技术。该方法利......
  • CSP历年复赛题-P1075 [NOIP2012 普及组] 质因数分解
    原题链接:https://www.luogu.com.cn/problem/P1075题意解读:求n的两个素因子中较大的一个。解题思路:数论的简单题,关键在于要知道一定有一个素因子不超过sqrt(n),而另一个素因子必然大于或等于sqrt(n),这样才能减少枚举时间。100分代码:#include<bits/stdc++.h>usingnamespaces......
  • 基于Matlab OMP和KSVD算法的彩色图像修复
    欢迎大家点赞、收藏、关注、评论啦,由于篇幅有限,只展示了部分核心代码。文章目录一项目简介二、功能三、系统四.总结一项目简介  一、项目背景与意义在数字图像处理领域,图像修复技术一直是一个重要的研究方向。彩色图像修复旨在恢复图像中由于各种原因(如划......
  • 功能分解图
    某培训机构入学管理系统有报名、交费和就读等多项功能,下面是对其各项功能的说明:1、报名:由报名处负责,需要在学员登记表上进行报名登记,需要查询课程表让学员选报课程,学院所报课程将记录到学员选课表2、交费:由收费处负责,需要根据学员所报课程的收费标准进行收费,然后在账目表上记......
  • 深度学习之基于Tensorflow低光增强的深层Retinex分解
    欢迎大家点赞、收藏、关注、评论啦,由于篇幅有限,只展示了部分核心代码。文章目录一项目简介二、功能三、系统四.总结一项目简介  一、项目背景与意义在图像处理领域,低光照环境下的图像增强是一个具有挑战性的问题。为了提高图像的可视性和细节信息,本研究项......
  • 2022-06-28-dagum基尼系数分解工具
    dagum基尼系数分解工具相比于传统的基尼系数而言,Dagum基尼系数能够将其分解为地区内差距、地区间差距以及超变密度。Dagum基尼系数的相关计算公式如下:1、总体基尼系数:2.子群内部基尼系数3.子群之间基尼系数4.子群内差异对总体基尼系数贡献5.子群间差异对总体基尼系数......