主成分分析(PCA)與K-L變換

\qquad主成分分析 (Principal Component Analysis, PCA)(Principal\ Component\ Analysis,\ PCA) 基於輸入數據的協方差矩陣,可實現“去除數據集的相關性” —— 在數據處理中常用於通過“高維數據的降維”來實現特徵提取,在信號處理中被稱爲 KK-LL 變換,常用於實現“數據壓縮”。

這裏的“相關性”是指數據集各維度之間的“線性”依賴關係,採用“協方差”來描述
以二維數據 x=(x1,x2)T\boldsymbol x=(x_1,x_2)^T 爲例,“觀測數據集不相關”是指協方差 cov(x1,x2)=0cov(x_1,x_2)=0,即:x1x_1x2x_2 兩個分量不是線性相關的。此時,協方差矩陣爲對角陣
詳細內容可參考《協方差矩陣與二維高斯分佈

\qquad

1. 主成分分析 —— 基於最大方差的描述

\qquad考慮觀測數據集 {xi}i=1KRN\{\boldsymbol x_i\}_{i=1}^K\in R^N,將每個觀測數據投影到某個單位方向 uRN,uTu=1\boldsymbol u\in R^N,\boldsymbol u^T\boldsymbol u=1。從數據處理的角度來看,如果觀測數據集在單位方向 u\boldsymbol u 上的投影值具有最大方差,那麼方向 u\boldsymbol u 就爲主成分 (Principal Component)(Principal\ Component)

1.1 投影數據的方差

\qquad如圖 11 所示,(二維)數據集 {xi}i=1K\{\boldsymbol x_i\}_{i=1}^K紅色點)在投影之後,變成了單位方向 u\boldsymbol u 上的向量集 {x~i}i=1K\{\tilde\boldsymbol x_i\}_{i=1}^K綠色點)。

\qquad在這裏插入圖片描述

圖1 取自於《PRML》Fig 12.2
    觀測數據點 xi\boldsymbol x_i 經過投影之後爲 x~i=(uTxi)u\tilde\boldsymbol x_i=(\boldsymbol u^T\boldsymbol x_i)\boldsymbol u,即方向爲 u\boldsymbol u,長度爲 uTxi\boldsymbol u^T\boldsymbol x_i

\qquad投影后數據 {x~i}i=1K\{\tilde\boldsymbol x_i\}_{i=1}^K (在 u\boldsymbol u 方向上)的方差可定義爲:

1Ki=1K{uTxiuTxˉ}2=uTSu\qquad\qquad\qquad\dfrac{1}{K}\displaystyle\sum_{i=1}^K\{\boldsymbol u^T\boldsymbol x_i-\boldsymbol u^T\bar\boldsymbol x\}^2=\boldsymbol u^TS\boldsymbol u

\qquad\qquad其中,xˉ=1Ki=1Kxi\bar\boldsymbol x=\dfrac{1}{K}\displaystyle\sum_{i=1}^K\boldsymbol x_i 爲觀測數據集的樣本均值

\qquad\qquad   S=1Ki=1K(xixˉ)(xixˉ)TS=\dfrac{1}{K}\displaystyle\sum_{i=1}^K(\boldsymbol x_i-\bar\boldsymbol x)(\boldsymbol x_i-\bar\boldsymbol x)^T 爲觀測數據集的協方差矩陣

對於觀測數據集 {x1,x2,,xK}, xiRN\{\boldsymbol x_1,\boldsymbol x_2,\cdots,\boldsymbol x_K\},\ \forall \boldsymbol x_i\in R^N,記 xˉ\bar\boldsymbol x 爲數據集的樣本均值
若將“去掉均值的數據集”寫成矩陣形式,記爲 X=[x1xˉ,x2xˉ,,xKxˉ]N×K\bold X = [\boldsymbol x_1-\bar\boldsymbol x,\boldsymbol x_2-\bar\boldsymbol x,\cdots,\boldsymbol x_K-\bar\boldsymbol x]_{N\times K}
那麼,數據集的協方差矩陣爲: S=1KXTXS=\dfrac{1}{K}\bold X^T\bold X
可參考《PCA圖像壓縮的matlab實現

\qquad
\qquad爲了求使得方差 uTSu\boldsymbol u^TS\boldsymbol u 最大的 u\boldsymbol u 方向,採用以下步驟:

(1)\qquad(1) 採用拉格朗日乘子法構造最優化問題:

max { uTSu+λ(1uTu) }\qquad\qquad\qquad\qquad\max\ \{\ \boldsymbol u^TS\boldsymbol u+\lambda(1-\boldsymbol u^T\boldsymbol u)\ \}

(2)\qquad(2) 令其對 u\boldsymbol u 的偏導爲 00,可得到:

Su=λu\qquad\qquad\qquad\qquad S\boldsymbol u=\lambda\boldsymbol u

\qquad  顯然,u\boldsymbol u 是協方差矩陣 SS 的特徵向量
\qquad     λ\lambdau\boldsymbol u 所對應的特徵值

(3)\qquad(3) 將等式兩端左乘 uT\boldsymbol u^T,可得到:

uTSu=uTλu=λuTu=λ\qquad\qquad\qquad\qquad\boldsymbol u^TS\boldsymbol u=\boldsymbol u^T\lambda\boldsymbol u=\lambda\boldsymbol u^T\boldsymbol u=\lambda

\qquad  這就說明,觀測數據集在 SS 的特徵向量 u\boldsymbol u 方向上投影后,“投影數據的方差值”正好等於對應的特徵值 λ\lambda

\qquad如圖 22 所示,若將協方差矩陣 SS 的特徵值按從大到小的順序排列,最大特徵值 λ1\lambda_1 所對應特徵向量 u1\boldsymbol u_1 的方向,即爲第一主成分,該觀測數據集“最主要的特徵”體現在 u1\boldsymbol u_1 方向上,投影后的數據在該方向上分佈的散佈程度最大λ2\lambda_2 所對應特徵向量 u2\boldsymbol u_2 的方向,爲第二主成分,“次主要的特徵”體現在 u2\boldsymbol u_2 方向上;\cdots\cdots
\qquad在這裏插入圖片描述

圖2 從一個均值爲 0\boldsymbol 0,協方差矩陣爲 [2224]\left[\begin{matrix}2&-2\\-2&4\end{matrix}\right] 的正態分佈採樣了 100100 個數據(藍色的 ‘+’ 號)組成觀測數據集 {xi}i=1100R2\{\boldsymbol x_i\}_{i=1}^{100}\in R^2
   
通過對協方差矩陣進行特徵分解,可求出:
(1)(1) 第一主成分爲 u1=[0.52570.8507]\boldsymbol u_1=\left[\begin{matrix}0.5257\\-0.8507\end{matrix}\right]黑色箭頭),觀測數據集在該方向上的投影具有更大的方差
  對應了協方差矩陣的最大特徵值 λ1=5.2360\lambda_1=5.2360
(2)(2) 第二主成分爲 u2=[0.85070.5257]\boldsymbol u_2=\left[\begin{matrix}-0.8507\\-0.5257\end{matrix}\right]紅色箭頭),觀測數據集在該方向上的投影具有更小的方差
  對應了協方差矩陣較小的特徵值 λ2=0.7639\lambda_2=0.7639
 
100100 個觀測點計算得到的“觀測數據集的協方差矩陣”S=[1.78091.76401.76403.6450]S=\left[\begin{matrix}1.7809&-1.7640\\-1.7640&3.6450\end{matrix}\right],特徵分解之後的兩個主成分分別爲:
(1)(1) 第一主成分爲 u1=[0.51620.8565]\boldsymbol u_1^{'}=\left[\begin{matrix}0.5162\\-0.8565\end{matrix}\right],較大的特徵值 λ1=4.7081\lambda_1^{'}=4.7081(右圖爲投影數據)
  可以看出,觀測數據的主要變化特徵(yyxx 的線性變化)是沿着 u1\boldsymbol u_1^{'} 方向(可參考《協方差矩陣與二維高斯分佈》)
(2)(2) 第二主成分爲 u2=[0.85650.5162]\boldsymbol u_2^{'}=\left[\begin{matrix}-0.8565\\-0.5162\end{matrix}\right],較小的特徵值 λ2=0.7178\lambda_2^{'}=0.7178
 
可以看出,即使只採樣了 100100 個數據,兩組主成分的方向也是非常接近的

\qquad

1.2 高維數據的降維

\qquad考慮 NN 維觀測數據集 {xi}i=1K\{\boldsymbol x_i\}_{i=1}^K,當 NN 值比較大時,會極大增加運算量。例如,一幅 100×100100\times 100 大小的圖像實際上是 R10000R^{10000} 空間中的一個元素(N=10000N=10000)。

\qquad然而,數據通常都是包含一些冗餘的,“高維數據中的有效成分”實際上只包含在一個比較小的 MM 維子空間(RMRN, M<NR^M\sub R^N,\ M<N)中。

\qquad採用 PCAPCA 提取出最重要的 MM 個成分( 最大的 MM 個特徵值所對應的成分)組成 x~iRM\tilde\boldsymbol x_i\in R^M 來表示完整的 NN 維數據 xiRN\boldsymbol x_i\in R^N,從而實現了高維數據的降維。

\qquad

2. K-L變換 —— 基於最小誤差的描述

\qquad主成分分析,在信號處理領域也被稱爲 KK-LL 變換。也就是說,一個信號可以在 KK-LL 基上展開。

2.1 內積空間中的正交變換

\qquad由線性代數理論可知,實對稱矩陣 SN×NS_{N\times N} 可以通過一個正交矩陣 AA 實現對角化(實對稱矩陣的特徵分解,可參考本文):

ASA1=ASAT=[λ0λ1λN1]\qquad\qquad ASA^{-1}=ASA^T=\left[\begin{matrix}\lambda_0&&&\\&\lambda_1&&\\&&\ddots&\\&&&\lambda_{N-1}\end{matrix}\right]

Spi=λipi  (i=0,1,,N1)\qquad\qquad Sp_i=\lambda_ip_i\ \ (i=0,1,\cdots,N-1)  【 pip_i 爲特徵值 λi\lambda_i 所對應的特徵向量】

\qquad\qquad其中,正交矩陣 A=[p0,p1,,pN1]A=[p_0,p_1,\cdots,p_{N-1}] 滿足 A1=ATA^{-1}=A^T

\qquad正交矩陣 AA 的主要特點在於:AA 中各列是兩兩正交的。

A1=ATATA=I { piTpj=0,ijpiTpj=1,i=j\qquad\qquad A^{-1}=A^T\Longrightarrow A^TA=\bold I \ \Longrightarrow\left\{ \begin{aligned} \ p_i^Tp_j&=0&,i\neq j \\\\ p_i^Tp_j&=1&,i=j \end{aligned} \right.

\qquad若將正交矩陣 AA 看成兩個內積空間 X,YX,Y 之間的線性變換,那麼

A:XY\qquad\qquad\qquad A:X\longrightarrow Y
xy=Ax\qquad\qquad\qquad\qquad \boldsymbol x\longrightarrow \boldsymbol y=A\boldsymbol x  (正變換)

\qquad正交變換可以保證信號在變換前後的能量保持不變,即:xX=yY=AxY\Vert \boldsymbol x\Vert_X=\Vert \boldsymbol y\Vert_Y=\Vert A\boldsymbol x\Vert_Y
\qquad

2.2 信號的正交分解

\qquad由於正交矩陣 AA 中的各列兩兩正交,AA 中的列構成了空間的一組“正交規範基”,若認爲 y=Ax\boldsymbol y=A\boldsymbol x 爲正變換,反變換也必然存在,即:

x=A1y=ATy\qquad\qquad\qquad\boldsymbol x=A^{-1}\boldsymbol y=A^T\boldsymbol y  (逆變換)

\qquad上述逆變換意味着,一個信號 x=[x0,x1,,xN1]T\boldsymbol x=[x_0,x_1,\cdots,x_{N-1}]^T 可以在一組正交基 {φ(,n)}\{\varphi(\cdot,n)\} 上展開,展開係數爲 y=[y0,y1,,yN1]T\boldsymbol y=[y_0,y_1,\cdots,y_{N-1}]^T,也就是:

xi=n=0N1ynφ(i,n)\qquad\qquad\qquad x_i=\displaystyle\sum_{n=0}^{N-1}y_n\varphi(i,n),  其中 φ(i,n)\varphi(i,n) 爲變換核

逆變換矩陣 AT=[φ(0,0)φ(0,n)φ(0,N1)φ(i,0)φ(i,n)φ(i,N1)φ(N1,0)φ(N1,n)φ(N1,N1)]A^T=\left[\begin{matrix}\varphi(0,0)&\cdots&\varphi(0,n)&\cdots&\varphi(0,N-1)\\ \vdots&&\vdots&&\vdots \\ \varphi(i,0)&\cdots&\varphi(i,n)&\cdots&\varphi(i,N-1)\\ \vdots&&\vdots&&\vdots \\ \varphi(N-1,0)&\cdots&\varphi(N-1,n)&\cdots&\varphi(N-1,N-1)\end{matrix}\right]

\qquad例如,一維離散傅里葉變換的逆變換核爲 φ(i,n)=ej2πinN\varphi(i,n)=e^{j\frac{2\pi in}{N}},那麼

y=Ax  yn=i=0N1xiej2πinN,   n=0,1,,N1\qquad\qquad\boldsymbol y= A\boldsymbol x\ \ \longrightarrow y_n=\displaystyle\sum_{i=0}^{N-1}x_ie^{-j\frac{2\pi in}{N}},\qquad\ \ \ n=0,1,\cdots,N-1
x=ATyxi=1Nn=0N1ynej2πinN,i=0,1,,N1\qquad\qquad\boldsymbol x= A^T\boldsymbol y\longrightarrow x_i=\dfrac{1}{N}\displaystyle\sum_{n=0}^{N-1}y_ne^{j\frac{2\pi in}{N}},\qquad i=0,1,\cdots,N-1

可以驗證一維離散傅里葉逆變換 AT=[ej2πinN]A^T=[e^{j\frac{2\pi in}{N}}] 爲正交矩陣

\qquad

2.3 K-L變換

\qquad對於一個寬平穩的隨機向量 x=[x0,x1,,xN1]T\boldsymbol x=[x_0,x_1,\cdots,x_{N-1}]^T,其協方差矩陣爲 Sx=E[(xμx)(xμx)T]S_{\boldsymbol x}=E[(\boldsymbol x-\boldsymbol\mu_{\boldsymbol x})(\boldsymbol x-\boldsymbol\mu_{\boldsymbol x})^T],其中 μx=E[x]\boldsymbol\mu_{\boldsymbol x}=E[\boldsymbol x]

K\qquad K-LL 變換記爲 y=Ax\boldsymbol y= A\boldsymbol x —— 尋找正交矩陣 AA 將輸入信號 x\boldsymbol x 變換爲輸出信號 y\boldsymbol y(變換域),同時使得隨機變量 y\boldsymbol y 的協方差矩陣 SyS_{\boldsymbol y} 爲對角陣,即:

Sy=ASxAT=[λ0λ1λN1]\qquad\qquad S_{\boldsymbol y}=AS_{\boldsymbol x}A^T=\left[\begin{matrix}\lambda_0&&&\\&\lambda_1&&\\&&\ddots&\\&&&\lambda_{N-1}\end{matrix}\right]

\qquad由於隨機變量 y\boldsymbol y 的協方差矩陣 SyS_{\boldsymbol y} 爲對角陣,各分量之間的協方差均爲零,原始信號 x\boldsymbol x 經過 y=Ax\boldsymbol y= A\boldsymbol x 變換後,完全去除了相關性。
\qquad在這裏插入圖片描述

以圖像塊爲例:
(1) 圖像像素在空間域中相關性很強(局部區域像素通常比較接近),能量分佈比較均勻
(2) 圖像塊經過正交變換(座標旋轉或變換)後,能量集中在少數座標軸上,變換系數{yn}\{y_n\}之間的相關性近似統計獨立
(3) 圖像塊的能量在變換域中的分佈相對集中(集中在直流和少數低頻係數),可採用較少的編碼比特表示,達到壓縮編碼的目的

\qquadKK-LL{ϕ0,ϕ1,,ϕN1}\{\phi_0,\phi_1,\cdots,\phi_{N-1}\} 上可以將輸入信號 x\boldsymbol x 在變換域展開:

x=ATy=[ϕ0,ϕ1,,ϕN1]y=n=0N1ynϕn\qquad\qquad\boldsymbol x=A^T\boldsymbol y=[\phi_0,\phi_1,\cdots,\phi_{N-1}]\boldsymbol y=\displaystyle\sum_{n=0}^{N-1}y_n\phi_n

\qquad\qquad其中,yn=x,ϕn=xTϕny_n=\langle\boldsymbol x, \phi_n\rangle=\boldsymbol x^T\phi_nx\boldsymbol xϕn\phi_n 上的投影

\qquad因此
x=ATy=n=0N1x,ϕnϕn\qquad\qquad\boldsymbol x=A^T\boldsymbol y=\displaystyle\sum_{n=0}^{N-1}\langle\boldsymbol x, \phi_n\rangle\phi_n

AT=A1ATA=IA^T=A^{-1}\Longrightarrow A^TA=\bold I,說明 AA 中各列 {pi}\{p_i\} 兩兩正交
又由於 AT=A1AAT=I(AT)T(AT)=IA^T=A^{-1}\Longrightarrow AA^T=\bold I\Longrightarrow(A^T)^T(A^T)=\bold I,說明 ATA^T 中各列 {ϕn}\{\phi_n\} 也兩兩正交

\qquad

2.4 基於K-L變換的數據壓縮

\qquad要對信號 x\boldsymbol x 做數據壓縮,只要捨去變換系數 y\boldsymbol y 的一些係數。假設只保留 M<NM<N 個係數,也就是:

x^=n=0M1ynϕn=n=0N1x,ϕnϕn\qquad\qquad\hat\boldsymbol x=\displaystyle\sum_{n=0}^{M-1}y_n\phi_n=\displaystyle\sum_{n=0}^{N-1}\langle\boldsymbol x, \phi_n\rangle\phi_n

\qquad壓縮後數據 x^\hat\boldsymbol x 對原始數據 x\boldsymbol x 的均方誤差爲:ε=E[(x^x)2]\varepsilon=E[(\hat\boldsymbol x-\boldsymbol x)^2]

\qquad因此,KK-LL 變換也可以理解爲:在保留 MM 個係數的前提下,爲了獲得最大壓縮率,選擇一組標準正交基 {ϕ0,ϕ1,,ϕN1}\{\phi_0,\phi_1,\cdots,\phi_{N-1}\},使得上述均方誤差最小。

ε=E[(x^x)2]=E{[n=MN1ynϕn]2}=E{n=MN1ynϕn,n=MN1ynϕn},ϕi,ϕj=0(ij)=E{n=MN1yn2},ϕn,ϕn=1=E{n=MN1[xTϕn]2},[xTϕn]2=(xTϕn)T(xTϕn)=E{n=MN1[ϕnTxxTϕn]}=n=MN1ϕnTE{xxT}ϕn\qquad\qquad\begin{aligned}\varepsilon&=E[(\hat\boldsymbol x-\boldsymbol x)^2]=E\left\{\left[\displaystyle\sum_{n=M}^{N-1}y_n\phi_n \right]^2 \right\} \\ &=E\left\{ \langle \displaystyle\sum_{n=M}^{N-1}y_n\phi_n,\displaystyle\sum_{n=M}^{N-1}y_n\phi_n \rangle \right\},\quad \langle\phi_i,\phi_j\rangle=0(i\neq j) \\ &=E\left\{\displaystyle\sum_{n=M}^{N-1}y_n^2 \right\},\qquad\qquad\qquad\quad \langle\phi_n,\phi_n\rangle=1\\ &=E\left\{\displaystyle\sum_{n=M}^{N-1}[\boldsymbol x^T\phi_n]^2 \right\},\qquad\qquad\quad [\boldsymbol x^T\phi_n]^2=(\boldsymbol x^T\phi_n)^T(\boldsymbol x^T\phi_n) \\ &=E\left\{\displaystyle\sum_{n=M}^{N-1}[\phi_n^T\boldsymbol x\boldsymbol x^T\phi_n] \right\} \\ &=\displaystyle\sum_{n=M}^{N-1}\phi_n^TE\left\{\boldsymbol x\boldsymbol x^T\right\}\phi_n \end{aligned}

\qquad假設 x\boldsymbol x 已去除均值,那麼 E{xxT}=SxE\left\{\boldsymbol x\boldsymbol x^T\right\}=S_{\boldsymbol x},那麼最小均方誤差:ε=n=MN1ϕnTSxϕn\varepsilon=\displaystyle\sum_{n=M}^{N-1}\phi_n^TS_{\boldsymbol x}\phi_n

\qquad同樣採用拉格朗日乘子法構造出最優化問題:

min { ε+λ(1ϕTϕ) }\qquad\qquad\qquad\min\ \{\ \varepsilon+\lambda(1-\phi^T\phi)\ \}

\qquadϕn\phi_n求偏導:

ϕn{ ε+λ(1ϕTϕ) }=0\qquad\qquad\qquad\dfrac{\partial}{\partial \phi_n}\{\ \varepsilon+\lambda(1-\phi^T\phi)\ \}=0

\qquad可求得:

Sxϕn=λnϕn,n=M,,N1\qquad\qquad\qquad S_{\boldsymbol x}\phi_n=\lambda_n\phi_n,\quad n=M,\cdots,N-1

\qquad
\qquad因此,在變換域截短數據後的均方誤差爲:

ε=n=MN1ϕnTSxϕn=n=MN1ϕnTλnϕn=n=MN1λn\qquad\qquad\qquad\varepsilon=\displaystyle\sum_{n=M}^{N-1}\phi_n^TS_{\boldsymbol x}\phi_n=\displaystyle\sum_{n=M}^{N-1}\phi_n^T\lambda_n\phi_n=\displaystyle\sum_{n=M}^{N-1}\lambda_n

\qquad爲了使均方誤差最小,將協方差矩陣 SxS_{\boldsymbol x} 的特徵值按照從大到小的順序排列,即 λ0λ1λN1\lambda_0\geq\lambda_1\geq\cdots\geq\lambda_{N-1},保留最大的 MM 個特徵值,相當於在變換域(保留MM個變換系數時)保留了信號的最大能量。

\qquad
\qquad由於KLK-L變換能夠完全去除原始信號 x\boldsymbol x 的相關性,通過保留最大的 MM 個特徵值來進行數據壓縮時可以實現截短後數據 x^\hat\boldsymbol x 的均方誤差最小,KLK-L變換也被稱爲“最佳變換”。然而,由於KLK-L變換的基取決於協方差矩陣 SxS_{\boldsymbol x},協方差矩陣的特徵值和特徵向量的計算沒有像 FFTFFT 之類的快速算法,限制了其應用場景。離散餘弦變換 DCTDCT 在滿足一階馬爾可夫過程假設的前提下,可以極好地近似KLK-L變換,又有快速算法,因而在壓縮編碼中得到了廣泛應用。

\qquad
代碼實現PCA圖像壓縮
實現原理
(1)將 M×NM\times N 大小的圖像進行分塊,若每個圖像塊大小爲 Bs×BsB_s\times B_s,整幅圖像包含了 NsN_s 個圖像塊,也就是滿足 MN=NsBs2MN=N_sB_s^2
(2)相當於構建了一個 Bs2×1B_s^2\times 1 的隨機向量,整幅圖像包含了該隨機向量的 NsN_s 次實現
(3)PCA 針對該隨機向量的 NsN_s 次實現來展開,尋找該隨機向量的 Bs2B_s^2 個分量中最重要的 pp 個主分量
  【從K-L變換的角度來看】:一個 Bs2×1B_s^2\times 1 輸入圖像數據,經過K-L變換後,在新的 Bs2B_s^2 維空間中僅保留 pp 個維度(其實就是降維),若採用 PCA 選中的這 pp 個維度來表示圖像,可以使得“變換後圖像數據”的能量達到最大。
(4)從K-L變換域回到原始圖像的空間域,只需要在 Bs2B_s^2 維變換域空間中保留 pp 個維度的分量值,將剩餘的 Bs2pB_s^2-p 個分量置 00

上述過程僅僅考慮了圖像壓縮在變換域的表現,並未考慮其他的量化、編碼等過程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章