Singular Value Decomposition (SVD)

Contents

奇异值分解(SVD)是一种矩阵因子分解方法,在线性代数中,被广泛应用。
奇异值分解也是一种矩阵近似的方法,这个近似是在弗罗贝尼乌斯范数(Frobenius norm) 意义下的近似。
奇异值分解是在平方损失(弗罗贝尼乌斯范数)意义下对矩阵的最优近似,即数据压缩。

将一个 m×nm \times n 的实矩阵AAARm×nA \in \mathbf{R}^{m \times n} 表示为以下三个实矩阵乘积形式的运算,即矩阵因子分解:

A=UΣVT A=U \Sigma V^{\mathrm{T}}

其中,

  • UUmm阶正交矩阵: UUT=IUU^T = I
  • VVnn阶正交矩阵: VVT=IVV^T = I
  • Σ\Sigma是由降序排列的非负的对角线元素组成的m×nm \times n的对角矩阵:
    • Σ=diag(σ1,σ2,,σp)\Sigma = diag(\sigma_1, \sigma_2, \cdots, \sigma_p)
    • σ1σ2σp0\sigma_{1} \geqslant \sigma_{2} \geqslant \cdots \geqslant \sigma_{p} \geqslant 0
    • p=min(m,n)p = \min(m, n)

那么,称

  • UΣVTU \Sigma V^{\mathrm{T}} : 矩阵A的奇异值分解
  • σi\sigma_i 为A的奇异值(singluar value)
  • UU 的列向量为左奇异向量(left singular vector)
  • VV 的列向量为右奇异向量(right singular vector)

⚠️注意,矩阵的奇异值分解不唯一。

/images/stats/SVD.png

实际常用的是:

m×nm \times n的实矩阵AA,其秩为rank(A)=r\operatorname{rank}(A)=r, rmin(m,n)r \leqslant \min (m, n), 则紧奇异值分解为:

A=UrΣrVrT A=U_r \Sigma_r V^{\mathrm{T}}_r

其中,

  • UrU_rm×rm \times r 矩阵
  • VrV_rn×rn \times r 矩阵
  • Σr\Sigma_rrr 阶对角阵
  • r=rank(A)r = \operatorname{rank}(A)

一般讲奇异值分解,实际上多指截断奇异值分解

在奇异值分解中, 只取最大的kk个奇异值(k<r,r=rank(A)k < r, r= \operatorname{rank}(A) )对应的部分,就得到截断奇异值分解

m×nm \times n 的实矩阵 AA,其秩为 rank(A)=r\operatorname{rank}(A)=r, 且 0<k<r0 < k < r, 则截断奇异值分解为:

AUkΣkVkT A \approx U_{k} \Sigma_{k} V_{k}^{\mathrm{T}}

其中,

  • UkU_km×km \times k 矩阵(前 kk列)
  • VkV_kn×kn \times k 矩阵(前 kk列)
  • Σk\Sigma_kkk 阶对角阵(前 kk个)
  • r=rank(A)r = \operatorname{rank}(A)

从线性变换的角度理解奇异值分解: 将 m×nm \times n 的实矩阵 AA表示为从 nn 维空间 RnR_nmm 维空间 RmR_m的一个线性变换:

T:xAx T: x \rightarrow A x

xx, AxAx为各自空间的向量。

那么线性变换可以理解为:

  1. 一个坐标系的旋转或反射变换
  2. 一个坐标轴的缩放变换
  3. 另一个坐标系的旋转或反射变换

对A进行奇异值分解,U和V都是正交矩阵

  • V的列向量构成Rn空间的一组标准正交基,表示Rn空间中正交坐标系的旋转或反射变换
  • U的列向量都成Rm空间的一组标准正交基,表示Rm空间中正交坐标系的旋转或反射变换
  • Σ\Sigma的对角元素是一组非负实数,表示Rn中的原始正交坐标系坐标轴的缩放变换

/images/stats/1200px-Singular-Value-Decomposition.svg.png

