分类目录:《算法设计与分析》总目录
在《机器学习中的数学——特征分解》,我们探讨了如何将矩阵分解成特征向量和特征值。还有另一种分解矩阵的方法,被称为奇异值分解,将矩阵分解为奇异向量和奇异值。通过奇异值分解,我们会得到一些与特征分解相同类型的信息。然而,奇异值分解有更广泛的应用。每个实数矩阵都有一个奇异值分解,但不一定都有特征分解。例如,非方阵的矩阵没有特征分解,这时我们只能使用奇异值分解。回想一下,我们使用特征分解去分析矩阵
A
A
A时,得到特征向量构成的矩阵
V
V
V和特征值构成的向量
λ
λ
λ,我们可以重新将
A
A
A写作:
A
=
V
diag
(
λ
)
V
−
1
A=V\text{diag}(\lambda)V^{-1}
A=Vdiag(λ)V−1
奇异值分解是类似的,只不过这回我们将矩阵
A
A
A分解成三个矩阵的乘积:
A
=
U
D
V
T
A=UDV^T
A=UDVT
假设 A A A是一个 m × n m\times n m×n的矩阵,那么 U U U是一个 m × m m\times m m×m的矩阵, D D D是一个 m × n m\times n m×n的矩阵, V V V是一个 n × n n\times n n×n矩阵。
这些矩阵中的每一个经定义后都拥有特殊的结构。矩阵 U U U和 V V V都定义为正交矩阵,而矩阵 D D D定义为对角矩阵。注意,矩阵 D D D不一定是方阵。
对角矩阵 D D D对角线上的元素被称为矩阵 A A A的奇异值。矩阵 U U U的列向量被称为左奇异向量,矩阵 V V V的列向量被称右奇异向量。
事实上,我们可以用与 A A A相关的特征分解去解释 A A A的奇异值分解。 A A A的左奇异向量是 A A T AA^T AAT的特征向量。 A A A的右奇异向量是 A T A A^TA ATA的特征向量。 A A A的非零奇异值是 A T A A^TA ATA特征值的平方根,同时也是 A A T AA^T AAT特征值的平方根。