主成分分析

在多元統計分析中，**主成分分析**（英語：**Principal components analysis**，**PCA**）是一種統計分析、簡化數據集的方法。它利用正交轉換來對一系列可能相關的變數的觀測值進行線性轉換，從而投影為一系列線性不相關變數的值，這些不相關變數稱為主成分（Principal Components）。具體地，主成分可以看做一個線性方程式，其包含一系列線性係數來指示投影方向。PCA 對原始數據的正則化或預處理敏感（相對縮放）。

**基本思想：**

* 將坐標軸中心移到數據的中心，然後旋轉坐標軸，使得數據在 C1 軸上的變異數最大，即全部 n 個數據個體在該方向上的投影最為分散。意味著更多的訊息被保留下來。C1 成為**第一主成分**。
* C2 **第二主成分**：找一個 C2，使得 C2 與 C1 的共變異數（相關係數）為 0，以免與 C1 訊息重疊，並且使數據在該方向的變異數儘量最大。
* 以此類推，找到第三主成分，第四主成分…… 第 p 個主成分。p 個隨機變數可以有 p 個主成分。

主成分分析經常用於減少數據集的維數，同時保留數據集當中對變異數貢獻最大的特徵。這是通過保留低維主成分，忽略高維主成分做到的。這樣低維成分往往能夠保留住數據的最重要部分。但是，這也不是一定的，要視具體應用而定。由於主成分分析依賴所給數據，所以數據的準確性對分析結果影響很大。

主成分分析由卡爾・皮爾森於 1901 年發明，用於分析數據及建立數理模型，在原理上與主軸定理相似。之後在 1930 年左右由哈羅德・霍特林獨立發展並命名。依據應用領域的不同，在信號處理中它也叫做離散 K-L 轉換（discrete Karhunen–Loève transform (KLT)）。其方法主要是通過對共變異數矩陣進行特徵分解，以得出數據的主成分（即特徵向量）與它們的權值（即特徵值）。PCA 是最簡單的以特徵量分析多元統計分布的方法。其結果可以理解為對原數據中的變異數做出解釋：哪一個方向上的數據值對變異數的影響最大？換而言之，PCA 提供了一種降低數據維度的有效辦法；如果分析者在原數據中除掉最小的特徵值所對應的成分，那麼所得的低維度數據必定是最優化的（也即，這樣降低維度必定是失去訊息最少的方法）。主成分分析在分析複雜數據時尤為有用，比如人臉識別。

PCA 是最簡單的以特徵量分析多元統計分布的方法。通常，這種運算可以被看作是揭露數據的內部結構，從而更好地展現數據的變異度。如果一個多元數據集是用高維數據空間之坐標系來表示的，那麼 PCA 能提供一幅較低維度的圖像，相當於數據集在訊息量最多之角度上的一個投影。這樣就可以利用少量的主成分讓數據的維度降低了。

PCA 跟因子分析密切相關。因子分析通常包含更多特定領域底層結構的假設，並且求解稍微不同矩陣的特徵向量。

PCA 也跟典型相關分析（CCA）有關。CCA 定義的坐標系可以最佳地描述兩個數據集之間的交叉共變數，而 PCA 定義了新的正交坐標系，能最佳地描述單個數據集當中的變異數。

## 數學定義

PCA 的數學定義是：一個正交化線性轉換，把數據轉換到一個新的坐標系統中，使得這一數據的任何投影的第一大變異數在第一個坐標（稱為第一主成分）上，第二大變異數在第二個坐標（第二主成分）上，依次類推。

定義一個 $n\times m$ 的矩陣， $X^{T}$ 為去平均值（以平均值為中心移動至原點）的數據，其行為數據樣本，列為數據類別（注意，這裡定義的是 $X^{T}$ 而不是 $X$ ）。則 $X$ 的奇異值分解為 $X=W\Sigma V^{T}$ ，其中 $W\in \mathbf {R} ^{m\times m}$ 是 $XX^{T}$ 的特徵向量矩陣， $\Sigma \in \mathbf {R} ^{m\times n}$ 是奇異值矩陣， $V\in \mathbf {R} ^{n\times n}$ 是 $X^{T}X$ 的特徵向量矩陣。據此，

　
: ${\begin{aligned}{\boldsymbol {Y}}^{\top }&={\boldsymbol {X}}^{\top }{\boldsymbol {W}}\\&={\boldsymbol {V}}{\boldsymbol {\Sigma }}^{\top }{\boldsymbol {W}}^{\top }{\boldsymbol {W}}\\&={\boldsymbol {V}}{\boldsymbol {\Sigma }}^{\top }\end{aligned}}$

