解释方差计算

时间:2018-12-03 21:35:54

标签: numpy scikit-learn pca eigenvalue

我的问题仅针对https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html#sklearn.decomposition.PCA

  1. 我不明白为什么要对特征值求平方 https://github.com/scikit-learn/scikit-learn/blob/55bf5d9/sklearn/decomposition/pca.py#L444 这里?
  2. 另外,除了用于计算特征向量的原始数据以外,不为新的转换数据计算explicit_variance。通常不是吗?
    pca = PCA(n_components=2, svd_solver='full') pca.fit(X) pca.transform(Y) 在这种情况下,您是否也不会分别计算数据Y的解释方差。为此,我认为我们必须使用点3而不是特征值。 还可以通过获取变换空间中每个轴的方差并除以总方差来计算出解释方差。有没有在这里完成的原因吗?

1 个答案:

答案 0 :(得分:2)

回答您的问题:

1)散布矩阵特征值(例如XX.T)的平方根是X的奇异值(请参见此处:https://math.stackexchange.com/a/3871/536826)。所以你把它们平方。 重要:为了使上述内容能够成立,初始矩阵X应该居中(数据已经过预处理,均值为零)。

2)是的,这是要走的路。基于奇异值计算了explained_variance。参见第1点。

3)相同,但是在您描述要投影数据然后进行其他计算的情况下。如果仅使用特征值/奇异值进行计算,则无需这样做(有关这两者之间的联系,请再次参见第1点)。

最后,请记住,并非每个人都真正想投影数据。某人只能获得特征值,然后立即估计所解释的方差,而无需投影数据。因此,这是最好的金标准方法。

编辑1:

回答已编辑的Poi​​nt 2

不。 PCA是一种无监督的方法。它只会转换X数据,而不转换Y(标签)。

同样,可以使用特征值/奇异值或使用投影数据(例如您所说的)用一半的代码快速,轻松地计算出解释的方差。估计投影数据的协方差,则PC的方差将在对角线上。