天天看点

【线性代数】奇异值分解

上次说到矩阵的特征分解,形式优美,含义明确,但是只有方阵才有特征分解,这就限制了特征分解的一般性。

假设我们有一个一般化的矩阵 Am×n A m × n , 我们依然希望对它进行分解来发现一些隐含的性质,但它又不是方阵,不能特征分解,那怎么办呢?一个可行的方案就是,去构造一个方阵,不就可以进行特征分解了嘛!

  • AAT A A T 或者 ATA A T A 一定是方阵,而且一定是对称方阵。那么,就可以用来特征分解了
  • 我们定义 AAT A A T 的特征向量为 A A 的左奇异向量(left singular vector), 所有左奇异向量按列排列构成 m×mm×m 的方阵 U U
  • 我们定义 ATA A T A 的特征向量为 A A 的右奇异向量(right singular vector), 所有右奇异向量按列排列构成 n×nn×n的方阵 V V
  • 我们定义 ATA A T A 特征值的平方根(同时也是 AAT A A T 特征值的平方根), 构成一个 m×n m × n 的对角阵 D D , 数目不够的话塞 0 0 。 D D 中对角线上的元素称为 AA 的奇异值。

从而,我们可以把矩阵 A A 分解成三个矩阵的乘积,

A=UDVT A = U D V T

, 其维数对应关系为 m×n=(m×m)×(m×n)×(n×n) m × n = ( m × m ) × ( m × n ) × ( n × n ) . 我们称此为,奇异值分解(singular value decomposition, SVD).

SVD 最有用的一个场景是 对非方阵求伪逆矩阵。下面说。

继续阅读