天天看點

特征臉(Eigenface)理論基礎-PCA(主成分分析法)

在之前的部落格  人臉識别經典算法一:特征臉方法(Eigenface)  裡面介紹了特征臉方法的原理,但是并沒有對它用到的理論基礎PCA做介紹,現在做補充。請将這兩篇博文結合起來閱讀。以下内容大部分參考自斯坦福機器學習課程:http://cs229.stanford.edu/materials.html

假設我們有一個關于機動車屬性的資料集{x(i);i=1,…,m}(m代表機動車的屬性個數),例如最大速度,最大轉彎半徑等。假設x(i)本質上是n維的空間的一個元素,其中n<<m,但是n對我們來說是未知的。假設xi和xj分别代表車以英裡和公裡為機關的最大速度。顯然這兩個屬性是備援的,因為它們兩個是有線性關系而且可以互相轉化的。是以如果僅以xi和xj來考慮的話,這個資料集是屬于m-1維而不是m維空間的,是以n=m-1。推廣之,我們該用什麼方法降低資料備援性呢?

首先考慮一個例子,假設有一份對遙控直升機操作員的調查,用x(i)1(1是下标,原諒我這操蛋的排版吧)表示飛行員i的飛行技能,x(i)2表示飛行員i喜歡飛行的程度。通常遙控直升飛機是很難操作的,隻有那些非常堅持而且真正喜歡駕駛的人才能熟練操作。是以這兩個屬性x(i)1和x(i)2相關性是非常強的。我們可以假設兩者的關系是按正比關系變化的,如下圖裡的u1所示,資料散布在u1兩側是因為有少許噪聲。

接下來就是如何計算u1的方向了。首先我們需要預處理資料。

1.令

2.用x(i)-μ替代x(i)

3.求

4.用x(i)j/σj替代x(i)j

步驟1-2其實是将資料集的均值歸零,也就是隻取資料的偏差部分,對于本身均值為零的資料可以忽略這兩步。步驟3-4是按照每個屬性的方差将資料重新度量,也可以了解為歸一化。因為對于不同的屬性(比如車的速度和車座數目)如果不歸一化是不具有比較性的,兩者不在一個量級上。如果将pca應用到圖像上的話是不需要步驟3-4的,因為每個像素(相當于不同的屬性)的取值範圍都是一樣的。

資料經過如上處理之後,接下來就是尋找資料大緻的走向了。一種方法是找到一個機關向量u,使所有資料在u上的投影之和最大,當然資料并不是嚴格按照u的方向分布的,而是分布在其周圍。考慮下圖的資料分布(這些資料已經做了前期的預處理)。

下圖中,星号代表資料,原點代表資料在機關向量u上的投影(|x||u|cosΘ)

從上圖可以看到,投影得到的資料仍然有很大的方差,而且投影點離原點很遠。如果采取與上圖u垂直的方向,則可以得到下圖:

這裡得到的投影方差比較小,而且離原點也更近。

上述u的方向隻是感性的選擇出來的,為了将選擇u的步驟正式确定下來,可以假定在給定機關向量u和資料點x的情況下,投影的長度是xTu。舉個例子,如果x(i)是資料集中的一個點(上圖中的一個星号),那它在u上的投影xTu就是圓點到原點的距離(是标量哦)。是以,為了最大化投影的方差,我們需要選擇一個機關向量u來最大化下式:

明顯,按照||u||2=1(確定u是機關向量)來最大化上式就是求的主特征向量。而其實是資料集的協方差矩陣。

做個總結,如果我們要找資料集分布的一維子空間(就是将m維的資料用一維資料來表示),我們要選擇協方差矩陣的主特征向量。推廣之,如果要找k維的子空間,那就應該選擇協方差矩陣的k個特征向量u1,u2,…,uk。ui(i=1,2,…,k)就是用來表征資料集的新坐标系。

為了在u1,u2,…,uk的基礎上表示x(i),我們隻需要計算

其中x(i)是屬于n維空間的向量,而y(i)給出了基于k維空間的表示。是以說,PCA是一個資料降維算法。u1,u2,…,uk稱為資料的k個主成分。

介紹到這裡,還需要注意一些為題:

1、為什麼u要選擇機關向量

選擇機關向量是為了統一表示資料,不選成機關的也可以,但各個向量長度必須統一,比如統一長度為2、3等等。

2、各個u要互相正交

如果u不正交,那麼在各個u上的投影将含有備援成分

2、為什麼要最大化投影的方差

舉個例子,如果在某個u上的投影方差為0,那這個u顯然無法表示原資料,降維就沒有意義了。

————————————————

版權聲明:本文為CSDN部落客「兔當機」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/smartempire/article/details/22938315