當 _m_ < _n_ − 1 時，**V** 在通常情況下不是唯一定義的，而 **Y** 則是唯一定義的。**W** 是一個正交矩陣，**Y**T**W**T=**X**T，且 **Y**T 的第一列由第一主成分組成，第二列由第二主成分組成，依此類推。

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

　
: $\mathbf {Y} =\mathbf {W_{L}} ^{\top }\mathbf {X} =\mathbf {\Sigma _{L}} \mathbf {V} ^{\top }$

其中 $\mathbf {\Sigma _{L}} =\mathbf {I} _{L\times m}\mathbf {\Sigma } $ ，且 $\mathbf {I} _{L\times m}$ 為 $L\times m$ 的單位矩陣。

**X** 的單向量矩陣 **W** 相當於共變異數矩陣的特徵向量 **C** = **X X**T,

　
: $\mathbf {X} \mathbf {X} ^{\top }=\mathbf {W} \mathbf {\Sigma } \mathbf {\Sigma } ^{\top }\mathbf {W} ^{\top }$

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

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

 

## 討論

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

假設零經驗均值，數據集 **X** 的主成分 _w_1 可以被定義為：

　
: $\mathbf {w} _{1}={\underset {\Vert \mathbf {w} \Vert =1}{\operatorname {\arg \,max} }}\,\operatorname {Var} \{\mathbf {w} ^{\top }\mathbf {X} \}={\underset {\Vert \mathbf {w} \Vert =1}{\operatorname {\arg \,max} }}\,E\left\{\left(\mathbf {w} ^{\top }\mathbf {X} \right)^{2}\right\}$

為了得到第 _k_ 個主成分，必須先從 **X** 中減去前面的 $k-1$ 個主成分：

　
: $\mathbf {\hat {X}} _{k-1}=\mathbf {X} -\sum _{i=1}^{k-1}\mathbf {w} _{i}\mathbf {w} _{i}^{\top }\mathbf {X} $

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

　
: $\mathbf {w} _{k}={\underset {\Vert \mathbf {w} \Vert =1}{\operatorname {arg\,max} }}\,E\left\{\left(\mathbf {w} ^{\top }\mathbf {\hat {X}} _{k-1}\right)^{2}\right\}.$

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

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

## 符號和縮寫表

## 主成分分析的屬性和限制

如上所述，主成分分析的結果依賴於變數的縮放。

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

## 主成分分析和訊息理論

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

特別地，Linsker 證明了如果 _s_ 是高斯分布，且 _n_ 是 與密度矩陣相應的共變異數矩陣的高斯噪聲，

## 使用統計方法計算 PCA

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

我們的目標是把一個給定的具有 _M_ 維的數據集 **X** 轉換成具有較小維度 _L_ 的數據集 **Y**。現在要求的就是矩陣 **Y**，**Y** 是矩陣 **X** Karhunen–Loè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 _{n=1}^{N}X[m,n]$

## 計算平均偏差

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

* 從數據矩陣 **X** 的每一列中減去經驗均值向量 **u**
* 將平均減去過的數據存儲在 _M_ × _N_ 矩陣 **B** 中

　
: : $\mathbf {B} =\mathbf {X} -\mathbf {u} \mathbf {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 完全由實數組成，那麼共軛轉置與正常的轉置一樣。

* 為什麼是 N-1, 而不是 N，Bessel's correction 給出了解釋

### 查找共變異數矩陣的特徵值和特徵向量

* 計算矩陣 **C** 的特徵向量

　
: : $\mathbf {V} ^{-1}\mathbf {C} \mathbf {V} =\mathbf {D} $

　
: 其中，**D** 是 **C** 的特徵值對角矩陣，這一步通常會涉及到使用基於計算機的計算特徵值和特徵向量的算法。在很多矩陣代數系統中這些算法都是現成可用的，如 R 語言，MATLAB, Mathematica, SciPy, IDL (交互式數據語言), 或者 GNU Octave 以及 OpenCV。

* 矩陣 **D** 為 _M_ × _M_ 的對角矩陣
* 各個特徵值和特徵向量都是配對的，_m_ 個特徵值對應 _m_ 個特徵向量。

## 參見

* 圖模式
* 馬可夫鏈
* 馬可夫邏輯網絡

## 注釋

 

## 參考

* Jolliffe, I. T. Principal Component Analysis. Springer-Verlag. 1986: 487 [2012-01-24]. ISBN 978-0-387-95442-4. doi:10.1007/b98835. （原始內容存檔於 2019-10-16）.