文章目录
基本概念
奇异值分解(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=(1324)
计算步骤简化:
对于这样一个小矩阵,直接计算其特征值和特征向量较为直接,但为了演示奇异值分解,我们仍按步骤进行:
-
计算 ( A^TA ) 和 ( AA^T ):
- A T A = ( 14 32 32 80 ) A^TA = \begin{pmatrix} 14 & 32 \\ 32 & 80 \end{pmatrix} ATA=(14323280)
- A A T = ( 10 26 26 74 ) AA^T = \begin{pmatrix} 10 & 26 \\ 26 & 74 \end{pmatrix} AAT=(10262674)
-
求解特征值和特征向量:
- 对于 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)。
-
构造奇异值矩阵 Σ:
- 假设计算后得到 σ 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=次大特征值 ,则Σ=(σ100σ2)。
-
完成分解:
- 假定求得的 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)在多个领域有着重要且广泛的应用,以下是一些主要的作用和用途:
-
数据压缩与降维:通过仅保留最大的几个奇异值及其对应的左、右奇异向量,可以对原始数据进行有效压缩,去除噪声,实现数据的低秩近似表示,这对于图像和视频压缩、文本分析等领域非常有用。
-
推荐系统:在推荐系统中,用户-物品评分矩阵往往稀疏且非负,SVD可以用来填充缺失值,预测用户可能对未评分项目的喜好,从而提供个性化推荐。
-
图像处理与去噪:在图像处理领域,SVD可以用来分离图像中的不同特征,通过移除较小的奇异值对应的分量,可以去除图像中的噪声,实现图像去噪和增强。
-
自然语言处理:通过将词汇表或文档-词频矩阵进行SVD分解,可以得到词语和文档的低维表示,有助于文本分类、情感分析、主题建模等任务。
-
信号处理与分析:在信号处理中,SVD可以用于信号的分离,比如从混合信号中提取出独立的源信号,或者在生物医学信号分析中分离出特定的生理活动模式。
-
主成分分析(PCA)的泛化:虽然PCA主要应用于方阵或协方差矩阵,但SVD可以看作是对PCA的一种泛化,能处理任意形状的矩阵,进行数据的主成分分析和降维。
-
数据分析与模式识别:SVD可以帮助识别数据中的主要模式和结构,特别是在高维数据集中,通过降低数据的维度,使得数据更容易理解和可视化,同时保留数据的主要特征。
-
搜索引擎与信息检索:在信息检索系统中,SVD可以用于文档排名和关键词提取,提高搜索结果的相关性和精确度。
综上所述,SVD作为一种强大的数学工具,通过揭示数据中的主要结构和特征,广泛应用于各种复杂数据处理和分析场景,提升了算法的效率和效果。
标签:特征值,特征向量,SVD,矩阵,分解,奇异,对应,向量 From: https://blog.csdn.net/weixin_50569789/article/details/139604629