PCA主成分分析(上)

未歇發表於2020-05-01

之前看3DMM的論文的看到其用了PCA的方法,一開始以為自己對於PCA已經有了一定的理解,但是當看到式子的時候發現自己好像對於原理卻又不甚明瞭,所以又回顧了以下PCA的原理,在此寫一個總結。

PCA目的

主成分分析(principal component analysis, PCA) 是常用的一種降維方法,其目的是為了讓資料合理的降維,在降低維度的同時儘量保證資料的原始資訊不過於流失,同時減少資料的相關性。也可以理解為,對於正交屬性空間中的樣本點,如何用一個超平面對所有樣本進行恰當的表達。

基於以上的目的可以大致分為兩種

  • 最大可分性: 樣本點在這個超平面上的投影儘可能的分開(即投影后的方差最大)
  • 最近重構性: 樣本點到這個超平面的距離都足夠近

最大可分性(最大投影方差)

我們的目的是為了讓投影后的資訊量的儘量保持原樣,那麼為什麼方差越大資訊量就越多?

我們知道資訊量可以通過資訊熵來描述,資訊熵的定義為:變數的概率分佈和每個變數的資訊量構成了一個隨機變數,這個隨機變數的期望就是這個分佈產生的資訊量的熵

\[Ent(D) = -\sum_{k=1}p_k logp_k \]

其描述了樣本的不確定度。舉個例子,如果一個文件中字母全是 a,那麼 \(p(a) = 1\),其資訊量為 \(logp(a) = 0\) 可以知道這個文件的資訊量完全不混亂,換言之字母a所承載的資訊量為0,也可以理解為字母a對於這個系統毫無意義,所以採取 \(logp(a) = 0\) 來表示。同時也可以看到其方差也為0。

那是不是所有的方差都和熵表達的是一樣的事呢?

再看看方差的定義:一個隨機變數的方差描述的是它的離散程度,也就是該變數離其期望值的距離。

\[\sigma^2 = \frac{1}{n-1}\sum_{i=1}^{n}(X_i - \bar{X}) \]

通過以上的兩個定義可以看出,方差描述的是與均值(期望)的離散程度, 而資訊熵描述的是 不確定程度 ,僅僅與隨機變數的分佈有關,與其的具體取值無關。

在某些情況下,當方差越大,資訊熵不一定越大。如下圖

PCA主成分分析(上)

再回到PCA的目的,是為了保持降維後資訊量的最大化。但由於我們當處理一個具體的事件時,並無法準確得到資料是以什麼概率分佈產生的,這樣計算資訊熵也就沒有什麼意義。而對於某些分佈,如下

PCA主成分分析(上)

可以看出,在大部分情況下,方差越大資訊熵也越大,即用方差去描述不確定性和資訊熵描述不確定性在這些分佈的情況下等價。

當然也有不等價的情況,只是在這種情況下,考慮方差就不一定成立.

以上是一種考慮方式,另一種直接通過投影如下圖

PCA主成分分析(上)

圖片來源於西瓜書


可以看到,可以將二維向量投影到紅線或者灰線,當然還有很多可以選擇的投影方向,那麼問題在於哪一個投影方向是最好的呢?對於紅線而言投影后樣本點更分散,所以其包含的資訊量更大。

所以,根據以上資訊我們需要找到的是進行降維後,對於不同樣本在同一緯度的值差異大的緯度

投影

假設有m個n維資料 \(X(x^{(1)}, x^{(2)},...,x^{(m)})( n \times m)\) (後面均用這個例子),該資料需要先經歷中心化,然後經過投影變換後得到了新的座標系為 \(\{w_1,w_2,...,w_n\}\),其中 \(w\)標準正交基, 即 \(||w||_2=1, w_i^Tw_j=0\)

這裡可以想象成對於任意一個樣本點 \(x_i\) 投影到任意新座標軸 \(w_j\) 上的所表達的座標為 \(z_j = w_j^Tx_i\), 所以這裡 \(z_j\) 就表示了低緯座標系裡第 \(j\) 緯的座標。

即對於任意一個樣本 \(x^{(i)}\) 在新座標系中的投影為 \(W^Tx^{(i)}\)

優化目標

所以對於基於最大方差投影的PCA演算法的優化目標是:

  1. 降維後投影在各個方向的方差和最大
  2. 不同緯度之間的相關性為0

根據優化目標如何得到降維後的資料呢?

