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

时间:2016-06-10 19:53:09

标签: python machine-learning linear-algebra pca svd

我试图学习如何减少数据集中的维度。我在Principle Component AnalysisSingular Value Decomposition上看到了一些教程。我知道它需要最大方差的维度,并且顺序地折叠下一个最高方差的维度(过度简化)。

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

我的初始输入数组是(n x m)n samples的{​​{1}}矩阵。我可以做PC1与PC2的常见PCA图,但我怎么知道每台PC代表哪个尺寸?

很抱歉,如果这是一个基本问题。很多资源都非常重要,我很好,但更直观的答案会很有用。不,我在哪里谈到过如何根据原始标记数据解释输出。

我可以使用m attributes' s sklearn

decomposition.PCA

1 个答案:

答案 0 :(得分:2)

如上所述,矩阵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问题也是如此),您可能会抛弃最低值并保持重要性。通过这种方式,您可以逐步完善您的解决方案:使用测试集估计质量,抛弃最小值并重复。因此,您可以获得简单而强大的解决方案。

enter image description here

这里要收缩的好候选人是8和9,然后是5-7,作为最后一个选项,你可以将模型逼近到只有一个值 - 首先。