【问题标题】:PCA : eigen values vs eigen vectors vs loadings in python vs R?PCA:特征值与特征向量与 python 与 R 中的负载?
【发布时间】:2021-07-30 09:38:36
【问题描述】:

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

我在 python 中使用 sklearn.decomposition 进行 PCA 分析以及 R(使用 factomineRfactoextra 库),因为它提供了简单的可视化技术。以下是我的理解:

  1. pca.components_ 给我们特征向量。它们为我们提供了最大变化的方向。
  2. pca.explained_variance_ 为我们提供与特征向量相关的特征值。
  3. eigenvectors * sqrt(eigen values) = loadings,它告诉我们主成分 (pc's) 如何加载变量。

现在,我感到困惑的是:

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

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

  3. 加载平方(特征向量或特征向量*平方(特征值)我不知道是哪一个)显示了电脑捕获变量的能力(更接近 1 = 电脑更好地解释了变量)。这相当于 R 中的 var$cos2 吗?如果不是,R 中的 cos2 是什么?

  4. 基本上我想知道如何理解主成分捕获变量的能力以及变量对 pc 的贡献是什么。我认为它们是不同的。

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

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

【问题讨论】:

标签: r scikit-learn pca eigenvalue eigenvector


【解决方案1】:

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

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

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

在 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    • 2020-11-08
    • 2014-05-11
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多