1. 程式人生 > >線性判別分析(Linear Discriminant Analysis)

線性判別分析(Linear Discriminant Analysis)

線性判別式分析(Linear Discriminant Analysis, LDA),也叫做Fisher線性判別(Fisher Linear Discriminant ,FLD),是模式識別的經典演算法,它是在1996年由Belhumeur引入模式識別和人工智慧領域的。性鑑別分析的基本思想是將高維的模式樣本投影到最佳鑑別向量空間,以達到抽取分類資訊和壓縮特徵空間維數的效果,投影后保證模式樣本在新的子空間有最大的類間距離和最小的類內距離,即模式在該空間中有最佳的可分離性。因此,它是一種有效的特徵抽取方法。使用這種方法能夠使投影后模式樣本的類間散佈矩陣最大,並且同時類內散佈矩陣最小。就是說,它能夠保證投影后模式樣本在新的空間中有最小的類內距離和最大的類間距離,即模式在該空間中有最佳的可分離性,一般都來用來和 PCA做對比,後面我們會討論到PCA。

1. 問題

     PCA、ICA也好,對樣本資料來言,可以是沒有類別標籤y的。回想我們做迴歸時,如果特徵太多,那麼會產生不相關特徵引入、過度擬合等問題。我們可以使用PCA來降維,但PCA沒有將類別標籤考慮進去,屬於無監督的。

     PCA,也許可以將這兩個特徵合併為一個,降了維度。但假設我們的類別標籤y是判斷這篇文章的topic是不是有關學習方面的。那麼這兩個特徵對y幾乎沒什麼影響,完全可以去除。

     再舉一個例子,假設我們對一張100*100畫素的圖片做人臉識別,每個畫素是一個特徵,那麼會有10000個特徵,而對應的類別標籤y僅僅是0/1值,1代表是人臉。這麼多特徵不僅訓練複雜,而且不必要特徵對結果會帶來不可預知的影響,但我們想得到降維後的一些最佳特徵(與y關係最密切的),怎麼辦呢?

2. 線性判別分析(二類情況)

     回顧我們之前的logistic迴歸方法,給定m個n維特徵的訓練樣例clip_image002(i從1到m),每個clip_image004對應一個類標籤clip_image006。我們就是要學習出引數clip_image008,使得clip_image010(g是sigmoid函式)。      

     現在只考慮二值分類情況,也就是y=1或者y=0。

     為了方便表示,我們先換符號重新定義問題,給定特徵為d維的N個樣例,clip_image012,其中有clip_image014個樣例屬於類別clip_image016,另外clip_image018個樣例屬於類別clip_image020

     現在我們覺得原始特徵數太多,想將d維特徵降到只有一維,而又要保證類別能夠“清晰”地反映在低維資料上,也就是這一維就能決定每個樣例的類別。

     我們將這個最佳的向量稱為w(d維),那麼樣例x(d維)到w上的投影可以用下式來計算

     clip_image022

     這裡得到的y值不是0/1值,而是x投影到直線上的點到原點的距離。

     當x是二維的,我們就是要找一條直線(方向為w)來做投影,然後尋找最能使樣本點分離的直線。如下圖:

     clip_image024

     從直觀上來看,右圖比較好,可以很好地將不同類別的樣本點分離。

     接下來我們從定量的角度來找到這個最佳的w。

     首先我們尋找每類樣例的均值(中心點),這裡i只有兩個

     clip_image026

     由於x到w投影后的樣本點均值為

     clip_image028

     由此可知,投影后的的均值也就是樣本中心點的投影。

     什麼是最佳的直線(w)呢?我們首先發現,能夠使投影后的兩類樣本中心點儘量分離的直線是好的直線,定量表示就是:

     clip_image030

     J(w)越大越好。

     但是隻考慮J(w)行不行呢?不行,看下圖

     clip_image031

     樣本點均勻分佈在橢圓裡,投影到橫軸x1上時能夠獲得更大的中心點間距J(w),但是由於有重疊,x1不能分離樣本點。投影到縱軸x2上,雖然J(w)較小,但是能夠分離樣本點。因此我們還需要考慮樣本點之間的方差,方差越大,樣本點越難以分離。

     我們使用另外一個度量值,稱作雜湊值(scatter),對投影后的類求雜湊值,如下

     clip_image033

     從公式中可以看出,只是少除以樣本數量的方差值,雜湊值的幾何意義是樣本點的密集程度,值越大,越分散,反之,越集中。

     而我們想要的投影后的樣本點的樣子是:不同類別的樣本點越分開越好,同類的越聚集越好,也就是均值差越大越好,雜湊值越小越好。正好,我們可以使用J(w)和S來度量,最終的度量公式是

     clip_image035

     接下來的事就比較明顯了,我們只需尋找使J(w)最大的w即可。

     先把雜湊值公式展開

     clip_image037

     我們定義上式中中間那部分

     clip_image039

     這個公式的樣子不就是少除以樣例數的協方差矩陣麼,稱為雜湊矩陣(scatter matrices)

     我們繼續定義

     clip_image041

     clip_image043稱為Within-class scatter matrix。

     那麼回到上面clip_image045的公式,使用clip_image047替換中間部分,得

     clip_image049

     clip_image051

     然後,我們展開分子

     clip_image052

     clip_image054稱為Between-class scatter,是兩個向量的外積,雖然是個矩陣,但秩為1。

     那麼J(w)最終可以表示為

     clip_image056

     在我們求導之前,需要對分母進行歸一化,因為不做歸一的話,w擴大任何倍,都成立,我們就無法確定w。因此我們打算令clip_image058,那麼加入拉格朗日乘子後,求導

     clip_image059

     其中用到了矩陣微積分,求導時可以簡單地把clip_image061當做clip_image063看待。

     如果clip_image043[1]可逆,那麼將求導後的結果兩邊都乘以clip_image065,得

     clip_image066

     這個可喜的結果就是w就是矩陣clip_image068的特徵向量了。

     這個公式稱為Fisher linear discrimination。

     等等,讓我們再觀察一下,發現前面clip_image070的公式

     clip_image072

     那麼

     clip_image074

     代入最後的特徵值公式得

     clip_image076

     由於對w擴大縮小任何倍不影響結果,因此可以約去兩邊的未知常數clip_image078clip_image080,得到

     clip_image082

     至此,我們只需要求出原始樣本的均值和方差就可以求出最佳的方向w,這就是Fisher於1936年提出的線性判別分析。

     看上面二維樣本的投影結果圖:

     clip_image083

