在主成分分析(PCA)原理總結中,咱們對降維算法PCA作了總結。這裏咱們就對另一種經典的降維方法線性判別分析(Linear Discriminant Analysis, 如下簡稱LDA)作一個總結。LDA在模式識別領域(好比人臉識別,艦艇識別等圖形圖像識別領域)中有很是普遍的應用,所以咱們有必要了解下它的算法原理。html
在學習LDA以前,有必要將其天然語言處理領域的LDA區別開來,在天然語言處理領域, LDA是隱含狄利克雷分佈(Latent Dirichlet Allocation,簡稱LDA),他是一種處理文檔的主題模型。咱們本文只討論線性判別分析,所以後面全部的LDA均指線性判別分析。算法
LDA是一種監督學習的降維技術,也就是說它的數據集的每一個樣本是有類別輸出的。這點和PCA不一樣。PCA是不考慮樣本類別輸出的無監督降維技術。LDA的思想能夠用一句話歸納,就是「投影后類內方差最小,類間方差最大」。什麼意思呢? 咱們要將數據在低維度上進行投影,投影后但願每一種類別數據的投影點儘量的接近,而不一樣類別的數據的類別中心之間的距離儘量的大。函數
可能仍是有點抽象,咱們先看看最簡單的狀況。假設咱們有兩類數據 分別爲紅色和藍色,以下圖所示,這些數據特徵是二維的,咱們但願將這些數據投影到一維的一條直線,讓每一種類別數據的投影點儘量的接近,而紅色和藍色數據中心之間的距離儘量的大。工具
上圖中國提供了兩種投影方式,哪種能更好的知足咱們的標準呢?從直觀上能夠看出,右圖要比左圖的投影效果好,由於右圖的黑色數據和藍色數據各個較爲集中,且類別之間的距離明顯。左圖則在邊界處數據混雜。以上就是LDA的主要思想了,固然在實際應用中,咱們的數據是多個類別的,咱們的原始數據通常也是超過二維的,投影后的也通常不是直線,而是一個低維的超平面。post
在咱們將上面直觀的內容轉化爲能夠度量的問題以前,咱們先了解些必要的數學基礎知識,這些在後面講解具體LDA原理時會用到。性能
咱們首先來看看瑞利商的定義。瑞利商是指這樣的函數$R(A,x)$: $$R(A,x) = \frac{x^HAx}{x^Hx}$$學習
其中$x$爲非零向量,而$A$爲$n \times n$的Hermitan矩陣。所謂的Hermitan矩陣就是知足共軛轉置矩陣和本身相等的矩陣,即$A^H=A$。若是咱們的矩陣A是實矩陣,則知足$A^T=A$的矩陣即爲Hermitan矩陣。優化
瑞利商$R(A,x)$有一個很是重要的性質,即它的最大值等於矩陣$A$最大的特徵值,而最小值等於矩陣$A$的最小的特徵值,也就是知足$$\lambda_{min} \leq \frac{x^HAx}{x^Hx} \leq \lambda_{max}$$spa
具體的證實這裏就不給出了。當向量$x$是標準正交基時,即知足$x^Hx=1$時,瑞利商退化爲:$R(A,x) = x^HAx$,這個形式在譜聚類和PCA中都有出現。xml
以上就是瑞利商的內容,如今咱們再看看廣義瑞利商。廣義瑞利商是指這樣的函數$R(A,B,x)$: $$R(A,x) = \frac{x^HAx}{x^HBx}$$
其中$x$爲非零向量,而$A,B$爲$n \times n$的Hermitan矩陣。$B$爲正定矩陣。它的最大值和最小值是什麼呢?其實咱們只要經過將其經過標準化就能夠轉化爲瑞利商的格式。咱們令$x=B^{-1/2}x'$,則分母轉化爲:$$x^HBx = x'^H(B^{-1/2})^HBB^{-1/2}x' = x'^HB^{-1/2}BB^{-1/2}x' = x'^Hx'$$
而分子轉化爲:$$x^HAx = x'^HB^{-1/2}AB^{-1/2}x' $$
此時咱們的$R(A,B,x)$轉化爲$R(A,B,x')$:$$R(A,B,x') = \frac{x'^HB^{-1/2}AB^{-1/2}x'}{x'^Hx'}$$
利用前面的瑞利商的性質,咱們能夠很快的知道,$R(A,B,x')$的最大值爲矩陣$B^{-1/2}AB^{-1/2}$的最大特徵值,或者說矩陣$B^{-1}A$的最大特徵值,而最小值爲矩陣$B^{-1}A$的最小特徵值。若是你看過我寫的譜聚類(spectral clustering)原理總結第6.2節的話,就會發現這裏使用了同樣的技巧,即對矩陣進行標準化。
如今咱們回到LDA的原理上,咱們在第一節說講到了LDA但願投影后但願同一種類別數據的投影點儘量的接近,而不一樣類別的數據的類別中心之間的距離儘量的大,可是這只是一個感官的度量。如今咱們首先從比較簡單的二類LDA入手,嚴謹的分析LDA的原理。
假設咱們的數據集$D=\{(x_1,y_1), (x_2,y_2), ...,((x_m,y_m))\}$,其中任意樣本$x_i$爲n維向量,$y_i \in \{0,1\}$。咱們定義$N_j(j=0,1)$爲第j類樣本的個數,$X_j(j=0,1)$爲第j類樣本的集合,而$\mu_j(j=0,1)$爲第j類樣本的均值向量,定義$\Sigma_j(j=0,1)$爲第j類樣本的協方差矩陣(嚴格說是缺乏分母部分的協方差矩陣)。
$\mu_j$的表達式爲:$$\mu_j = \frac{1}{N_j}\sum\limits_{x \in X_j}x\;\;(j=0,1)$$
$\Sigma_j$的表達式爲:$$\Sigma_j = \sum\limits_{x \in X_j}(x-\mu_j)(x-\mu_j)^T\;\;(j=0,1)$$
因爲是兩類數據,所以咱們只須要將數據投影到一條直線上便可。假設咱們的投影直線是向量$w$,則對任意一個樣本本$x_i$,它在直線$w$的投影爲$w^Tx_i$,對於咱們的兩個類別的中心點$\mu_0,\mu_1$,在在直線$w$的投影爲$w^T\mu_0$和$w^T\mu_1$。因爲LDA須要讓不一樣類別的數據的類別中心之間的距離儘量的大,也就是咱們要最大化$||w^T\mu_0-w^T\mu_1||_2^2$,同時咱們但願同一種類別數據的投影點儘量的接近,也就是要同類樣本投影點的協方差$w^T\Sigma_0w$和$w^T\Sigma_1w$儘量的小,即最小化$w^T\Sigma_0w+w^T\Sigma_1w$。綜上所述,咱們的優化目標爲:$$\underbrace{arg\;max}_w\;\;J(w) = \frac{||w^T\mu_0-w^T\mu_1||_2^2}{w^T\Sigma_0w+w^T\Sigma_1w} = \frac{w^T(\mu_0-\mu_1)(\mu_0-\mu_1)^Tw}{w^T(\Sigma_0+\Sigma_1)w}$$
咱們通常定義類內散度矩陣$S_w$爲:$$S_w = \Sigma_0 + \Sigma_1 = \sum\limits_{x \in X_0}(x-\mu_0)(x-\mu_0)^T + \sum\limits_{x \in X_1}(x-\mu_1)(x-\mu_1)^T$$
同時定義類間散度矩陣$S_b$爲:$$S_b = (\mu_0-\mu_1)(\mu_0-\mu_1)^T$$
這樣咱們的優化目標重寫爲:$$\underbrace{arg\;max}_w\;\;J(w) = \frac{w^TS_bw}{w^TS_ww} $$
仔細一看上式,這不就是咱們的廣義瑞利商嘛!這就簡單了,利用咱們第二節講到的廣義瑞利商的性質,咱們知道咱們的$J(w')$最大值爲矩陣$S^{−\frac{1}{2}}_wS_bS^{−\frac{1}{2}}_w$的最大特徵值,而對應的$w'$爲$S^{−\frac{1}{2}}_wS_bS^{−\frac{1}{2}}_w$的最大特徵值對應的特徵向量! 而$S_w^{-1}S_b$的特徵值和$S^{−\frac{1}{2}}_wS_bS^{−\frac{1}{2}}_w$的特徵值相同,$S_w^{-1}S_b$的特徵向量$w$和$S^{−\frac{1}{2}}_wS_bS^{−\frac{1}{2}}_w$的特徵向量$w'$知足$w = S^{−\frac{1}{2}}_ww'$的關係!
注意到對於二類的時候,$S_bw$的方向恆平行於$\mu_0-\mu_1$,不妨令$S_bw=\lambda(\mu_0-\mu_1)$,將其帶入:$(S_w^{-1}S_b)w=\lambda w$,能夠獲得$w=S_w^{-1}(\mu_0-\mu_1)$, 也就是說咱們只要求出原始二類樣本的均值和方差就能夠肯定最佳的投影方向$w$了。
有了二類LDA的基礎,咱們再來看看多類別LDA的原理。
假設咱們的數據集$D=\{(x_1,y_1), (x_2,y_2), ...,((x_m,y_m))\}$,其中任意樣本$x_i$爲n維向量,$y_i \in \{C_1,C_2,...,C_k\}$。咱們定義$N_j(j=1,2...k)$爲第j類樣本的個數,$X_j(j=1,2...k)$爲第j類樣本的集合,而$\mu_j(j=1,2...k)$爲第j類樣本的均值向量,定義$\Sigma_j(j=1,2...k)$爲第j類樣本的協方差矩陣。在二類LDA裏面定義的公式能夠很容易的類推到多類LDA。
因爲咱們是多類向低維投影,則此時投影到的低維空間就不是一條直線,而是一個超平面了。假設咱們投影到的低維空間的維度爲d,對應的基向量爲$(w_1,w_2,...w_d)$,基向量組成的矩陣爲$W$, 它是一個$n \times d$的矩陣。
此時咱們的優化目標應該能夠變成爲:$$\frac{W^TS_bW}{W^TS_wW}$$
其中$S_b = \sum\limits_{j=1}^{k}N_j(\mu_j-\mu)(\mu_j-\mu)^T$,$\mu$爲全部樣本均值向量。$S_w = \sum\limits_{j=1}^{k}S_{wj} = \sum\limits_{j=1}^{k}\sum\limits_{x \in X_j}(x-\mu_j)(x-\mu_j)^T$
可是有一個問題,就是$W^TS_bW$和$W^TS_wW$都是矩陣,不是標量,沒法做爲一個標量函數來優化!也就是說,咱們沒法直接用二類LDA的優化方法,怎麼辦呢?通常來講,咱們能夠用其餘的一些替代優化目標來實現。
常見的一個LDA多類優化目標函數定義爲:$$\underbrace{arg\;max}_W\;\;J(W) = \frac{\prod\limits_{diag}W^TS_bW}{\prod\limits_{diag}W^TS_wW}$$
其中$\prod\limits_{diag}A$爲$A$的主對角線元素的乘積,$W$爲$n \times d$的矩陣。
$J(W)$的優化過程能夠轉化爲:$$J(W) = \frac{\prod\limits_{i=1}^dw_i^TS_bw_i}{\prod\limits_{i=1}^dw_i^TS_ww_i} = \prod\limits_{i=1}^d\frac{w_i^TS_bw_i}{w_i^TS_ww_i}$$
仔細觀察上式最右邊,這不就是廣義瑞利商嘛!最大值是矩陣$S^{−1}_wS_b$的最大特徵值,最大的d個值的乘積就是矩陣$S^{−1}_wS_b$的最大的d個特徵值的乘積,此時對應的矩陣$W$爲這最大的d個特徵值對應的特徵向量張成的矩陣。
因爲$W$是一個利用了樣本的類別獲得的投影矩陣,所以它的降維到的維度d最大值爲k-1。爲何最大維度不是類別數k呢?由於$S_b$中每一個$\mu_j-\mu$的秩爲1,所以協方差矩陣相加後最大的秩爲k(矩陣的秩小於等於各個相加矩陣的秩的和),可是因爲若是咱們知道前k-1個$\mu_j$後,最後一個$\mu_k$能夠由前k-1個$\mu_j$線性表示,所以$S_b$的秩最大爲k-1,即特徵向量最多有k-1個。
在第三節和第四節咱們講述了LDA的原理,如今咱們對LDA降維的流程作一個總結。
輸入:數據集$D=\{(x_1,y_1), (x_2,y_2), ...,((x_m,y_m))\}$,其中任意樣本$x_i$爲n維向量,$y_i \in \{C_1,C_2,...,C_k\}$,降維到的維度d。
輸出:降維後的樣本集$D′$
1) 計算類內散度矩陣$S_w$
2) 計算類間散度矩陣$S_b$
3) 計算矩陣$S_w^{-1}S_b$
4)計算$S_w^{-1}S_b$的最大的d個特徵值和對應的d個特徵向量$(w_1,w_2,...w_d)$,獲得投影矩陣W$W$
5) 對樣本集中的每個樣本特徵$x_i$,轉化爲新的樣本$z_i=W^Tx_i$
6) 獲得輸出樣本集$D'=\{(z_1,y_1), (z_2,y_2), ...,((z_m,y_m))\}$
以上就是使用LDA進行降維的算法流程。實際上LDA除了能夠用於降維之外,還能夠用於分類。一個常見的LDA分類基本思想是假設各個類別的樣本數據符合高斯分佈,這樣利用LDA進行投影后,能夠利用極大似然估計計算各個類別投影數據的均值和方差,進而獲得該類別高斯分佈的機率密度函數。當一個新的樣本到來後,咱們能夠將它投影,而後將投影后的樣本特徵分別帶入各個類別的高斯分佈機率密度函數,計算它屬於這個類別的機率,最大的機率對應的類別即爲預測類別。
因爲LDA應用於分類如今彷佛也不是那麼流行,至少咱們公司裏沒有用過,這裏我就很少講了。
LDA用於降維,和PCA有不少相同,也有不少不一樣的地方,所以值得好好的比較一下二者的降維異同點。
首先咱們看看相同點:
1)二者都可以對數據進行降維。
2)二者在降維時均使用了矩陣特徵分解的思想。
3)二者都假設數據符合高斯分佈。
咱們接着看看不一樣點:
1)LDA是有監督的降維方法,而PCA是無監督的降維方法
2)LDA降維最多降到類別數k-1的維數,而PCA沒有這個限制。
3)LDA除了能夠用於降維,還能夠用於分類。
4)LDA選擇分類性能最好的投影方向,而PCA選擇樣本點投影具備最大方差的方向。
這點能夠從下圖形象的看出,在某些數據分佈下LDA比PCA降維較優。
固然,某些某些數據分佈下PCA比LDA降維較優,以下圖所示:
LDA算法既能夠用來降維,又能夠用來分類,可是目前來講,主要仍是用於降維。在咱們進行圖像識別圖像識別相關的數據分析時,LDA是一個有力的工具。下面總結下LDA算法的優缺點。
LDA算法的主要優勢有:
1)在降維過程當中可使用類別的先驗知識經驗,而像PCA這樣的無監督學習則沒法使用類別先驗知識。
2)LDA在樣本分類信息依賴均值而不是方差的時候,比PCA之類的算法較優。
LDA算法的主要缺點有:
1)LDA不適合對非高斯分佈樣本進行降維,PCA也有這個問題。
2)LDA降維最多降到類別數k-1的維數,若是咱們降維的維度大於k-1,則不能使用LDA。固然目前有一些LDA的進化版算法能夠繞過這個問題。
3)LDA在樣本分類信息依賴方差而不是均值的時候,降維效果很差。
4)LDA可能過分擬合數據。
(歡迎轉載,轉載請註明出處。歡迎溝通交流: liujianping-ok@163.com)