PCA:特征值 vs 特征向量 vs python vs R 中的载荷?

PCA : eigen values vs eigen vectors vs loadings in python vs R?

我正在尝试计算数据集的 PCA 载荷。我读得越多,就越感到困惑,因为“loadings”在许多地方的用法不同。

我正在使用 sklearn.decomposition in python for PCA analysis as well as R (using factomineR and factoextra 库),因为它提供了简单的可视化技术。以下是我的理解:

  1. pca.components_ 给我们特征向量。他们给了我们最大变化的方向。
  2. pca.explained_variance_ 给出与特征向量关联的特征值。
  3. 特征向量 * sqrt(特征值) = 加载告诉我们主成分 (pc) 如何加载变量。

现在,我困惑的是:

  1. 很多论坛都说特征向量就是载荷。然后,当我们将特征向量乘以 sqrt(特征值)时,我们就得到了关联强度。其他人说 eigenvectors * sqrt(eigen values) = loadings.

  2. 特征向量平方告诉我们变量对pc的贡献?我相信这相当于 R 中的 var$contrib。

  3. loading squared (eigen vector or eigenvector*sqrt(eigenvalue) 我不知道是哪个)显示了 pc 捕获变量的程度(接近 1 = pc 更好地解释了变量) .这相当于 R 中的 var$cos2 吗?如果不是,R 中的 cos2 是什么?

  4. 基本上我想知道如何理解主成分捕获变量的程度以及变量对 pc 的贡献是什么。我觉得他们两个不一样。

  5. 什么是pca.singular_values_?从文档中看不清楚。

我提到的这些 first and second 链接包含带解释的 R 代码和让我困惑的 statsexchange 论坛。

好的,经过大量研究和阅读许多论文后,我有以下内容,

  1. pca.components_ = 特征向量。进行转置,使 pc 为列,变量为行。

1.a:特征向量**2 = 主成分的变量贡献。如果它接近 1,那么该变量可以很好地解释特定的 pc。

In python -> (pow(pca.components_.T),2) [如果你想要百分比而不是比例,则乘以 100] [R 等效 -> var$contrib]

  1. pca.variance_explained_ = 特征值

  2. pca.singular_values_ = 从 SVD 获得的奇异值。 (奇异值)**2/(n-1) = 特征值

  3. 特征向量 * sqrt(特征值) = 载荷矩阵

4.a:载荷矩阵的垂直平方和=特征值。 (鉴于您已按照步骤 1 中的说明进行转置)

4.b:负载矩阵平方和=所有主成分解释的观测值方差-转换后所有pc保留多少变量方差。 (鉴于您已按照步骤 1 中的说明进行转置)

在python->加载矩阵=pca.components_.T * sqrt(pca.explained_variance_).

关于 r 的问题:

var$cos2 = var$cor(两个矩阵相同)。给定因子图上变量的坐标,它由特定主成分表示的程度。似乎是变量和主成分的相关性。

var$contrib = 按第 1 点总结。在 r:(var.cos2 * 100) /(组件的总 cos2)PCA analysis in R link

希望对被PCA分析感到困惑的朋友有所帮助。

非常感谢 -- https://stats.stackexchange.com/questions/143905/loadings-vs-eigenvectors-in-pca-when-to-use-one-or-another