主成分分析

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

主成分分析由卡爾·皮爾遜於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^TX$的特徵向量矩陣。據此。

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

當 m TWT=XT，且YT的第一列由第一主成分組成，第二列由第二主成分組成，依此類推。

為了得到一種降低數據維度的有效辦法，我們可以利用WL把 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 XT,

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

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

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

## 討論

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

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

$$\mathbf{w}_1 <pre> = \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} <pre> = \mathbf{X} - \sum_{i = 1}^{k - 1} \mathbf{w}_i \mathbf{w}_i^\top \mathbf{X}$$

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

$$\mathbf{w}_k <pre> = \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是一種很流行且主要的模式識別技術。然而，它並不能最優化類別可分離性。另一種不考慮這一點的方法是線性判別分析。

## 符號和縮寫表

Symbol符號｜Meaning意義｜Dimensions尺寸｜Indices指數

$\mathbf{X} = \{ X[m,n] \}$｜由所有數據向量集組成的數據矩陣，一列代表一個向量｜$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[m,n] \}$｜對均值的偏離向量｜$M \times N$｜$m = 1 \ldots M$ $n = 1 \ldots N$

$\mathbf{Z} = \{ Z[m,n] \}$｜Z-分數，利用均值和標準差計算得到｜$M \times N$｜$m = 1 \ldots M$ $n = 1 \ldots N$

$\mathbf{C} = \{ C[p,q] \}$｜協方差矩陣｜$M \times M$｜$p = 1 \ldots M$ $q = 1 \ldots M$

$\mathbf{R} = \{ R[p,q] \}$｜相關矩陣｜$M \times M$｜$p = 1 \ldots M$ $q = 1 \ldots M$

$\mathbf{V} = \{ V[p,q] \}$｜C的所有特徵向量集｜$M \times M$｜$p = 1 \ldots M$ $q = 1 \ldots M$

$\mathbf{D} = \{ D[p,q] \}$｜主對角線為特徵值的對角矩陣｜$M \times M$｜$p = 1 \ldots M$ $q = 1 \ldots M$

$\mathbf{W} = \{ W[p,q] \}$｜基向量矩陣｜$M \times L$｜$p = 1 \ldots M$ $q = 1 \ldots L$

$\mathbf{Y} = \{ Y[m,n] \}$｜X 和W矩陣的投影矩陣｜$L \times N$｜$m = 1 \ldots L$ $n = 1 \ldots N$

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

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

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

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

通過使用降維來保存大部分數據資訊的主成分分析的觀點是不正確的。確實如此，當沒有任何假設資訊的信號模型時，主成分分析在降維的同時並不能保證資訊的不丟失，其中資訊是由香農熵來衡量的。

基於假設得$$\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個特徵向量。

## 參見

- Canonical correlation
- (can replace of low-rank SVD approximation)
- 特徵臉(Eigenface)
- 多線性主成分分析(Multilinear PCA)
- 獨立成分分析
- 核主成分分析
- 矩陣分解
- Nonlinear dimensionality reduction
- (PCA applied to morphometry and computer vision)
- 奇異值分解
- 變換編碼
- 最小二乘法
- 圖模式
- 馬爾可夫鏈
- 馬爾可夫邏輯網路