第 14 章 奇异值分解 奇异值分解
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
上一章的内容非常密集!我尽力让它变得易懂、严谨,同时又不纠缠于与数据科学关系不大的细节。
幸运的是,你所学到的关于幂等分解的大部分知识都适用于 SVD。这意味着本章将变得更简单、更简短。
SVD 的目的是将矩阵分解为三个矩阵的乘积,即左奇异向量 ()、奇异值 () 和右奇异向量 ():
这种分解看起来应该与 "秭归分解 "类似。事实上,你可以将 SVD 视为 eigendecomposition 对非方阵矩阵的推广,或者将 eigendecomposition 视为 SVD 对方阵矩阵的特例。1
奇异值相当于特征值,而奇异向量矩阵相当于特征向量(这两组量在某些情况下是相同的,我稍后会解释)。
SVD 的全貌
我想先向大家介绍矩阵的概念和解释,然后在本章后面的内容中介绍如何计算 SVD。
图 14-1显示了 SVD 的概览。
图 14-1. SVD 大图
从这张图中可以看到 SVD 的许多重要特征;我将在本章中详细介绍这些特征, ,但要把它们列成一个清单:
-
都是 和 都是正方形矩阵,即使 也是非正方形矩阵。
-
奇异向量的矩阵和 是正交的,即 和 .提醒一下,这意味着每一列与其他每一列都是正交的,而且任何一列的子集都与其他任何一列(非重叠)的子集是正交的。
-
的前r列 的列空间提供正交基向量。 的列空间提供正交基向量,而其余列则为左空空间提供正交基向量(除非r=M,在这种情况下,矩阵为全列秩,左空空间为空)。
-
的前r行 的列 为行空间提供正交基向量,其余各行为空空间提供正交基向量。
-
奇异值矩阵是一个对角矩阵,其大小与 .奇异值总是从大(左上角)到小(右下角)排序。
-
所有奇异值都是非负的实值。即使矩阵包含复数值,它们也不能是复数或负数。
-
非零奇异值的数量等于矩阵秩。
SVD 最神奇的地方或许在于它揭示了矩阵的所有四个子空间:𝐔的前r列和最后M-r列跨越了列空间和左空空间。 的前r列和最后N-r列跨越行空间和空空间。 .对于矩形矩阵,如果r=M,则左空空间为空;如果r=N,则空空间为空。
奇异值与矩阵秩
矩阵的秩定义为非零奇异值的个数。 原因来自前面的讨论,即矩阵的列空间和行空间被定义为左奇异矢量和右奇异矢量,它们通过相应奇异值的缩放在矩阵空间中具有一定的 "体积",而左空空间和右空空间被定义为缩放为零的左奇异矢量和右奇异矢量。因此,列和行空间的维度取决于非零奇异值的数量。
事实上,我们可以窥探 NumPy 函数np.linalg.matrix_rank ,看看 Python 是如何计算矩阵秩的(我对代码稍作了编辑,以突出关键概念):
S=svd(M,compute_uv=False)# return only singular valuestol=S.max()*max(M.shape[-2:])*finfo(S.dtype).epsreturncount_nonzero ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access