趋近智
奇异值分解提供了一种将任意矩阵 A 分解为乘积 A=UΣVT 的方法。这种分解不仅仅在数学上很精巧。它在简化数据方面,特别是对于降维,被证明非常有用。
其核心思想依赖于对角矩阵 Σ。Σ 的对角线元素,记作 σ1,σ2,…,σr(其中 r 是 A 的秩),是 A 的奇异值。按照惯例,这些奇异值按降序排列:σ1≥σ2≥⋯≥σr>0。这些奇异值衡量了沿 U 对应列(左奇异向量)和 V 对应列(右奇异向量)所定义方向上所捕获的重要程度或“能量”。
使用SVD进行降维的原理是只保留该分解中最重要的部分。具体来说,我们选择前 k 个奇异值(其中 k<r)及其相关的奇异向量。我们丢弃剩余的 r−k 个奇异值和向量,它们对应于数据变化最小的方向。
在数学上,我们通过截断矩阵 U、Σ 和 V 来形成 A 的一个近似:
这样, A 的低秩近似由下式给出:
Ak=UkΣkVkT
这个矩阵 Ak 的秩为 k,并且是原始矩阵 A 的最佳秩-k 近似,因为它使差值 ∥A−Ak∥F 的Frobenius范数最小化。这是一个基本性质,通常被称为Eckart-Young定理,尽管了解其结果比记住名称更重要:SVD为您提供了将矩阵 A 压缩为秩-k 表示的最佳方式。
可以将原始的 m×n 矩阵 A 看作表示 m 个数据点,每个点具有 n 个特征(反之亦然)。SVD为 A 的行空间(通过 V)和列空间(通过 U)找到了新的正交基。转换 A 实质上是将行空间基中的向量映射到列空间基中,并按奇异值进行缩放。
通过将较小的奇异值设为零(这实际上就是截断为 Ak 所做的事情),我们将原始数据投影到由与最大奇异值相关联的主要方向所张成的低维子空间上。我们保留了最重要的变异,同时丢弃了信息较少的部分。
保留的维度数量 k 的选择取决于具体的应用。常见的方法包括:
一张典型的图表,显示排序后的奇异值迅速下降,同时累积解释方差快速接近100%。这有助于选择一个合适的 k 值。
使用SVD进行降维与主成分分析 (PCA) 紧密关联。实际上,SVD提供了一种数值稳定计算数据集主成分的方法。如果数据矩阵 A 的列是中心化的(减去均值),那么右奇异向量(V 的列)对应于主方向,并且奇异值的平方 (σi2) 与每个主成分捕获的方差成比例。应用截断SVD Ak=UkΣkVkT 实际上是将数据投影到前 k 个主成分上。
使用SVD进行降维提供了一些优点:
然而,也存在一些需要考虑的方面:
numpy.linalg.svd) 和 SciPy (scipy.linalg.svd) 等库中存在高效算法。尽管分解本身的计算开销较大,SVD仍然是许多机器学习流程中降低数据集复杂度的基本方法,它使得处理更高效,并且有时通过滤除噪声来提高模型的泛化能力。
简洁的语法。内置调试功能。从第一天起就可投入生产。
为 ApX 背后的 AI 系统而构建
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造