3. 線性判別分析(多類情況)

     前面是針對只有兩個類的情況,假設類別變成多個了,那麼要怎麼改變,才能保證投影后類別能夠分離呢?

我們之前討論的是如何將d維降到一維,現在類別多了,一維可能已經不能滿足要求。假設我們有C個類別,需要K維向量(或者叫做基向量)來做投影。

     將這K維向量表示為clip_image085

     我們將樣本點在這K維向量投影后結果表示為clip_image087,有以下公式成立

     clip_image089

     clip_image091

     為了像上節一樣度量J(w),我們打算仍然從類間雜湊度和類內雜湊度來考慮。

     當樣本是二維時,我們從幾何意義上考慮:

     clip_image092

     其中clip_image094clip_image043[2]與上節的意義一樣,clip_image096是類別1裡的樣本點相對於該類中心點clip_image098的雜湊程度。clip_image100變成類別1中心點相對於樣本中心點clip_image102的協方差矩陣,即類1相對於clip_image102[1]的雜湊程度。

     clip_image043[3]

     clip_image104

     clip_image106的計算公式不變,仍然類似於類內部樣本點的協方差矩陣

     clip_image108

     clip_image054[1]需要變,原來度量的是兩個均值點的雜湊情況,現在度量的是每類均值點相對於樣本中心的雜湊情況。類似於將clip_image094[1]看作樣本點,clip_image102[2]是均值的協方差矩陣,如果某類裡面的樣本點較多,那麼其權重稍大,權重用Ni/N表示,但由於J(w)對倍數不敏感,因此使用Ni。

     clip_image110

     其中

     clip_image112

     clip_image102[3]是所有樣本的均值。

     上面討論的都是在投影前的公式變化,但真正的J(w)的分子分母都是在投影后計算的。下面我們看樣本點投影后的公式改變:

     這兩個是第i類樣本點在某基向量上投影后的均值計算公式。

     clip_image114

     clip_image116

     下面兩個是在某基向量上投影后的clip_image043[4]clip_image070[1]

     clip_image118

     clip_image120

     其實就是將clip_image102[4]換成了clip_image122

     綜合各個投影向量(w)上的clip_image124clip_image126,更新這兩個引數,得到

     clip_image128

     clip_image130

     W是基向量矩陣,clip_image124[1]是投影后的各個類內部的雜湊矩陣之和,clip_image126[1]是投影后各個類中心相對於全樣本中心投影的雜湊矩陣之和。

     回想我們上節的公式J(w),分子是兩類中心距,分母是每個類自己的雜湊度。現在投影方向是多維了(好幾條直線),分子需要做一些改變,我們不是求兩兩樣本中心距之和(這個對描述類別間的分散程度沒有用),而是求每類中心相對於全樣本中心的雜湊度之和。

     然而,最後的J(w)的形式是

     clip_image132

     由於我們得到的分子分母都是雜湊矩陣,要將矩陣變成實數,需要取行列式。又因為行列式的值實際上是矩陣特徵值的積,一個特徵值可以表示在該特徵向量上的發散程度。因此我們使用行列式來計算(此處我感覺有點牽強,道理不是那麼有說服力)。

     整個問題又迴歸為求J(w)的最大值了,我們固定分母為1,然後求導,得出最後結果(我翻查了很多講義和文章,沒有找到求導的過程)

     clip_image134

     與上節得出的結論一樣

     clip_image136

     最後還歸結到了求矩陣的特徵值上來了。首先求出clip_image138的特徵值,然後取前K個特徵向量組成W矩陣即可。

     注意:由於clip_image070[2]中的clip_image140 秩為1,因此clip_image070[3]的秩至多為C(矩陣的秩小於等於各個相加矩陣的秩的和)。由於知道了前C-1個clip_image094[2]後,最後一個clip_image142可以有前面的clip_image094[3]來線性表示,因此clip_image070[4]的秩至多為C-1。那麼K最大為C-1,即特徵向量最多有C-1個。特徵值大的對應的特徵向量分割效能最好。

     由於clip_image138[1]不一定是對稱陣,因此得到的K個特徵向量不一定正交,這也是與PCA不同的地方。

