本頁使用了標題或全文手工轉換

主成分分析

維基百科,自由的百科全書
跳到: 導覽搜尋
主成分分析實例:一個平均值為(1, 3)、標準差在(0.878, 0.478)方向上為3、在其正交方向為1的高斯分佈。這裏以黑色顯示的兩個向量是這個分佈的共變異數矩陣特徵向量,其長度按對應的特徵值之平方根為比例,並且移動到以原分佈的平均值為原點。

在多元統計分析中,主成分分析英語:Principal components analysisPCA)是一種分析、簡化數據集的技術。主成分分析經常用於減少數據集的維數,同時保持數據集中的對變異數貢獻最大的特徵。這是通過保留低階主成分,忽略高階主成分做到的。這樣低階成分往往能夠保留住數據的最重要方面。但是,這也不是一定的,要視具體應用而定。由於主成分分析依賴所給數據,所以數據的準確性對分析結果影響很大。

主成分分析由卡爾·皮爾遜於1901年發明[1],用於分析數據及建立數理模型。其方法主要是通過對共變異數矩陣進行特徵分解[2],以得出數據的主成分(即特徵向量)與它們的權值(即特徵值[3])。PCA是最簡單的以特徵量分析多元統計分佈的方法。其結果可以理解為對原數據中的變異數做出解釋:哪一個方向上的數據值對變異數的影響最大?換而言之,PCA提供了一種降低數據維度的有效辦法;如果分析者在原數據中除掉最小的特徵值所對應的成分,那麼所得的低維度數據必定是最優化的(也即,這樣降低維度必定是失去訊息最少的方法)。主成分分析在分析複雜數據時尤為有用,比如人臉識別

PCA是最簡單的以特徵量分析多元統計分佈的方法。通常情況下,這種運算可以被看作是揭露數據的內部結構,從而更好的解釋數據的變量的方法。如果一個多元數據集能夠在一個高維數據空間座標系中被顯現出來,那麼PCA就能夠提供一幅比較低維度的圖像,這幅圖像即為在訊息最多的點上原對象的一個『投影』。這樣就可以利用少量的主成分使得數據的維度降低了。

PCA跟因子分析密切相關,並且已經有很多混合這兩種分析的統計包。而真實要素分析則是假定底層結構,求得微小差異矩陣的特徵向量。

數學定義[編輯]

PCA的數學定義是:一個正交化線性變換,把數據變換到一個新的座標系統中,使得這一數據的任何投影的第一大變異數在第一個座標(稱為第一主成分)上,第二大變異數在第二個座標(第二主成分)上,依次類推[4]

定義一個n × m矩陣, XT為去平均值(以平均值為中心移動至原點)的數據,其行為數據樣本,列為數據類別(注意,這裏定義的是XT 而不是X)。則X奇異值分解X = WΣVT,其中m × m矩陣WXXT的本徵向量矩陣, Σm × n的非負矩形對角矩陣,V是n × nXTX的本徵向量矩陣。據此,

m < n − 1時,V 在通常情況下不是唯一定義的,而Y 則是唯一定義的。W 是一個正交矩陣,YTXT的轉置,且YT的第一列由第一主成分組成,第二列由第二主成分組成,依此類推。

為了得到一種降低數據維度的有效辦法,我們可以利用WLX 映射到一個只應用前面L個向量的低維空間中去:

其中,且單位矩陣

X 的單向量矩陣W相當於共變異數矩陣的本徵向量 C = X XT,

在歐幾里得空間給定一組點數,第一主成分對應於通過多維空間平均點的一條線,同時保證各個點到這條直線距離的平方和最小。去除掉第一主成分後,用同樣的方法得到第二主成分。依此類推。在Σ中的奇異值均為矩陣 XXT的本徵值的平方根。每一個本徵值都與跟它們相關的變異數是成正比的,而且所有本徵值的總和等於所有點到它們的多維空間平均點距離的平方和。PCA提供了一種降低維度的有效辦法,本質上,它利用正交變換將圍繞平均點的點集中儘可能多的變量投影到第一維中去,因此,降低維度必定是失去訊息最少的方法。PCA具有保持子空間擁有最大變異數的最優正交變換的特性。然而,當與離散餘弦變換相比時,它需要更大的計算需求代價。非線性降維技術相對於PCA來說則需要更高的計算要求。

