當前位置:成語大全網 - 新華字典 - 利用 PCA 來對數據降維

利用 PCA 來對數據降維

降維往往作為預處理步驟,其中獨立成分分析、因子分析和主成分分析比較流行,主成分分析(PCA)最為廣泛。

主成分分析會通過線性組合將多個原始變量合並成若幹個主成分,這樣每個主成分都變成了原始變量的線性組合。這種轉變的目的,壹方面是可以大幅降低原始數據的維度,同時也在此過程中發現原始數據屬性之間的關系。

主成分分析的主要步驟如下:

1)通常要先進行各變量的標準化工作,標準化的目的是將數據按照比例進行縮放,使之落入壹個小的區間範圍之內,從而讓不同的變量經過標準化處理後可以有平等的分析和比較基礎。

2)選擇協方差陣或者相關陣計算特征根及對應的特征向量。

3)計算方差貢獻率,並根據方差貢獻率的閥值選取合適的主成分個數。

4)根據主成分載荷的大小對選擇的主成分進行命名。

5)根據主成分載荷計算各個主成分的得分。

將主成分進行推廣和延伸即成為因子分析(Factor Analysis),因子分析在綜合原始變量信息的基礎上將會力圖構築若幹個意義較為明確的公因子;也就是說,采用少數幾個因子描述多個指標之間的聯系,將比較密切的變量歸為同壹類中,每類變量即是壹個因子。之所以稱其為因子,是因為它們實際上是不可測量的,只能解釋。

主成分分析是因子分析的壹個特例,兩者的區別和聯系主要表現在以下方面:

? 主成分分析會把主成分表示成各個原始變量的線性組合,而因子分析則把原始變量表示成各個因子的線性組合。這個區別最直觀也最容易記住。

? 主成分分析的重點在於解釋原始變量的總方差,而因子分析的重點在於解釋原始變量的協方差。

? 在主成分分析中,有幾個原始變量就有幾個主成分,而在因子分析中,因子個數可以根據業務場景的需要人為指定,並且指定的因子數量不同,則分析結果也會有差異。

? 在主成分分析中,給定的協方差矩陣或者相關矩陣的特征值是唯壹時,主成分也是唯壹的,但是在因子分析中,因子不是唯壹的,並且通過旋轉可以得到不同的因子。

主成分分析和因子分析在數據化運營實踐中主要用於數據處理、降維、變量間關系的探索等方面,同時作為統計學裏的基本而重要的分析工具和分析方法,它們在壹些專題分析中也有著廣泛的應用。

PCA借助於壹個正交變換,將其分量相關的原隨機變量轉化成其分量不相關的新隨機變量。主要作用是對高維數據進行降維。PCA把原先的n個特征用數目更少的k個特征取代,新特征是舊特征的線性組合,這些線性組合最大化樣本方差,盡量使新的k個特征互不相關。

PCA 可以從數據中識別其主要特征,它是通過沿著數據最大方差方向旋轉坐標軸來實現的。選擇方差最大的方向作為第壹條坐標軸,後續坐標軸則與前面坐標軸正交。協方差矩陣上的特征值分析可以用壹系列的正交坐標軸來獲取。

優點: 降低數據的復雜性,識別最重要的多個特征。

缺點: 不壹定需要,且可能損失有用信息。

PCA的主要算法如下:

組織數據形式,以便於模型使用;

計算樣本每個特征的平均值;

每個樣本數據減去該特征的平均值(歸壹化處理);

求協方差矩陣;

找到協方差矩陣的特征值和特征向量;

對特征值和特征向量重新排列(特征值從大到小排列);

對特征值求取累計貢獻率;

對累計貢獻率按照某個特定比例選取特征向量集的子集合;

對原始數據(第三步後)進行轉換。

其中協方差矩陣的分解可以通過按對稱矩陣的特征向量來,也可以通過分解矩陣的SVD來實現,而在Scikit-learn中,也是采用SVD來實現PCA算法的。這裏給出帶SVD的原始算法和Scikit-learn模塊實現的PCA類。