矩阵AA的奇异值分解可以通过求对阵矩阵ATAA^TA的特征值和特征向量得到。

  • ATAA^TA的特征向量构成正交矩阵VV的列
  • ATAA^TA的特征值λj\lambda_j的平方根为奇异值σi\sigma_i,即

σj=λj,j=1,2,,n \sigma_{j}=\sqrt{\lambda_{j}}, \quad j=1,2, \cdots, n

  • σi\sigma_i从大到小排列,得到对角矩阵 Σ\Sigma
  • 求正奇异值对应的左奇异向量,再扩充的 ATA^T 的标准正交基,构成正交矩阵 UU 的列
  1. 求对阵矩阵ATAA^TA的特征值和特征向量

计算对称矩阵 W=ATAW= A^TA
求解特征方程 (WλI)x=0(W - \lambda I)x = 0 得到特征值λi\lambda_i,并将之降序排列

λ1λ2λn0 \lambda_{1} \geqslant \lambda_{2} \geqslant \cdots \geqslant \lambda_{n} \geqslant 0

将特征值 λi\lambda_i 代入特征方程求的对应特征向量

  1. nn 阶正交矩阵 VV

将特征向量单位化, 得到单位特征向量构成 nn 阶正交矩阵V

V=[v1v2vn] V=\left[\begin{array}{llll} v_{1} & v_{2} & \cdots & v_{n} \end{array}\right]

  1. m×nm \times n 对角矩阵 Σ\Sigma

计算A的奇异值

σj=λj,j=1,2,,n \sigma_{j}=\sqrt{\lambda_{j}}, \quad j=1,2, \cdots, n

构造 m×nm \times n 矩阵对角矩阵 Σ\Sigma, 主对角线元素是奇异值, 其余元素为 0

Σ=diag(σ1,σ2,,σn) \Sigma=\operatorname{diag}\left(\sigma_{1}, \sigma_{2}, \cdots, \sigma_{n}\right)

  1. mm 阶正交矩阵 UU

AA 的前 rr个正奇异值, 令

uj=1σjAvj,j=1,2,,r u_{j}=\frac{1}{\sigma_{j}} A v_{j}, \quad j=1,2, \cdots, r

得到

U1=[u1u2ur] U_{1}=\left[\begin{array}{llll} u_{1} & u_{2} & \cdots & u_{r} \end{array}\right]

ATA^T 的零空间的一组标准正交基

{ur+1,ur+2,,um} \lbrace u_{r+1}, u_{r+2}, \cdots, u_{m} \rbrace

U2=[ur+1ur+2um] U_{2}=\left[\begin{array}{llll} u_{r+1} & u_{r+2} & \cdots & u_{m} \end{array}\right]

且令

U=[U1U2] U=\left[\begin{array}{ll} U_{1} & U_{2} \end{array}\right]

  1. 得到奇异值分解

A=UΣVT A=U \Sigma V^{\mathrm{T}}

求: 矩阵 AA 的奇异值分解

A=[112200] A=\left[\begin{array}{ll} 1 & 1 \cr 2 & 2 \cr 0 & 0 \end{array}\right]

解:

  1. ATAA^TA 的特征值和特征向量

ATA=[120120][112200]=[5555] A^{\mathrm{T}} A=\left[\begin{array}{lll} 1 & 2 & 0 \cr 1 & 2 & 0 \end{array}\right]\left[\begin{array}{ll} 1 & 1 \cr 2 & 2 \cr 0 & 0 \end{array}\right]=\left[\begin{array}{ll} 5 & 5 \cr 5 & 5 \end{array}\right]

满足特征方程

(ATAλI)x=0 \left(A^{\mathrm{T}} A-\lambda I\right) x=0

得到齐次线性方程组

