奇异值分解(SVD)是一种矩阵因子分解方法,在线性代数中,被广泛应用。
奇异值分解也是一种矩阵近似的方法,这个近似是在弗罗贝尼乌斯范数(Frobenius norm) 意义下的近似。
奇异值分解是在平方损失(弗罗贝尼乌斯范数)意义下对矩阵的最优近似,即数据压缩。
将一个 m×n 的实矩阵A,A∈Rm×n 表示为以下三个实矩阵乘积形式的运算,即矩阵因子分解:
A=UΣVT
其中,
- U是m阶正交矩阵: UUT=I
- V为n阶正交矩阵: VVT=I
- Σ是由降序排列的非负的对角线元素组成的m×n的对角矩阵:
- Σ=diag(σ1,σ2,⋯,σp)
- σ1⩾σ2⩾⋯⩾σp⩾0
- p=min(m,n)
那么,称
- UΣVT : 矩阵A的奇异值分解
- σi 为A的奇异值(singluar value)
- U 的列向量为左奇异向量(left singular vector)
- V 的列向量为右奇异向量(right singular vector)
⚠️注意,矩阵的奇异值分解不唯一。

实际常用的是:
设m×n的实矩阵A,其秩为rank(A)=r, r⩽min(m,n), 则紧奇异值分解为:
A=UrΣrVrT
其中,
- Ur 是 m×r 矩阵
- Vr 是 n×r 矩阵
- Σr 是 r 阶对角阵
- r=rank(A)
一般讲奇异值分解,实际上多指截断奇异值分解
在奇异值分解中, 只取最大的k个奇异值(k<r,r=rank(A) )对应的部分,就得到截断奇异值分解
设 m×n 的实矩阵 A,其秩为 rank(A)=r, 且 0<k<r, 则截断奇异值分解为:
A≈UkΣkVkT
其中,
- Uk 是m×k 矩阵(前 k列)
- Vk 是n×k 矩阵(前 k列)
- Σk 是 k 阶对角阵(前 k个)
- r=rank(A)
从线性变换的角度理解奇异值分解:
将 m×n 的实矩阵 A表示为从 n 维空间 Rn 到 m 维空间 Rm的一个线性变换:
T:x→Ax
x, Ax为各自空间的向量。
那么线性变换可以理解为:
- 一个坐标系的旋转或反射变换
- 一个坐标轴的缩放变换
- 另一个坐标系的旋转或反射变换
对A进行奇异值分解,U和V都是正交矩阵
- V的列向量构成Rn空间的一组标准正交基,表示Rn空间中正交坐标系的旋转或反射变换
- U的列向量都成Rm空间的一组标准正交基,表示Rm空间中正交坐标系的旋转或反射变换
- Σ的对角元素是一组非负实数,表示Rn中的原始正交坐标系坐标轴的缩放变换

