在多變數分析中，主成分分析（，縮寫：）是一種統計分析、簡化資料集的方法。它利用正交變換來對一系列可能相關的變數的觀測值進行線性變換，從而投影為一系列線性不相關變數的值，這些不相關變數稱為主成分（Principal Components）。具體地，主成分可以看做一個線性方程，其包含一系列線性係數來指示投影方向。PCA 對原始資料的正則化或預處理敏感（相對縮放）。 基本思想： 將座標軸中心移到資料的中心，然後旋轉座標軸，使得資料在 C1 軸上的方差最大，即全部 n 個數據個體在該方向上的投影最為分散。意味著更多的資訊被保留下來。C1 成為第一主成分。 C2 第二主成分：找一個 C2，使得 C2 與 C1 的協方差（相關係數）為 0，以免與 C1 資訊重疊，並且使資料在該方向的方差儘量最大。 以此類推，找到第三主成分，第四主成分 第 p 個主成分。p 個隨機變數可以有 p 個主成分。 主成分分析經常用於減少資料集的維數，同時保留資料集當中對方差貢獻最大的特徵。這是透過保留低維主成分，忽略高維主成分做到的。這樣低維成分往往能夠保留住資料的最重要部分。但是，這也不是一定的，要視具體應用而定。由於主成分分析依賴所給資料，所以資料的準確性對分析結果影響很大。 主成分分析由卡爾皮爾遜於 1901 年發明，用於分析資料及建立數理模型，在原理上與相似。之後在 1930 年左右由哈羅德霍特林獨立發展並命名。依據應用領域的不同，在訊號處理中它也叫做離散 KL 轉換（discrete KarhunenLoève transform KLT）。其方法主要是透過對共變異數矩陣進行特徵分解，以得出資料的主成分（即特徵向量）與它們的權值（即特徵值 Shaw PJA 2003 Multivariate statistics for the Environmental Sciences HodderArnold ISBN 9780340807637 ）。PCA 是最簡單的以特徵量分析多元統計分佈的方法。其結果可以理解為對原資料中的方差做出解釋：哪一個方向上的資料值對方差的影響最大？換而言之，PCA 提供了一種降低資料維度的有效辦法；如果分析者在原資料中除掉最小的特徵值所對應的成分，那麼所得的低維度資料必定是最最佳化的（也即，這樣降低維度必定是失去訊息最少的方法）。主成分分析在分析複雜資料時尤為有用，比如人臉識別。 PCA 是最簡單的以特徵量分析多元統計分佈的方法。通常，這種運算可以被看作是揭露資料的內部結構，從而更好地展現資料的變異度。如果一個多元資料集是用高維資料空間之座標系來表示的，那麼 PCA 能提供一幅較低維度的影像，相當於資料集在訊息量最多之角度上的一個投影。這樣就可以利用少量的主成分讓資料的維度降低了。 PCA 跟因子分析密切相關。因子分析通常包含更多特定領域底層結構的假設，並且求解稍微不同矩陣的特徵向量。 PCA 也跟典型相關分析（CCA）有關。CCA 定義的坐標系可以最佳地描述兩個資料集之間的互協方差，而 PCA 定義了新的正交坐標系，能最佳地描述單個資料集當中的變異數。 數學定義 PCA 的數學定義是：一個正交化線性變換，把資料變換到一個新的座標系統中，使得這一資料的任何投影的第一大方差在第一個座標（稱為第一主成分）上，第二大方差在第二個座標（第二主成分）上，依次類推 Jolliffe IT Principal Component Analysis Series Springer Series in Statistics 2nd ed Springer NY 2002 XXIX 487 p 28 illus ISBN 9780387954424。 定義一個 n times m 的矩陣，XT 為去平均值（以平均值為中心移動至原點）的資料，其行為資料樣本，列為資料類別（注意，這裡定義的是 XT 而不是 X）。則 X 的奇異值分解為 X W Sigma VT，其中 W in mathbf Rm times m 是 XXT 的特徵向量矩陣， Sigma in mathbf Rm times n 是奇異值矩陣，V in mathbf Rn times n 是 XTX 的特徵向量矩陣。據此， begin align boldsymbol Ytop boldsymbol Xtopboldsymbol W boldsymbol Vboldsymbol Sigmatopboldsymbol Wtopboldsymbol W boldsymbol Vboldsymbol Sigmatop end align 當 m n 1 時，V 在通常情況下不是唯一定義的，而 Y 則是唯一定義的。W 是一個正交矩陣，YTWTXT，且 YT 的第一列由第一主成分組成，第二列由第二主成分組成，依此類推。 為了得到一種降低資料維度的有效辦法，我們可以利用 WL 把 X 對映到一個只應用前面 L 個向量的低維空間中去： mathbf Ymathbf W_Ltopmathbf X mathbf Sigma_Lmathbf Vtop 其中 mathbf Sigma_Lmathbf I_Ltimes mmathbf Sigma，且 mathbf I_Ltimes m 為 Ltimes m 的單位矩陣。 X 的單向量矩陣 W 相當於協方差矩陣的特徵向量 C X XT mathbf Xmathbf Xtop mathbf Wmathbf Sigmamathbf Sigmatopmathbf Wtop 在歐幾里得空間給定一組點數，第一主成分對應於透過多維空間平均點的一條線，同時保證各個點到這條直線距離的平方和最小。去除掉第一主成分後，用同樣的方法得到第二主成分。依此類推。在 Σ 中的奇異值均為矩陣 XXT 的特徵值的平方根。每一個特徵值都與跟它們相關的方差是成正比的，而且所有特徵值的總和等於所有點到它們的多維空間平均點距離的平方和。PCA 提供了一種降低維度的有效辦法，本質上，它利用正交變換將圍繞平均點的點集中儘可能多的變數投影到第一維中去，因此，降低維度必定是失去訊息最少的方法。PCA 具有保持子空間擁有最大方差的最優正交變換的特性。然而，當與離散餘弦變換相比時，它需要更大的計算需求代價。非線性降維技術相對於 PCA 來說則需要更高的計算要求。 PCA 對變數的縮放很敏感。如果我們只有兩個變數，而且它們具有相同的樣本方差，並且成正相關，那麼 PCA 將涉及兩個變數的主成分的旋轉。但是，如果把第一個變數的所有值都乘以 100，那麼第一主成分就幾乎和這個變數一樣，另一個變數只提供了很小的貢獻，第二主成分也將和第二個原始變數幾乎一致。這就意味著當不同的變數代表不同的單位（如溫度和質量）時，PCA 是一種比較武斷的分析方法。但是在 Pearson 的題為 On Lines and Planes of Closest Fit to Systems of Points in Space 的原始檔案裡，是假設在歐幾里得空間裡不考慮這些。一種使 PCA 不那麼武斷的方法是使用變數縮放以得到單位方差。 討論 通常，為了確保第一主成分描述的是最大方差的方向，我們會使用平均減法進行主成分分析。如果不執行平均減法，第一主成分有可能或多或少的對應於資料的平均值。另外，為了找到近似資料的最小均方誤差，我們必須選取一個零均值 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。 假設零經驗均值，資料集 X 的主成分 w1 可以被定義為： mathbf w_1 underset Vert mathbf w Vert 1operatorname argmaxoperatorname Varmathbf wtop mathbf X underset Vert mathbf w Vert 1operatorname argmaxEleftleft mathbf wtop mathbf Xright2 right 為了得到第 k 個主成分，必須先從 X 中減去前面的 k 1 個主成分： mathbf hat X_k 1 mathbf X sum_i 1k 1 mathbf w_i mathbf w_itop mathbf X 然後把求得的第 k 個主成分帶入資料集，得到新的資料集，繼續尋找主成分。 mathbf w_k underset Vert mathbf w Vert 1operatorname argmaxEleftleft mathbf wtop mathbf hat X_k 1 right2 right PCA 相當於在氣象學中使用的經驗正交函式（EOF） 同時也類似於一個線性隱層神經網路。 隱含層 K 個神經元的權重向量收斂後，將形成一個由前 K 個主成分跨越空間的基礎。但是與 PCA 不同的是，這種技術並不一定會產生正交向量。 PCA 是一種很流行且主要的模式識別技術。然而，它並不能最最佳化類別可分離性 。另一種不考慮這一點的方法是線性判別分析。 符號和縮寫表 Symbol 符號 Meaning 意義 Dimensions 尺寸 Indices 指數 mathbf X X mn 由所有資料向量集組成的資料矩陣，一列代表一個向量 M times N m 1 ldots M n 1 ldots N N 資料集中列向量的個數 1 times 1 標量 M 每個列向量的元素個數 1 times 1 標量 L 子空間的維數，1 le L le M 1 times 1 標量 mathbf u u m 經驗均值向量 M times 1 m 1 ldots M mathbf s s m 經驗標準方差向量 M times 1 m 1 ldots M mathbf h h n 所有的單位向量 1 times N n 1 ldots N mathbf B B mn 對均值的偏離向量 M times N m 1 ldots M n 1 ldots N mathbf Z Z mn Z 分數，利用均值和標準差計算得到 M times N m 1 ldots M n 1 ldots N mathbf C C pq 協方差矩陣 M times M p 1 ldots M q 1 ldots M mathbf R R pq 相關矩陣 M times M p 1 ldots M q 1 ldots M mathbf V V pq C 的所有特徵向量集 M times M p 1 ldots M q 1 ldots M mathbf D D pq 主對角線為特徵值的對角矩陣 M times M p 1 ldots M q 1 ldots M mathbf W W pq 基向量矩陣 M times L p 1 ldots M q 1 ldots L mathbf Y Y mn X 和 W 矩陣的投影矩陣 L times N m 1 ldots L n 1 ldots N 主成分分析的屬性和限制 如上所述，主成分分析的結果依賴於變數的縮放。 主成分分析的適用性受到由它的派生物產生的某些假設 Jonathon Shlens A Tutorial on Principal Component Analysis 的限制。 主成分分析和資訊理論 透過使用降維來儲存大部分資料資訊的主成分分析的觀點是不正確的。確實如此，當沒有任何假設資訊的訊號模型時，主成分分析在降維的同時並不能保證資訊的不丟失，其中資訊是由夏農熵 Geiger Bernhard Kubin Gernot Sep 2012 Relative Information Loss in the PCA 來衡量的。 基於假設得 mathbf x mathbf s mathbf n 也就是說，向量 x 是含有資訊的目標訊號 s 和噪聲訊號 n 之和，從資訊理論角度考慮主成分分析在降維上是最優的。 特別地，Linsker 證明了如果 s 是高斯分佈，且 n 是 與密度矩陣相應的協方差矩陣的高斯噪聲， 使用統計方法計算 PCA 以下是使用統計方法計算 PCA 的詳細說明。但是請注意，如果利用奇異值分解（使用標準的軟體）效果會更好。 我們的目標是把一個給定的具有 M 維的資料集 X 變換成具有較小維度 L 的資料集 Y。現在要求的就是矩陣 Y，Y 是矩陣 X KarhunenLoève 變換。 mathbf Y mathbb KLT mathbf X 組織資料集 假設有一組 M 個變數的觀察資料，我們的目的是減少資料，使得能夠用 L 個向量來描述每個觀察值，L M。進一步假設，該資料被整理成一組具有 N 個向量的資料集，其中每個向量都代表 M 個變數的單一觀察資料。 mathbf x_1 ldots mathbf x_N 為列向量，其中每個列向量有 M 行。 將列向量放入 M N 的單矩陣 X 裡。 計算經驗均值 對每一維 m 1 M 計算經驗均值 將計算得到的均值放入一個 M 1 維的經驗均值向量 u 中 u m 1 over N sum_n1N X mn 計算平均偏差 對於在最大限度地減少近似資料的均方誤差的基礎上找到一個主成分來說，均值減去法是該解決方案的不可或缺的組成部分 AA Miranda YA Le Borgne and G Bontempi New Routes from Minimal Approximation Error to Principal Components Volume 27 Number 3 June 2008 Neural Processing Letters Springer 。因此，我們繼續如下步驟： 從資料矩陣 X 的每一列中減去經驗均值向量 u 將平均減去過的資料儲存在 M N 矩陣 B 中 mathbf B mathbf X mathbf umathbf h 其中 h 是一個長度為 N 的全為 1 的行向量： h n 1 qquad qquad text for n 1 ldots N 求協方差矩陣 從矩陣 B 中找到 M M 的經驗協方差矩陣 C mathbf C mathbb E left mathbf B otimes mathbf B right mathbb E left mathbf B cdot mathbf B right 1 over N 1 sum_ mathbf B cdot mathbf B 其中 mathbb E 為期望值 otimes 是最外層運算子 是共軛轉置運算子。 請注意，如果 B 完全由實陣列成，那麼共軛轉置與正常的轉置一樣。 為什麼是 N1 而不是 N，給出瞭解釋 查詢協方差矩陣的特徵值和特徵向量 計算矩陣 C 的特徵向量 mathbf V1 mathbf C mathbf V mathbf D 其中，D 是 C 的特徵值對角矩陣，這一步通常會涉及到使用基於計算機的計算特徵值和特徵向量的演算法。在很多矩陣代數系統中這些演算法都是現成可用的，如 R 語言，MATLABeig function Matlab documentation MathematicaEigenvalues function Mathematica documentation SciPy IDL 互動式資料語言 或者 GNU Octave 以及 OpenCV。 矩陣 D 為 M M 的對角矩陣 各個特徵值和特徵向量都是配對的，m 個特徵值對應 m 個特徵向量。 參見 Canonical correlation can replace of lowrank SVD approximation 特徵臉 Eigenface 多線性主成分分析 Multilinear PCA 獨立成分分析 核主成分分析 矩陣分解 Nonlinear dimensionality reduction PCA applied to morphometry and computer vision 奇異值分解 變換編碼 最小二乘法 圖模式 馬爾可夫鏈 馬爾可夫邏輯網路 註釋 參考 Category 多變數統計 Category 矩陣分解 Category 資料分析