這裡先給出步驟:

  1. 將X的每一行(代表一個屬性欄位)進行零均值化,即減去這一行的均值

  2. 求出協方差矩陣 \(C=\frac{1}{m}XX^\mathsf{T}\)

  3. 求出協方差矩陣的特徵值及對應的特徵向量

  4. 取最大的 \(n'\) 個特徵值所對應的所對應的特徵向量,組成的矩陣 \(W\) 即是投影矩陣

  5. \(Z=W^TX\)即為降維到 \(n'\) 維後的資料集

關鍵點

  1. 為什麼要將X的每一行進行0均值化(即每一個屬性欄位0均值化)
  2. 為什麼要求去協方差矩陣

首先我們知道同一特徵的協方差表示該元素的方差,不同特徵之間的協方差表示他們的相關性,如下, 假設針對特徵 \((f_1,f_2,...,f_n)\) 有協方差矩陣為

\[Cov(f_1,f_2,...,f_n)=\left[ \begin{matrix} Cov(f_1,f_1) & Cov(f_1,f_2)& ...& Cov(f_1,f_n) \\ Cov(f_2,f_1) & Cov(f_2,f_2) & ... & Cov(f_2,f_n) \\ ... & ... & ... & ... \\ Cov(f_n,f_1) & Cov(f_n,f_2) & ... & Cov(f_n,f_n) \end{matrix} \right] \]

其中, 對於特徵 \((X,Y)\)

\[\begin{aligned} Cov\left( X,Y \right)&=E\left[ \left( X-E\left( X \right) \right)\left( Y-E\left( Y \right) \right) \right] \\ &=\frac{1}{n-1}\sum_{i=1}^{n}{(x_{i}-\bar{x})(y_{i}-\bar{y})} \end{aligned} \]

所以根據我們的求取的目標(同一緯度方差最大化,不同緯度相關性為0)可以用以下的協方差矩陣來表示

\[Cov(f_1,f_2,...,f_n)=\left[ \begin{matrix} \delta_{11} & 0 & ... & 0 \\ 0 & \delta_{22} & ... & 0 \\ ...& ... & ... & ... \\ 0 & 0 & ... & \delta_{nn} \end{matrix} \right] \]

這裡引入矩陣的跡

數學定義: 線上性代數中,一個n×n矩陣A的主對角線(從左上方至右下方的對角線)上各個元素的總和被稱為矩陣A的跡(或跡數),一般記作tr(A)。

假設將資料從 \(n\) 維降到 \(n'\) 維, 所以要優化的目標之一便是令 \(Cov(f_1,f_2, ..., f_{n'})\) 矩陣對角線元素之和最大,即 \(max(\delta_{11}, \delta_{22}, ... ,\delta_{n'n'})\)

推導

設有m個n維資料\(X (x^{(1)}, x^{(2)},...,x^{(m)})(n \times m)\) , 首先將資料X的每一維進行中心化, 原因在於求協方差矩陣的時候需要用到 \((x_i - \bar x)(y_i - \bar y)\) 所以原始資料變成