PCA對變量的縮放很敏感。如果我們只有兩個變量,而且它們具有相同的樣本變異數,並且成正相關,那麼PCA將涉及兩個變量的主成分的旋轉。但是,如果把第一個變量的所有值都乘以100,那麼第一主成分就幾乎和這個變量一樣,另一個變量只提供了很小的貢獻,第二主成分也將和第二個原始變量幾乎一致。這就意味着當不同的變量代表不同的單位(如溫度和質量)時,PCA是一種比較武斷的分析方法。但是在Pearson的題為 "On Lines and Planes of Closest Fit to Systems of Points in Space"的原始文件里,是假設在歐幾里得空間裏不考慮這些。一種使PCA不那麼武斷的方法是使用變量縮放以得到單位變異數。

討論[編輯]

通常,為了確保第一主成分描述的是最大變異數的方向,我們會使用平均減法進行主成分分析。如果不執行平均減法,第一主成分有可能或多或少的對應於數據的平均值。另外,為了找到近似數據的最小均方誤差,我們必須選取一個零均值[5]

假設零經驗均值,數據集 X 的主成分w1可以被定義為:

為了得到第 k個主成分,必須先從X中減去前面的 個主成分:

然後把求得的第k個主成分帶入數據集,得到新的數據集,繼續尋找主成分。


PCA相當於在氣象學中使用的經驗正交函數(EOF),同時也類似於一個線性隱層神經網絡。 隱含層 K 個神經元的權重向量收斂後,將形成一個由前 K 個主成分跨越空間的基礎。但是與PCA不同的是,這種技術並不一定會產生正交向量。

PCA是一種很流行且主要的的模式識別技術。然而,它並不能最佳化類別可分離性[6] 。另一種不考慮這一點的方法是線性判別分析。

符號和縮寫表[編輯]

Symbol符號 Meaning意義 Dimensions尺寸 Indices指數
由所有數據向量集組成的數據矩陣,一列代表一個向量
數據集中列向量的個數 純量
每個列向量的元素個數 純量
子空間的維數, 純量
經驗均值向量
經驗標準變異數向量
所有的單位向量
對均值的偏離向量
Z-分數,利用均值和標準差計算得到
共變異數矩陣
相關矩陣
C的所有特徵向量集
主對角線為特徵值的對角矩陣
基向量矩陣
XW矩陣的投影矩陣

主成分分析的屬性和限制[編輯]

如上所述,主成分分析的結果取決於變量的縮放。

主成分分析的適用性受到由它的派生物產生的某些假設[7] 的限制。

主成分分析和信息理論[編輯]

通過使用降維來保存大部分數據信息的主成分分析的觀點是不正確的。確實如此,當沒有任何假設信息的信號模型時,主成分分析在降維的同時並不能保證信息的不丟失,其中信息是由香農熵[8]來衡量的。 基於假設得 也就是說,向量 x 是含有信息的目標信號 s 和噪聲信號 n 之和,從信息論角度考慮主成分分析在降維上是最優的。

特別地,Linsker證明了如果 s 是高斯分佈,且 n 是 與密度矩陣相應的共變異數矩陣的高斯噪聲,

使用統計方法計算PCA[編輯]

以下是使用統計方法計算PCA的詳細說明。但是請注意,如果利用奇異值分解(使用標準的軟件)效果會更好。

我們的目標是把一個給定的具有 M 維的數據集X 變換成具有較小維度 L的數據集Y。現在要求的就是矩陣YY是矩陣X Karhunen–Loève變換。:

組織數據集[編輯]

假設有一組 M 個變量的觀察數據,我們的目的是減少數據,使得能夠用L 個向量來描述每個觀察值,L < M。進一步假設,該數據被整理成一組具有N個向量的數據集,其中每個向量都代表M 個變量的單一觀察數據。

  • 為列向量,其中每個列向量有M 行。
  • 將列向量放入M × N的單矩陣X 裏。

計算經驗均值[編輯]

  • 對每一維m = 1, ..., M計算經驗均值
  • 將計算得到的均值放入一個 M × 1維的經驗均值向量u

計算平均偏差[編輯]

對於在最大限度地減少近似數據的均方誤差的基礎上找到一個主成分來說,均值減去法是該解決方案的不可或缺的組成部分[9] 。因此,我們繼續如下步驟:

  • 從數據矩陣X的每一列中減去經驗均值向量 u
  • 將平均減去過的數據存儲在M × N矩陣B
where h is a 1 × N row vector of all 1s:

其中h是一個全 1s:的1 × N 的行向量

求共變異數矩陣[編輯]

  • 從矩陣B 中找到M × M 的經驗共變異數矩陣C

其中 為期望值

是最外層運算符

是共軛轉置運算符。

請注意,如果B完全由實數組成,那麼共軛轉置與正常的轉置一樣。

查找共變異數矩陣的特徵值和特徵向量[編輯]

  • 計算矩陣C 的特徵向量
