簡體   English   中英

PCA:特征值與特征向量與 python 與 R 中的負載?

[英]PCA : eigen values vs eigen vectors vs loadings in python vs R?

我正在嘗試計算數據集的 PCA 負載。 我讀得越多,就越感到困惑,因為“加載”在許多地方的使用方式不同。

我在 python 中使用sklearn.decomposition進行 PCA 分析以及 R(使用factomineRfactoextra庫),因為它提供了簡單的可視化技術。 以下是我的理解:

  1. pca.components_ 給我們特征向量。 它們為我們提供了最大變化的方向。
  2. pca.explained_variance_ 給我們與特征向量相關的特征值。
  3. eigenvectors * sqrt(eigen values) = loadings,它告訴我們主成分(pc's)如何加載變量。

現在,我感到困惑的是:

  1. 許多論壇說特征向量是載荷。 然后,當我們將特征向量乘以 sqrt(特征值)時,我們就得到了關聯強度。 其他人說特征向量 * sqrt(特征值)= 載荷。

  2. 特征向量平方告訴我們變量對 pc 的貢獻? 我相信這相當於 R 中的 var$contrib。

  3. 加載平方(特征向量或特征向量 * sqrt(特征值)我不知道是哪一個)顯示 pc 捕獲變量的能力(更接近 1 = 變量更好地由 pc 解釋)。 這相當於 R 中的 var$cos2 嗎? 如果不是,R 中的 cos2 是什么?

  4. 基本上我想知道如何理解主成分捕獲變量的能力以及變量對 pc 的貢獻。 我認為他們兩個是不同的。

  5. 什么是 pca.singular_values_? 從文檔中不清楚。

我提到的這些第一個第二個鏈接包含 R 代碼和解釋以及讓我感到困惑的 statsexchange 論壇。

好的,經過大量研究並閱讀了許多論文,我有以下幾點,

  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(兩個矩陣相同)。 給定因子 map 上變量的坐標,它由特定主成分表示的程度如何。 看起來像變量和主成分的相關性。

var$contrib = 由第 1 點總結。在 r:(var.cos2 * 100) / (total cos2 of the component) R 鏈接中的 PCA 分析

希望它可以幫助其他對 PCA 分析感到困惑的人。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM