如何解读奇异值分解结果 (Python 3)?

How to interpret Singular Value Decomposition results (Python 3)?

我正在尝试学习如何降低数据集中的维度。我看到了一些关于 Principle Component AnalysisSingular Value Decomposition 的教程。我知道它采用最大方差的维度并顺序折叠下一个最大方差的维度(过度简化)。

我对如何解释输出矩阵感到困惑。我查看了文档,但没有太大帮助。我遵循了一些教程,但不太确定结果矩阵到底是什么。我提供了一些代码来感受数据集中每个变量的分布 (sklearn.datasets) 。

我的初始输入数组是 n samplesm attributes(n x m) 矩阵。我可以绘制 PC1 与 PC2 的常见 PCA 图,但我如何知道每台 PC 代表哪些维度?

抱歉,如果这是一个基本问题。很多资源都非常数学,我很好,但更直观的答案会很有用。没有我见过的关于如何根据原始标记数据解释输出的地方。

我愿意使用 sklearndecomposition.PCA

#Singular Value Decomposition
U, s, V = np.linalg.svd(X, full_matrices=True)
print(U.shape, s.shape, V.shape, sep="\n")
(442, 442)
(10,)
(10, 10)

正如你上面所说,矩阵 M 可以分解为 3 个矩阵的乘积:U * S * V*。 接下来是几何意义:任何变换都可以被视为一系列旋转 (V * )、缩放 (S) 和再次旋转 (U)。这里不错description and animation.

什么对我们很重要? 矩阵 S 是对角线矩阵 - 它位于主对角线上的所有值均为 0。

喜欢:

np.diag(s)

array([[ 2.00604441,  0.        ,  0.        ,  0.        ,  0.        ,         0.        ,  0.        ,  0.        ,  0.        ,  0.        ],
       [ 0.        ,  1.22160478,  0.        ,  0.        ,  0.        ,         0.        ,  0.        ,  0.        ,  0.        ,  0.        ],
       [ 0.        ,  0.        ,  1.09816315,  0.        ,  0.        ,         0.        ,  0.        ,  0.        ,  0.        ,  0.        ],
       [ 0.        ,  0.        ,  0.        ,  0.97748473,  0.        ,         0.        ,  0.        ,  0.        ,  0.        ,  0.        ],
       [ 0.        ,  0.        ,  0.        ,  0.        ,  0.81374786,         0.        ,  0.        ,  0.        ,  0.        ,  0.        ],
       [ 0.        ,  0.        ,  0.        ,  0.        ,  0.        ,         0.77634993,  0.        ,  0.        ,  0.        ,  0.        ],
       [ 0.        ,  0.        ,  0.        ,  0.        ,  0.        ,         0.        ,  0.73250287,  0.        ,  0.        ,  0.        ],
       [ 0.        ,  0.        ,  0.        ,  0.        ,  0.        ,         0.        ,  0.        ,  0.65854628,  0.        ,  0.        ],
       [ 0.        ,  0.        ,  0.        ,  0.        ,  0.        ,         0.        ,  0.        ,  0.        ,  0.27985695,  0.        ],
       [ 0.        ,  0.        ,  0.        ,  0.        ,  0.        ,         0.        ,  0.        ,  0.        ,  0.        ,  0.09252313]])

在几何上 - 每个值都是沿特定轴的比例因子。 出于我们的目的(分类和回归),这些值显示特定轴对整体结果的影响。

如您所见,这些值从 2.0 减少到 0.093。 最重要的应用程序之一 - 具有给定精度的简单 Low-rank matrix approximation。如果您不需要超精确的分解(对于 ML 问题来说确实如此),您可以放弃最低值并只保留重要值。通过这种方式,您可以逐步完善您的解决方案:使用测试集评估质量,舍弃最小值并重复。结果,您获得了简单而可靠的解决方案。

此处要收缩的良好候选者是 8 和 9,然后是 5-7,作为最后一个选项,您可以将模型近似为只有一个值 - 首先。