詳細解說LDA線性判別分析方法

轉載原文網址:LDA 線性判別分析

LDA, Linear Discriminant Analysis,線性判別分析。注意與LDA(Latent Dirichlet Allocation,主題生成模型)的區別。

1、引入

  上文介紹的PCA方法對提取樣本數據的主要變化信息非常有效,而忽略了次要變化的信息。在有些情況下,次要信息可能正是把不同類別區分開來的分佈方向。簡單來說,PCA方法尋找的是數據變化的主軸方向,而判別分析尋找的是用來有效分類的方向。二者側重點不同。在圖1.1可以看出變化最大的方向不一定能最好的區分不同類別。

圖1.1 用PCA和LDA對數據進行投影

2、LDA算法分析

  LDA算法主要用來對樣本進行分類,其分類的核心思想是:將高維樣本數據投影到最佳分類的向量空間,保證在新的子空間中,有更大的類間距離和更小的類內距離。

  設樣本數據爲:,將原始樣本經過w變換後變成了z,其中,變換規則爲:

  變換的目的在於使得同一類的樣本被w作用後距離更近,不同類的樣本被w作用後距離更遠。爲了能更好的度量類內距離和類間距離,我們先定義中心點,即均值,設Xi爲類別ci的樣本數據的集合,則Xi的中心點爲:

  Ni爲類別ci的樣本數,即Xi的數目。

  此中心點經過w變換後得到的中心點爲:

  即樣本集Xi的中心點的投影爲Xi中各元素投影后的均值。

  現在,我們需要使得投影之後同類之間樣本距離更小,而不同類之間的樣本距離越大。爲此,我們通過定義類間距離和類內距離:

 

1)類內距離。

  類內距離主要用各樣本點到該樣本點所在類別的中心點的距離和來表示。我們使用散列度來表示一個類別的類內距離。對於投影之後類別爲i的類內散列度(scatter,類似方差)爲:

  其中Zi表示類別爲i的所有樣本集合。將上式進行變換得:

  爲了使得表達式簡介,令:

  所以有:

  上式只是一個類別的散列度,若將所有類別的散列度相加,便得到整個樣本的類內離散度:

  將上式進行整理:

  令:

  所以:

  其中,Sw被稱爲類內散度矩陣。

 

2)類間距離。

類間距離主要通過兩個類之間的中心點距離來衡量。但是當類別很多時如何計算類間距離呢?下面分別進行分析。

A)只有兩個類別時。假設兩個類別樣本數據分別爲z1,z2,此時,類間離散度爲:

其中,

將上式整理成只包含x的式子:

令:

於是:

其中,SB被稱爲類間散度矩陣。

B)有多個類別時。根據只有兩個類別的情況,我們很容易可以得到類間離散度爲:

此時共有c(c-1)/2項的求和,時間複雜度爲O(c2)。

通過上式,我們可以求得相應的類間散度矩陣爲:

可能是這種方法複雜度太高,故而LDA並沒有使用這種方法來計算多類別的類間離散度,而是採用了一種比較間接的方式。首先定義X的整體散度矩陣,

樣本集的整體散度爲類間散度和類內散度之和:

於是類間散度可是使用下式來進行計算:

現在我們對上式進行推導:

爲了更加清楚的求解上式,我們將裏面的求和搬出來進行分析:

將上式代入上上式得:

同樣,最終得到類間散度爲:

SB:爲類間散度矩陣。

至此,我們已經得到了類內散度JW和類間散度JB,現在可以使用這兩個散度來構造目標函數J(w):

  現在,我們需要求得目標函數最大時的w,因爲這時通過w映射後的樣本數據具有最佳的類間距離和類內距離。從目標函數可以看出。當w成倍的放大或縮小時,目標函數保持不變,因而我們通過目標函數最大隻能得到w的方向。爲了使得計算簡單,我們假設分母的值爲1,即:

首先,上式的計算結果是一個數,而不是一個向量或矩陣,於是我們可以設爲:

即:

於是有:

因爲我們最終求得的w的大小是可以隨意的,只是方向是確定的,因此,我們將上面的分母設爲1是合理的。

這時我們將原問題轉化成了有約束的最優化問題:

看到此問題毫不猶豫的想起了用了無數次的拉格朗日定理,於是,我們使用拉格朗日乘子得:

對w求導:

令導數爲零:

  上式中的Sw若可逆則可以直接移到等式左邊,但是當樣本維數較高,而樣本數較少時,這時的Sw可能爲奇異矩陣。此時可以考慮先使用PCA對樣本進行降維,然後再對降維後的數據使用LDA。

在此,先假設Sw是可逆的,則有:

  這就是傳說中的Fisher Linear Discriminantion公式。其實FLD和LDA在很多情況下可以互換。

  現在,我們可以看出w爲上面式子的特徵向量,而我們需要的w爲特徵值最大時所對應的特徵向量。特徵值最大,意味着在對應的特徵向量上的變化最大。

  上式的不一定是對稱矩陣,在求它的特徵向量時不能使用奇異值分解,這樣就只能使用普通的求特徵向量的方式,普通的方式時間複雜度爲O(n3),

  於是我們對上式中的SBw進行分析得到:

  於是:

  至此,我們已經得到了樣本的最佳映射w,w=(w1,w2,…,wd’),當我們將樣本集x使用w進行映射後得到了具有最佳分類效果的樣本z。

 

3、LDA分類

  那麼在最佳的分類空間如何對樣本進行分類?

  1)對二分類問題。由於只有兩個類別,在經過上面的求解後,最後所有樣本將會映射到一維空間中,設兩個不同樣本映射後的中心點分別爲,我們將兩個類別的中心點之間中心點作爲分類點。

  最後,我們將的x分爲一類,其他的分爲另一類。

  2)對多分類問題。通過LDA方法最終將原始數據映射到c-1個維度上,現在我們需要在這c-1個維度上將樣本集分成c類。這個怎麼分呢?本人暫時也不知道,能想到的只是將問題轉化爲二分類問題。實際上,對於多類的情況主要考慮用來降維。

  對於此類問題,我們主要將它轉化爲二分類來處理,我們使用一對其餘的方法。簡單來說就是先將所有c類樣本分成1和2~c,然後再將2~c分爲2和3~c,以此類推,直到完全分開。

 

3、維度分析和總結

         上面我們將原樣本的維度從d維降到了d’(此時使用d’來表示,d’<d)。那麼d’到底最大是多少呢?因爲特徵向量是通過而求出,所以特徵向量的維數d’不會大於的秩。而SB的秩

  而:

  存在線性組合使得:

  所以有:

  因此:

  所以通過LDA算法進行映射的最終空間維度不會超過c-1個維度。當只有兩個類別時,那麼就只能將其投影到一維的空間中進行分類。

  在我們進行多分類時,並不是真的直接在c-1個維度上將樣本分成c類,而是拆分成二分類的情況來進行分類。而我們千辛萬苦推導出來的多分類的情形主要用來降維。

  另外,本人認爲應該可以在c-1個維度上對c個類別的樣本進行劃分,只是本人尚未發現好的方法!

  在實際應用中,LDA算法表現出來的效果相比其他方法並不十分理想(一般情況下)。並且還可能會出現過擬合的情況。但是LDA算法的這種數學思想非常值得學習研究!

 

參考文獻:

[1] Richard O. Duda, 模式分類

[2] peghoty, http://blog.csdn.net/itplus/article/details/12038357

      http://blog.csdn.net/itplus/article/details/12038441

[3] http://www.cnblogs.com/cfantaisie/archive/2011/03/25/1995849.html

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