4,缺點和優點分析

將3維空間上的球體樣本點投影到二維上,W1相比W2能夠獲得更好的分離效果。

      clip_image002

      PCA與LDA的降維對比:

      clip_image004

      PCA選擇樣本點投影具有最大方差的方向,LDA選擇分類效能最好的方向。

      LDA既然叫做線性判別分析,應該具有一定的預測功能,比如新來一個樣例x,如何確定其類別?

      拿二值分來來說,我們可以將其投影到直線上,得到y,然後看看y是否在超過某個閾值y0,超過是某一類,否則是另一類。而怎麼尋找這個y0呢?

      看

      clip_image006

      根據中心極限定理,獨立同分布的隨機變數和符合高斯分佈,然後利用極大似然估計求

      clip_image008

      然後用決策理論裡的公式來尋找最佳的y0,詳情請參閱PRML。

      這是一種可行但比較繁瑣的選取方法,可以看第7節(一些問題)來得到簡單的答案。

5. 使用LDA的一些限制

      1、 LDA至多可生成C-1維子空間

      LDA降維後的維度區間在[1,C-1],與原始特徵數n無關,對於二值分類,最多投影到1維。

      2、 LDA不適合對非高斯分佈樣本進行降維。

      clip_image010

      上圖中紅色區域表示一類樣本,藍色區域表示另一類,由於是2類,所以最多投影到1維上。不管在直線上怎麼投影,都難使紅色點和藍色點內部凝聚,類間分離。

      3、 LDA在樣本分類資訊依賴方差而不是均值時,效果不好。

      clip_image011

      上圖中,樣本點依靠方差資訊進行分類,而不是均值資訊。LDA不能夠進行有效分類,因為LDA過度依靠均值資訊。

      4、 LDA可能過度擬合數據。

6. LDA的一些變種

1、 非引數LDA

      非引數LDA使用本地資訊和K臨近樣本點來計算clip_image013,使得clip_image013[1]是全秩的,這樣我們可以抽取多餘C-1個特徵向量。而且投影后分離效果更好。

2、 正交LDA

      先找到最佳的特徵向量,然後找與這個特徵向量正交且最大化fisher條件的向量。這種方法也能擺脫C-1的限制。

3、 一般化LDA

      引入了貝葉斯風險等理論

4、 核函式LDA

      將特徵clip_image015,使用核函式來計算。

7. 一些問題

      上面在多值分類中使用的

      clip_image017

      是帶權重的各類樣本中心到全樣本中心的雜湊矩陣。如果C=2(也就是二值分類時)套用這個公式,不能夠得出在二值分類中使用的clip_image013[2]

      clip_image019

      因此二值分類和多值分類時求得的clip_image013[3]會不同,而clip_image021意義是一致的。

      對於二值分類問題,令人驚奇的是最小二乘法和Fisher線性判別分析是一致的。

      下面我們證明這個結論,並且給出第4節提出的y0值得選取問題。

      回顧之前的線性迴歸,給定N個d維特徵的訓練樣例clip_image023(i從1到N),每個clip_image025對應一個類標籤clip_image027。我們之前令y=0表示一類,y=1表示另一類,現在我們為了證明最小二乘法和LDA的關係,我們需要做一些改變

      clip_image029

      就是將0/1做了值替換。

      我們列出最小二乘法公式

      clip_image031

      w和clip_image033是擬合權重引數。

      分別對clip_image033[1]和w求導得

      clip_image035

      clip_image037

      從第一個式子展開可以得到

      clip_image039

      消元后,得

      clip_image041

      clip_image043

      可以證明第二個式子展開後和下面的公式等價

      clip_image045

      其中clip_image047clip_image049與二值分類中的公式一樣。

      由於clip_image051

      因此,最後結果仍然是

      clip_image053

      這個過程從幾何意義上去理解也就是變形後的線性迴歸(將類標籤重新定義),線性迴歸後的直線方向就是二值分類中LDA求得的直線方向w。

      好了,我們從改變後的y的定義可以看出y>0屬於類clip_image055,y<0屬於類clip_image057。因此我們可以選取y0=0,即如果clip_image059,就是類clip_image055[1],否則是類clip_image057[1]

      寫了好多,挺雜的,還有個topic模型也叫做LDA,不過名字叫做Latent Dirichlet Allocation,第二作者就是Andrew Ng大牛,最後一個他導師Jordan泰斗了,什麼時候拜讀後再寫篇總結髮上來吧。