PCA和因子分析
https://zhuanlan.zhihu.com/p/21580949
- PCA :高維數(shù)據(jù)——》降成低維數(shù)據(jù)(低維數(shù)據(jù)保存了高維數(shù)據(jù)大部分信息,甚至可以還原大部分高維數(shù)據(jù))
(降維可以理解成減少相關(guān)量,最后得到線性無(wú)關(guān)量)
降維投影,希望投影后投影值盡可能分散,而這種分散程度,可以用數(shù)學(xué)上的方差來(lái)表述,即尋找基,使方差值最大。
降維問(wèn)題的優(yōu)化目標(biāo):將一組N維向量降為K維(K大于0,小于N),其目標(biāo)是選擇K個(gè)單位(模為1)正交基,使得原始數(shù)據(jù)變換到這組基上后,各字段兩兩間協(xié)方差為0,而字段的方差則盡可能大(在正交的約束下,取最大的K個(gè)方差)。
- 因子分析:高維數(shù)據(jù)——》與假定的幾個(gè)因子有關(guān)系。
因子分析
常見(jiàn)名詞解釋
因子載荷
因子載荷表示因子對(duì)變量的解釋程度。載荷范圍可以為 -1 到 1。
檢查載荷模式,以確定對(duì)每個(gè)變量影響最強(qiáng)的因子。接近于 -1 或 1 的載荷表明因子對(duì)變量的影響非常強(qiáng)。接近于 0 的載荷表明因子對(duì)變量的影響很弱。有些變量可能對(duì)多個(gè)因子施加高載荷。
非旋轉(zhuǎn)因子載荷通常很難解釋。因子旋轉(zhuǎn)簡(jiǎn)化了載荷結(jié)構(gòu),并且使因子更容易辨識(shí)和解釋。然而,沒(méi)有哪種旋轉(zhuǎn)方法在所有情況下都表現(xiàn)最佳。您可能想要嘗試不同的旋轉(zhuǎn),并使用產(chǎn)生最佳解釋結(jié)果的旋轉(zhuǎn)。您還可以對(duì)旋轉(zhuǎn)載荷排序,從而更為清楚地評(píng)估因子中的載荷。
- 適合公司 (0.778)、適合工作 (0.844) 和潛能 (0.645) 在因子 1 上具有較大的正載荷,因此該因子描述員工適合度以及在公司的成長(zhǎng)潛力。
- 相貌 (0.73)、受歡迎度 (0.615) 和自信心 (0.743) 在因子 2 上具有較大的正載荷,因此該因子描述個(gè)人才能。
- 溝通能力 (0.802) 和組織能力 (0.889) 在因子 3 上具有較大的正載荷,因此該因子描述工作技能。
- 信件 (0.947) 和簡(jiǎn)歷 (0.789) 在因子 4 上具有較大的正載荷,因此該因子描述寫作技能。
公因子方差(共同度)
公因子方差是由因子解釋的每個(gè)變量的變異性比率。無(wú)論您為分析使用非旋轉(zhuǎn)因子載荷還是旋轉(zhuǎn)因子載荷,公因子方差值都是相同的。在這些結(jié)果中,從 12 個(gè)變量中提取了 4 個(gè)因子。所有變量的公因子方差值通常比較高,這說(shuō)明 4 個(gè)因子充分表示變量。例如,適合工作中 0.895 或 89.5% 的變異性都由這 4 個(gè)因子來(lái)解釋。
解釋
檢查公因子方差值以評(píng)估因子對(duì)每個(gè)變量的解釋程度。公因子方差越接近于 1,因子對(duì)變量的解釋程度越好。如果因子對(duì)某些變量的擬合有重大影響,則可以決定添加因子。
方差(特征值)
碎石圖的依據(jù)
由每個(gè)因子解釋的數(shù)據(jù)變異性。如果使用主分量提取方法且不旋轉(zhuǎn)載荷,則每個(gè)因子的方差等于特征值。雖然所有因子解釋的總變異保持不變,但旋轉(zhuǎn)會(huì)改變每個(gè)因子解釋的變異比率的分布。
解釋
檢查每個(gè)因子的方差。方差越高,表明因子解釋的數(shù)據(jù)變異性所占比率也越高。如果不知道要在分析中提取多少因子,請(qǐng)先使用主分量提取方法且不旋轉(zhuǎn),將默認(rèn)因子數(shù)(提取的最大因子數(shù))作為初步評(píng)估。然后,將重要因子定義為方差(特征值)大于特定值的因子。例如,一項(xiàng)標(biāo)準(zhǔn)是包括特征值至少為 1 的任何因子。另一種方法是直觀地評(píng)估碎石圖上的特征值,以確定特征值在哪個(gè)點(diǎn)顯示的變化不大并且接近 0。有關(guān)更多信息,請(qǐng)參見(jiàn)有關(guān)碎石圖的主題。
方差貢獻(xiàn)率
方差貢獻(xiàn)率 (% Var) 指的是由每個(gè)因子解釋的數(shù)據(jù)變異性的比率。方差貢獻(xiàn)率的值范圍可以為 0 (0%) 到 1 (100%)。
解釋
檢查每個(gè)因子的方差貢獻(xiàn)率值。方差貢獻(xiàn)率值越高表明因子解釋的變異性越多。因此,您可以使用方差貢獻(xiàn)率值確定哪些因子最重要。
方差貢獻(xiàn)率的公因子方差值表示分析中所有因子解釋的總變異。使用此值可幫助確定分析中使用的因子數(shù)是否解釋數(shù)據(jù)中足夠量的總變異。
代碼實(shí)現(xiàn)
fa = FactorAnalyzer(n_factors=n_factors, rotation='varimax')
fa.fit(dfu)
l = pd.DataFrame(fa.loadings_)# 成分矩陣,旋轉(zhuǎn)載荷
# print("公因子方差:\n", fa.get_communalities()) # 公因子方差
# print("\n成分矩陣:\n", fa.loadings_) # 成分矩陣
c = pd.DataFrame(fa.get_communalities())# 公因子方差
# s = fa.get_scores(dfu)
s = pd.DataFrame(fa.transform(dfu))
# print(fa.transform(dfu))
v=pd.DataFrame(fa.get_factor_variance())#給出貢獻(xiàn)率,總方差 特征值 方差貢獻(xiàn)率 方差累計(jì)貢獻(xiàn)率
圖形
碎石圖——特征值
載荷圖等