{(5λ)x1+5x2=05x1+(5λ)x2=0 \begin{cases} (5-\lambda) x_{1} + & 5 x_{2}=0 \cr 5 x_{1} + & (5-\lambda) x_{2}=0 \end{cases}

该方程组有非零解的充要条件是

5λ555λ=0 \left|\begin{array}{cc} 5-\lambda & 5 \cr 5 & 5-\lambda \end{array}\right|=0

λ210λ=0 \lambda^{2}-10 \lambda=0

得到 λ1=10\lambda_1 = 10 , λ2=0\lambda_2 = 0.

特征值代入线性方程组,分别得到对应单位特征向量

v1=[1212],v2=[1212] v_{1}=\left[\begin{array}{c} \frac{1}{\sqrt{2}} \cr \frac{1}{\sqrt{2}} \end{array}\right], v_{2}=\left[\begin{array}{c} \frac{1}{\sqrt{2}} \cr -\frac{1}{\sqrt{2}} \end{array}\right]

  1. 求正交矩阵 VV

构造正交矩阵

V=[12121212] V=\left[\begin{array}{cc} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \cr \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \end{array}\right]

  1. 求对角矩阵 Σ\Sigma

奇异值为 σ1=λ1=10\sigma_1 = \sqrt{\lambda_1} = \sqrt{10}, σ2=0\sigma_2 = 0, 那么

Σ=[1000000] \Sigma=\left[\begin{array}{cc} \sqrt{10} & 0 \cr 0 & 0 \cr 0 & 0 \end{array}\right]

⚠️注意: 为了 Σ\Sigma 能与UUVV进行矩阵乘法, Σ\Sigma要加上零行向量

  1. 求正交矩阵 UU

基于 AA 的奇异值计算得到列向量 u1u_1

u1=1σ1Av1=110[112200][1212]=[15250] u_{1}=\frac{1}{\sigma_{1}} A v_{1}=\frac{1}{\sqrt{10}}\left[\begin{array}{cc} 1 & 1 \cr 2 & 2 \cr 0 & 0 \end{array}\right]\left[\begin{array}{c} \frac{1}{\sqrt{2}} \cr \frac{1}{\sqrt{2}} \end{array}\right]=\left[\begin{array}{c} \frac{1}{\sqrt{5}} \cr \frac{2}{\sqrt{5}} \cr 0 \end{array}\right]

列向量u2u_2u3u_3ATA^T的零空间 N(AT)N(A^T) 的一组标准正交基,故而求解以下线性方程组

ATx=[120120][x1x2x3]=[00] A^{\mathrm{T}} x=\left[\begin{array}{lll} 1 & 2 & 0 \cr 1 & 2 & 0 \end{array}\right]\left[\begin{array}{l} x_{1} \cr x_{2} \cr x_{3} \end{array}\right]=\left[\begin{array}{l} 0 \cr 0 \end{array}\right]

x1+2x2+0x3=0x1=2x2+0x3 \begin{array}{c} x_{1}+2 x_{2}+0 x_{3}=0 \cr x_{1}=-2 x_{2}+0 x_{3} \end{array}

分别取 x2x_2x3x_3(1,0)(1,0)(0,1)(0,1) 得到 N(AT)N(A^T)的基

(2,1,0)T,(0,0,1)T (-2,1,0)^{\mathrm{T}}, \quad(0,0,1)^{\mathrm{T}}

N(AT)N(A^T) 的一组标准正交基是

u2=(25,15,0)T,u3=(0,0,1)T u_{2}=\left(-\frac{2}{\sqrt{5}}, \frac{1}{\sqrt{5}}, 0\right)^{\mathrm{T}}, \quad u_{3}=(0,0,1)^{\mathrm{T}}

最后,构造正交矩阵 UU

U=[1525025150001] U=\left[\begin{array}{ccc} \frac{1}{\sqrt{5}} & -\frac{2}{\sqrt{5}} & 0 \cr \frac{2}{\sqrt{5}} & \frac{1}{\sqrt{5}} & 0 \cr 0 & 0 & 1 \end{array}\right]

  1. 矩阵 AA 的奇异值分解

A=UΣVT=[1525025150001][1000000][12121212] A=U \Sigma V^{\mathrm{T}}=\left[\begin{array}{ccc} \frac{1}{\sqrt{5}} & -\frac{2}{\sqrt{5}} & 0 \cr \frac{2}{\sqrt{5}} & \frac{1}{\sqrt{5}} & 0 \cr 0 & 0 & 1 \end{array}\right]\left[\begin{array}{cc} \sqrt{10} & 0 \cr 0 & 0 \cr 0 & 0 \end{array}\right]\left[\begin{array}{cc} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \cr \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \end{array}\right]

将A的奇异值分解看成矩阵 UΣU\SigmaVTV^T 的乘积,
UΣU\Sigma 按列向量分块,

UΣ=[σ1u1σ2u2σnun] U \Sigma=\left[\begin{array}{llll} \sigma_{1} u_{1} & \sigma_{2} u_{2} & \cdots & \sigma_{n} u_{n} \end{array}\right]

VTV^T 按行向量分块

VT=[v1Tv2TvnT] V^{\mathrm{T}}=\left[\begin{array}{c} v_{1}^{\mathrm{T}} \cr v_{2}^{\mathrm{T}} \cr \vdots \cr v_{n}^{\mathrm{T}} \end{array}\right]

那么外积展开式为

A=σ1u1v1T+σ2u2v2T++σnunvnT A=\sigma_{1} u_{1} v_{1}^{\mathrm{T}}+\sigma_{2} u_{2} v_{2}^{\mathrm{T}}+\cdots+\sigma_{n} u_{n} v_{n}^{\mathrm{T}}

或者

A=k=1nAk=k=1nσkukvkT A=\sum_{k=1}^{n} A_{k}=\sum_{k=1}^{n} \sigma_{k} u_{k} v_{k}^{\mathrm{T}}

其中 Ak=σkukvkTA_{k}=\sigma_{k} u_{k} v_{k}^{\mathrm{T}}m×nm \times n 矩阵

uivjT=[u1iu2iumi][v1jv2jvnj]=[u1iv1ju1iv2ju1ivnju2iv1ju2iv2ju2ivnjumiv1jumiv2jumivnj] u_{i} v_{j}^{\mathrm{T}}=\left[\begin{array}{c} u_{1 i} \cr u_{2 i} \cr \vdots \cr u_{m i} \end{array}\right]\left[\begin{array}{cccc} v_{1 j} & v_{2 j} & \cdots & v_{n j} \end{array}\right] = \left[\begin{array}{cccc} u_{1 i} v_{1 j} & u_{1 i} v_{2 j} & \cdots & u_{1 i} v_{n j} \cr u_{2 i} v_{1 j} & u_{2 i} v_{2 j} & \cdots & u_{2 i} v_{n j} \cr \vdots & \vdots & & \vdots \cr u_{m i} v_{1 j} & u_{m i} v_{2 j} & \cdots & u_{m i} v_{n j} \end{array}\right]

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.

  • 一个矩阵的行列式就是一个超平行多面体的(有向的)面积/体积,这个多面体的每条边对应着对应矩阵的列;
  • 矩阵 AA 的行列式 det(A)det(A) 就是线性变换 AA 下的图形面积或体积的伸缩因子。
  • 矩阵的行列式的几何意义是矩阵对应的线性变换前后的面积比

Property:

  1. Det(I)=1Det(I) = 1
  2. Exchanging rows only reverse the sign of det
  3. Determinant is “linear” for each row
  4. det(A)0det(A) \neq 0, AA is invertible
  5. Cramer’s rule: A1=1det(A)CTA^{-1} = \frac{1}{det(A)}C^T
  • det(A)det(A): scalar
  • CC: cofactors of AA (C has the same size as AA)
  • CTC^T is adjugate of AA (伴随矩阵)

Eigen (German word): “unique to” or “belonging to”

if Av=λvAv = \lambda v (vv is a vector , λ\lambda is a scalar)

  • AA must be square
  • vv is an eigenvector of AA, exluding zero vector
  • λ\lambda is an eigenvalue of AA that correponds to vv

TT is a linear operator if T(v)=λvT(v) = \lambda v ( vv is a vector, λ\lambda is a scalar)

  • vv is an eigenvector of TT, exluding zero vector
  • λ\lambda is an eigenvalue of TT that correponds to vv

An eigenvector of A corresponds to a unique eigenvalue.
An eigenvalue of A has infinitely many eigenvectors.

=> how to find eigenvalues t :

det(AtIn)=0 det(A - tI_n) = 0

参考: 李航《统计学习方法》