矩阵svd分解算法
SVD全称为Singular Value Decomposition(奇异值分解),是一种非常重要的矩阵分解方法,被广泛应用于信号处理、图像处理、机器学习等领域。本文将介绍SVD的定义、求解方法以及应用。
一、SVD定义
矩阵SVD分解,指将一个复矩阵A分解成如下的形式:
A = UΣV^T
其中,U和V是正交矩阵,Σ是一个对角矩阵,对角线上的元素称为奇异值,通常用σ1 ≥ σ2 ≥ … ≥ σr > 0来表示。
二、SVD求解方法
下面我们针对mxn的矩阵A,讲述一下SVD的求解步骤。 1. 首先求A^T·A的特征值和特征向量,设A^T·A的特征值为λ1, λ2, …, λm,对应的特征向量为v1, v2, …, vm 。其中λ1≥λ2≥…≥λr>0。
2. 接着我们对v1, v2, …, vm进行标准化。
3. 将标准化后的v1, v2, …, vm组成正交矩阵V,即:
V=[v1, v2, …, vm]。
特别的,当A为实矩阵时,可得到实特征向量和实奇异值,此时V是一个正交矩阵。
4. 由于λ1, λ2, …, λr是A^T·A的非负特征值,我们可以得到A^T·A的奇异值:σ1=√λ1, σ2=√λ2, …, σr=√λr。并将非零奇异值按照从大到小降序排列。
5. 求解奇异值对应的左奇异向量,设A^T·A的第i大特征值对应的特征向量为vi,i=1,2,...,r。则A的左奇异向量为:
ui=1/σi·Avi,i=1,2,...,r。
将u1, u2, …, ur组成正交矩阵U,即: U=[u1, u2, …, ur]。
特别的,当A为实矩阵时,可得到实左奇异向量。
6. 当m>n时,需要计算A·A^T的右奇异向量。根据定义可得:
vi=1/σi·A^Tui,i=1,2,...,r。
这些向量也组成了一个正交矩阵V,将它们作为A的右奇异向量。
7. 将奇异值按降序排列,对应的奇异向量组成U、V。