矩阵A的奇异值分解可以通过求对阵矩阵ATA的特征值和特征向量得到。
- ATA的特征向量构成正交矩阵V的列
- ATA的特征值λj的平方根为奇异值σi,即
σj=λj,j=1,2,⋯,n
- 对σi从大到小排列,得到对角矩阵 Σ
- 求正奇异值对应的左奇异向量,再扩充的 AT 的标准正交基,构成正交矩阵 U 的列
- 求对阵矩阵ATA的特征值和特征向量
计算对称矩阵 W=ATA
求解特征方程 (W−λI)x=0
得到特征值λi,并将之降序排列
λ1⩾λ2⩾⋯⩾λn⩾0
将特征值 λi 代入特征方程求的对应特征向量
- 求 n 阶正交矩阵 V
将特征向量单位化, 得到单位特征向量构成 n 阶正交矩阵V
V=[v1v2⋯vn]
- 求 m×n 对角矩阵 Σ
计算A的奇异值
σj=λj,j=1,2,⋯,n
构造 m×n 矩阵对角矩阵 Σ, 主对角线元素是奇异值, 其余元素为 0
Σ=diag(σ1,σ2,⋯,σn)
- 求 m 阶正交矩阵 U
对 A 的前 r个正奇异值, 令
uj=σj1Avj,j=1,2,⋯,r
得到
U1=[u1u2⋯ur]
求 AT 的零空间的一组标准正交基
{ur+1,ur+2,⋯,um}
令
U2=[ur+1ur+2⋯um]
且令
U=[U1U2]
- 得到奇异值分解
A=UΣVT
求: 矩阵 A 的奇异值分解
A=⎣⎢⎡120120⎦⎥⎤
解:
- 求 ATA 的特征值和特征向量
ATA=[112200]⎣⎢⎡120120⎦⎥⎤=[5555]
满足特征方程
(ATA−λI)x=0
得到齐次线性方程组
{(5−λ)x1+5x1+5x2=0(5−λ)x2=0
该方程组有非零解的充要条件是
∣∣∣∣∣5−λ555−λ∣∣∣∣∣=0
即
λ2−10λ=0
得到 λ1=10, λ2=0.
特征值代入线性方程组,分别得到对应单位特征向量
v1=[2121],v2=[21−21]
- 求正交矩阵 V
构造正交矩阵
V=[212121−21]
- 求对角矩阵 Σ
奇异值为 σ1=λ1=10, σ2=0, 那么
Σ=⎣⎢⎡1000000⎦⎥⎤
⚠️注意: 为了 Σ 能与U和V进行矩阵乘法, Σ要加上零行向量
- 求正交矩阵 U
基于 A 的奇异值计算得到列向量 u1
u1=σ11Av1=101⎣⎢⎡120120⎦⎥⎤[2121]=⎣⎢⎡51520⎦⎥⎤
列向量u2, u3是 AT的零空间 N(AT) 的一组标准正交基,故而求解以下线性方程组
ATx=[112200]⎣⎢⎡x1x2x3⎦⎥⎤=[00]
即
x1+2x2+0x3=0x1=−2x2+0x3
分别取 x2,x3 为 (1,0) 和 (0,1) 得到 N(AT)的基
(−2,1,0)T,(0,0,1)T
得 N(AT) 的一组标准正交基是
u2=(−52,51,0)T,u3=(0,0,1)T
最后,构造正交矩阵 U
U=⎣⎢⎡51520−52510001⎦⎥⎤
- 矩阵 A 的奇异值分解
A=UΣVT=⎣⎢⎡51520−52510001⎦⎥⎤⎣⎢⎡1000000⎦⎥⎤[212121−21]
将A的奇异值分解看成矩阵 UΣ 和 VT 的乘积,
将 UΣ 按列向量分块,
UΣ=[σ1u1σ2u2⋯σnun]
VT 按行向量分块
VT=⎣⎢⎢⎢⎢⎡v1Tv2T⋮vnT⎦⎥⎥⎥⎥⎤
那么外积展开式为
A=σ1u1v1T+σ2u2v2T+⋯+σnunvnT
或者
A=k=1∑nAk=k=1∑nσkukvkT
其中 Ak=σkukvkT 是 m×n 矩阵
而
uivjT=⎣⎢⎢⎢⎢⎡u1iu2i⋮umi⎦⎥⎥⎥⎥⎤[v1jv2j⋯vnj]=⎣⎢⎢⎢⎢⎡u1iv1ju2iv1j⋮umiv1ju1iv2ju2iv2j⋮umiv2j⋯⋯⋯u1ivnju2ivnj⋮umivnj⎦⎥⎥⎥⎥⎤
Determinant:
The determinant of a square matrix
is a scalar
that provides information about the matrix. e.g. Invertibility
Geometrically, it can be viewed as the volume scaling factor
of the linear transformation
described by the matrix.
- 一个矩阵的行列式就是一个超平行多面体的(有向的)面积/体积,这个多面体的每条边对应着对应矩阵的列;
- 矩阵 A 的行列式 det(A) 就是线性变换 A 下的图形面积或体积的伸缩因子。
- 矩阵的行列式的几何意义是矩阵对应的线性变换前后的面积比
Property:
- Det(I)=1
- Exchanging rows only reverse the sign of det
- Determinant is “linear” for each row
- det(A)=0, A is invertible
- Cramer’s rule: A−1=det(A)1CT
- det(A): scalar
- C: cofactors of A (C has the same size as A)
- CT is adjugate of A (伴随矩阵)
Eigenvalue and Eigenvector
Eigen (German word): “unique to” or “belonging to”
if Av=λv (v is a vector , λ is a scalar)
- A must be square
- v is an eigenvector of A, exluding zero vector
- λ is an eigenvalue of A that correponds to v
T is a linear operator if T(v)=λv ( v is a vector, λ is a scalar)
- v is an eigenvector of T, exluding zero vector
- λ is an eigenvalue of T that correponds to v
An eigenvector of A corresponds to a unique eigenvalue.
An eigenvalue of A has infinitely many eigenvectors.
=> how to find eigenvalues t :
det(A−tIn)=0
参考: 李航《统计学习方法》