其中,DC的特徵值對角矩陣,這一步通常會涉及到使用基於計算機的計算特徵值和特徵向量的算法。在很多矩陣代數系統中這些算法都是現成可用的,如R語言MATLAB,[11][12] Mathematica,[13] SciPy, IDL(交互式數據語言), 或者GNU Octave以及OpenCV
  • 矩陣DM × M的對角矩陣
  • 各個特徵值和特徵向量都是配對的,m個特徵值對應m個特徵向量。

相關原始碼[編輯]

Template:Externallinks

  • Cornell Spectrum Imager - An open-source toolset built on ImageJ. Enables quick easy PCA analysis for 3D datacubes.
  • imDEV Free Excel addin to calculate principal components using R package pcaMethods.
  • "ViSta: The Visual Statistics System" a free software that provides principal components analysis, simple and multiple correspondence analysis.
  • "Spectramap" is software to create a biplot using principal components analysis, correspondence analysis or spectral map analysis.
  • XLSTAT is a statistical and multivariate analysis software including Principal Component Analysis among other multivariate tools.
  • FinMath, a .NET numerical library containing an implementation of PCA.
  • The Unscrambler is a multivariate analysis software enabling Principal Component Analysis (PCA) with PCA Projection.
  • Computer Vision Library
  • In the MATLAB Statistics Toolbox, the functions princomp and wmspca give the principal components, while the function pcares gives the residuals and reconstructed matrix for a low-rank PCA approximation. Here is a link to a MATLAB implementation of PCA PcaPress .
  • In the NAG Library, principal components analysis is implemented via the g03aa routine (available in both the Fortran[14] and the C[15] versions of the Library).
  • NMath, a proprietary numerical library containing PCA for the .NET Framework.
  • in Octave, a free software computational environment mostly compatible with MATLAB, the function princomp gives the principal component.
  • in the free statistical package R, the functions princomp and prcomp can be used for principal component analysis; prcomp uses singular value decomposition which generally gives better numerical accuracy. Recently there has been an explosion in implementations of principal component analysis in various R packages, generally in packages for specific purposes. For a more complete list, see here: [1].
  • In XLMiner, the Principal Components tab can be used for principal component analysis.
  • In IDL, the principal components can be calculated using the function pcomp.
  • Weka computes principal components (javadoc).
  • Software for analyzing multivariate data with instant response using PCA
  • Orange (software) supports PCA through its Linear Projection widget.
  • A version of PCA adapted for population genetics analysis can be found in the suite EIGENSOFT.
  • PCA can also be performed by the statistical software Partek Genomics Suite, developed by Partek.

參見[編輯]

注釋[編輯]

  1. ^ Pearson, K. On Lines and Planes of Closest Fit to Systems of Points in Space (PDF). Philosophical Magazine. 1901, 2 (6): 559–572. 
  2. ^ Abdi. H., & Williams, L.J. Principal component analysis.. Wiley Interdisciplinary Reviews: Computational Statistics,. 2010, 2: 433–459. 
  3. ^ Shaw P.J.A. (2003) Multivariate statistics for the Environmental Sciences, Hodder-Arnold. ISBN 978-0-340-80763-7.[頁碼請求]
  4. ^ Jolliffe I.T. Principal Component Analysis, Series: Springer Series in Statistics, 2nd ed., Springer, NY, 2002, XXIX, 487 p. 28 illus. ISBN 978-0-387-95442-4
  5. ^ A. A. Miranda, Y. A. Le Borgne, and G. Bontempi. New Routes from Minimal Approximation Error to Principal Components, Volume 27, Number 3 / June, 2008, Neural Processing Letters, Springer
  6. ^ Fukunaga, Keinosuke. Introduction to Statistical Pattern Recognition. Elsevier. 1990. ISBN 0122698517. 
  7. ^ Jonathon Shlens, A Tutorial on Principal Component Analysis.
  8. ^ Geiger, Bernhard; Kubin, Gernot (Sep 2012), Relative Information Loss in the PCA
  9. ^ A.A. Miranda, Y.-A. Le Borgne, and G. Bontempi. New Routes from Minimal Approximation Error to Principal Components, Volume 27, Number 3 / June, 2008, Neural Processing Letters, Springer
  10. ^ Bessel's correction Bessel's correction
  11. ^ eig function Matlab documentation
  12. ^ MATLAB PCA-based Face recognition software
  13. ^ Eigenvalues function Mathematica documentation
  14. ^ The Numerical Algorithms Group. NAG Library Routine Document: nagf_mv_prin_comp (g03aaf) (PDF). NAG Library Manual, Mark 23. [2012-02-16]. 
  15. ^ The Numerical Algorithms Group. NAG Library Routine Document: nag_mv_prin_comp (g03aac) (PDF). NAG Library Manual, Mark 9. [2012-02-16]. 


參考[編輯]