LDA 線性判別分析
http://blog.csdn.net/porly/article/details/8020696
1. LDA是什麽
線性判別式分析(Linear Discriminant Analysis),簡稱為LDA。也稱為Fisher線性判別(Fisher Linear Discriminant,FLD),是模式識別的經典算法,在1996年由Belhumeur引入模式識別和人工智能領域。
基本思想是將高維的模式樣本投影到最佳鑒別矢量空間,以達到抽取分類信息和壓縮特征空間維數的效果,投影後保證模式樣本在新的子空間有最大的類間距離和最小的類內距離,即模式在該空間中有最佳的可分離性。
LDA與前面介紹過的PCA都是常用的降維技術。PCA主要是從特征的協方差角度,去找到比較好的投影方式
下面給出一個例子,說明LDA的目標。
可以看到兩個類別,一個綠色類別,一個紅色類別。左圖是兩個類別的原始數據,現在要求將數據從二維降維到一維。直接投影到x1軸或者x2軸,不同類別之間會有重復,導致分類效果下降。右圖映射到的直線就是用LDA方法計算得到的,可以看到,紅色類別和綠色類別在映射之後之間的距離是最大的,而且每個類別內部點的離散程度是最小的(或者說聚集程度是最大的)。
這裏還有一個LDA的例子:
下圖是一個LDA和PCA區別的例子:
兩個類別,class1的點都是圓圈,class2的點都是十字。圖中有兩條直線,斜率在1左右的這條直線是PCA選擇的映射直線,斜率在 -1左右的這條直線是LDA選擇的映射直線。其余不在這兩條直線上的點是原始數據點。可以看到由於LDA考慮了“類別”這個信息(即標註),映射後,可以很好的將class1和class2的點區分開。
2. LDA的一些說明
第一,降維後的維度是多少?
PCA降維是直接和數據維度相關的,比如原始數據是n維的,那麽PCA後,可以任意選取1維、2維,一直到n維都行(當然是對應特征值大的那些)。LDA 降維是直接和類別的個數相關的,與數據本身的維度沒關系,比如原始數據是n維的,一共有C個類別,那麽LDA降維之後,一般就是1維,2維到C-1維進行選擇(當然對應的特征值也是最大的一些),舉個例子,假設圖象分類,兩個類別正例反例,每個圖象10000維特征,那麽LDA之後,就只有1維特征,並且這維特征的分類能力最好。
PS:對於很多兩類分類的情況,LDA之後就剩下1維,找到分類效果最好的一個閾值貌似就可以了。
第二,投影的坐標系是否正交
PCA投影的坐標系都是正交的,而LDA根據類別的標註,關註分類能力,因此不保證投影到的坐標系是正交的(一般都不正交)。
3. LDA計算過程(兩個類別)
這一節,主要討論只有兩個類別的數據,LDA的計算。現在要找到一個向量w,將數據x投影到w上去之後,得到新的數據y。第一,為了實現投影後的兩個類別的距離較遠,用映射後兩個類別的均值差的絕對值來度量。第二,為了實現投影後,每個類內部數據點比較聚集,用投影後每個類別的方差來度量。
類別i的均值:
類別i投影後的均值(實際上等於mi的投影):
投影後均值差的絕對值:
投影後的方差(這裏的y是類別i中數據投影後的數據,即y=w_t * x):
目標優化函數為:
下面通過展開m‘和s‘,定義S_B和S_W:
優化目標J(w)改寫如下,這樣是為了方便推導出計算w的方法。
推導過程忽略了,最後推導結果如下:
假設數據是n維特征,m個數據,分類個數為2。那麽Sw實際上是每個類別的協方差矩陣之和,每個類別的協方差矩陣都是n*n的,因此Sw是n*n的,m1-m2是n*1的。計算得到的w是n*1的,即w將維特征映射為1維。
PS:這裏不用糾結與Sw的協方差矩陣形式,實際上這是拆拆開來w和w_t後的結果,實際上w*Sw*w_t後,仍舊是一個數值,即表示兩個類的投影後方差之和。
4. LDA計算過程(多個類別)
對於S_w,就是“兩個類別的協方差矩陣之和”變成了“多個類別的協方差矩陣之和”。
對於S_b,以前是“兩個類別的均值之差的絕對值”,現在多個類別了,怎麽計算呢?計算任意兩個類別之間的均值之差的絕對值之和?這樣對於N個類別,需要 C(N,2)次計算,這可能是一個方法,不過LDA使用的方法,計算每個類別的均值與所有類別均值的差異,並且對每個類別的數據量進行加權處理。下式中,m為所有類別的均值,m_i為類別i的均值,n_i為類別i的數據量。
對於n維特征、C個類別、m個樣本的數據,是將n維數據映射為C-1維。即所求的w是一個n*(c-1)的矩陣。S_w是一個n*n的矩陣(沒有除以樣本數的協方差矩陣之和),S_B是一個C*C的矩陣,實際上S_B矩陣的的秩最多是C-1,這是因為n_i*(m_i-m)這c向量實際上是線性相關的,因為他們的和是均值m的常數倍。這導致後面求解w,實際上是求出C-1個向量一個構成的一個w。
具體計算忽略。
下面就是一個三個類別的例子:
4. LDA其他變種
如果原始數據投影後,仍舊不能很好的分開,那麽Kernel LDA是一個解決方法。
LDA在計算量上與數據的維度有關,2DLDA能夠大大減小LDA計算量。
5. LDA的一些問題
第一,LDA最多投影出C-1維特征,如果需要更多特征,則要引入其他方法。
第二,LDA假設數據服從單峰高斯分布,比如下面的復雜數據結構。
5. 參考
Introduction to LDA
Linear Discriminant Analysis - A Brief Tutorial
http://www.aiaccess.net/English/Glossaries/GlosMod/e_gm_fisher_discriminant.htm
線性判別分析(Linear Discriminant Analysis, LDA)算法分析
LDA 線性判別分析