\[X'= \begin{bmatrix} x_{11} - u_1 & x_{12} - u_1 & ... & x_{1m} - u_1 \\ x_{21} - u_2 & x_{22} - u_2 & ... & x_{2m} - u_2 \\ ... & ... & ... & ... \\ x_{n1} - u_n & x_{n2} - u_n & ... & x_{nm} - u_n \end{bmatrix}\]

\(W \{w_1,w_2,...,w_n\}\)\((n \times n)\) 的標準正交基矩陣(投影矩陣), \(Y = W^TX\) 為投影后的樣本矩陣(新座標系中任何一個樣本的投影方差為 \(x^{(i)T}WW^Tx^{(i)}\))

\(Y\) 的協方差矩陣(根據維度數來考慮)為

\[\begin{aligned} C_Y &= \frac{1}{m} YY^T \\ &= \frac{1}{m} W^TXX^TW \\ &= W^T (\frac{1}{m} XX^T) W \end{aligned} \]

\(C = \frac{1}{m} XX^T\) 可得

\[C_Y = W^TCW \]

而優化的目標為

\[\left\{\begin{matrix} \underbrace{arg\;max}_{W}\;tr( W^TCW ) \\ W^TW=I \end{matrix}\right. \tag1 \]

由於 \(C\) 已知,目的是為了求取極值, 利用拉格朗日函式(設給定函式 \(z=ƒ(x,y)\) 在滿足 \(φ(x,y)=0\)下的條件極值,可以轉化為函式 \(F(x,y,\lambda) = f(x,y) + \lambda φ(x,y)\) 的無條件極值問題

所以上式(1) 就轉化為

\[f(W) = tr(W^TCW) + \lambda(I - W^TW) \]

等式兩遍對W求導

\[\frac{\partial f}{\partial W} = \frac{\partial tr(W^TCW)}{\partial W} - \lambda \frac{\partial (W^TW)}{\partial W} \]

令導數為0,即 \(\frac{\partial f}{\partial W} = 0\), 且有性質 \(\frac{\partial tr(AB)}{\partial A} = B^T\), \(\frac{\partial tr(AB)}{\partial B} =A^T\)\(\frac{\partial X^TX}{\partial X} = X\) 可得

\[(W^TC)^T - \lambda W = 0 \Rightarrow CW = \lambda W \]

由上式可以看出, \(W\)\(XX^T\) 的特徵向量組成的矩陣, 而 \(-\lambda\)\(XX^T\) 的若干個特徵值組成的矩陣,特徵值在主對角線上,其餘位置為0。 當將資料從 \(n\) 維降到 \(n'\) 維時, 需要找到最大的 \(n'\) 個特徵值對應的特徵向量, 這 \(n'\) 個特徵向量組成的矩陣 \(W\) 即維我們需要的新座標系矩陣,對於原始的資料集, 只需要利用 \(W^TX\), 就可以把原始資料集降維到最小投影距離的 \(n'\) 維資料集。

ps: 這裡有一個性質 實對稱矩陣不同特徵值對應的特徵向量互相正交, 在這裡我們的 \(C_Y\) 是一個協方差矩陣,而協方差矩陣是一個實對稱矩陣

為什麼要找最大特徵值對應的特徵向量呢?

假設有樣本點如下(已經做過預處理,均值為0),以及可投影的維度

PCA主成分分析(上)

我們知道向量點乘的意義是,一個向量對於某一個單位向量的投影(向量對這個單位向量的線性變換),即 \(\vec{A} \cdot \vec{B}\) 的意義是向量A在向量B上的投影長度乘以向量B的模長(對如果B是一個平面也適用,即B為新的平面的基向量)。

所以對於任意維度的投影直線 \(u\)(列向量) 其投影后的樣本方差為:

\[方差 = \frac{1}{m} \sum_{i=1}^{m}({x^{i}}^Tu - 所有{{x^{i}}^Tu}的均值)^2 \]

由於已經在一開始就進行了 \(X\) 的零均值處理,以及向量加法的分配律可以得知 \(所有{{x^{i}}^Tu}的均值 = 0\)

所以最終方差為

\[方差 = \frac{1}{m} \sum_{i=1}^{m}({x^{i}}^Tu )^2 \]

對上式進行變換 (根據向量的交換律\(a \cdot b = b \cdot a\))

\[\frac{1}{m} \sum_{i=1}^{m}({x^{i}}^Tu )^2 = \frac{1}{m}(\sum_{i=1}^{m}{u^Tx^ix^{i}}^Tu)= u^T(\frac{1}{m}\sum_{i=1}^{m}{x^ix^{i}}^T)u \]

由上式可以發現,括號內的部分就是樣本特徵的協方差矩陣, 現在我們已經得到這個方差的表達方式,那麼如何使得這個方差最大呢?令方差 \(\frac{1}{m} \sum_{i=1}^{m}({x^{i}}^Tu )^2 = \lambda, C = \frac{1}{m}\sum_{i=1}^{m}{x^ix^{i}}^T\) ,於是上式就變成了

\[\lambda = u^TCu \]

因為 \(u^Tu = 1\) 同理, 為了使得方差最大,利用拉格朗日乘子法可以得知:

\[u^TCu + \lambda(1 - u^Tu) \]

將上式求導,是之為0, 得到:

\[Cu = \lambda u \]

所以為了使得方差 \(\lambda\) 最大,也就是取協方差矩陣 \(C\) 的最大特徵值,與其對應的特徵向量,為了使選取的 \(n'\) 維空間各個維度方差之和最大,就是取最大的 \(n'\) 個特徵值以及其對應的特徵向量。 從這裡也可以看出,由於 \(C\) 使協方差矩陣,也就是實對稱矩陣, 所以其特徵特徵向量兩兩正交。

參考:

https://www.cnblogs.com/LeftNotEasy/archive/2011/01/08/lda-and-pca-machine-learning.html

https://www.cnblogs.com/pinard/p/6239403.html#!comments

https://www.cnblogs.com/jerrylead/archive/2011/04/18/2020209.html

相關文章