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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM