概念
主成份分析(PCA)是一種維度歸約的技術(shù)。
(維度規(guī)約:把高維數(shù)據(jù)轉(zhuǎn)換成低維數(shù)據(jù)的。)
涉及的其他概念
- 數(shù)據(jù)標準化處理
- 計算相關(guān)系數(shù)(矩陣)、協(xié)方差cov,
【知乎】如何通俗易懂地解釋「協(xié)方差」與「相關(guān)系數(shù)」的概念?https://www.zhihu.com/question/20852004 - 特征根
- 特征向量
- 矩陣方程求解
用途
用較少的變量去解釋原始數(shù)據(jù)中的大部分變量,將許多相關(guān)性很高的變量轉(zhuǎn)化成彼此相互獨立或不相關(guān)的變量。
計算步驟
1.設(shè)原始變量為數(shù)據(jù)矩陣X(n,P),共n條記錄,P個屬性(列)。
2.將矩陣X按列進行中心標準化,繼續(xù)記為X(z-score 標準化)。

3.按列計算相關(guān)系數(shù)矩陣,記為R。
相關(guān)系數(shù) = 協(xié)方差xy / (樣本標準差x樣本標準差y)

相關(guān)系數(shù)計算公式
- 求R的特征方程|R-λE|=0 的特征根 λ1≥λ2≥λp>0
- 確定主成份個數(shù)m。
分子為第1-第m個特征值的和
分母為所有特征值的和
分子/分母>a,一般a去80%。即這m個主成份可以概括80%的信息。 - 計算m個相應(yīng)的單位特征向量:
把上面m個λ代入方程,求(R-λE)β=0的解,
得β1、β2、β3..βm - 計算主成份:
Zi= Xβ,i=1,2,3...m
對計算步驟的理解
- 過程如上,首先對矩陣數(shù)據(jù)進行標準化轉(zhuǎn)換,提升模型的精度。
- 對標準化后的矩陣數(shù)據(jù),求出每一條記錄中兩兩屬性列之間的相關(guān)系數(shù)。
- 由于原矩陣可以分解成特征值Λ及特征向量U。所以計算出相關(guān)系數(shù)矩陣的所有特征根,這所有的特征根(以及相應(yīng)的特征向量),包含了100%的數(shù)據(jù)變量信息。
- 把特征根從大到小排序求和,取m個特征值,目的是為了概括80%~90%的信息。
- 計算出對應(yīng)的單位特征向量。
- 計算主成份。
python中如何做主成份分析
在python中,主成份分析的函數(shù)在Scikit-Learn下:
sklearn.decomposition.PCA
from sklearn.decomposition import PCA
pca = PCA()
pca.fit(data)
pca.components_ #返回模型的各個特征向量(原始數(shù)據(jù))
pca.explained_variance_ratio_ # 返回各個成分各自的方差百分比(貢獻率)
# 根據(jù)以上貢獻率,選取前n個主成份,累積貢獻率達到95%左右。然后重新建立模型
pca = PCA(3)#這里假設(shè)前3個主成份已經(jīng)足夠代表數(shù)據(jù)集的大部分信息。
pca.fit(data)
low_d = pca.transform(data) #計算出主成份結(jié)果。
#到這里位置,原始數(shù)據(jù)已經(jīng)從8維降到了3個維度,同時這三個維度占了原始數(shù)據(jù)大部分的信息。