線性判別分析(LDA)的原理

前言

LDA在模式識別領域(比如人臉識別,艦艇識別等圖形圖像識別領域)中有非常廣泛的應用,因此我們有必要了解一下它的算法原理。除非特別聲明,本文中的LDA均指的是線性判別分析Linear Discriminant Analysis),它與自然語言處理領域中的LDA隱含狄利克雷分佈(Latent Dirichlet Allocation)是有本質上的區別的,後者是一種處理文檔的主題模型

一、LDA的思想

LDA是一種監督學習的降維技術,也就是說它的數據集的每個樣本是有類別輸出的。這點和PCA不同。PCA是不考慮樣本類別輸出的無監督降維技術。LDA的思想可以用一句話概括,就是“投影后類內方差最小,類間方差最大”。什麼意思呢? 我們要將數據在低維度空間上進行投影,投影后希望同種類別數據的投影點儘可能的接近,而不同類別的數據的類別中心之間的距離儘可能的大

這裏假設我們有兩類數據分別用紅色和藍色表示,如下圖所示,這些數據特徵是二維的,我們希望將這些數據投影到一維的一條直線上,讓同種類別數據的投影點儘可能的接近,而且讓紅色和藍色數據中心之間的距離儘可能的大:
1
上圖中提供了兩種投影方式,那麼哪一種能更好的滿足我們的標準呢?從直觀上可以看出,右圖要比左圖的投影效果好,因爲右圖的紅色數據和藍色數據各自較爲集中,且類別之間的距離明顯。左圖則在邊界處兩類數據比較混雜。以上就是LDA的主要思想了,當然在實際應用中,我們的數據一般是多個類別的,我們的原始數據一般也是超過二維的,投影后的數據也一般不是直線,而是一個低維的超平面。

在我們將上面直觀的內容轉化爲可以度量的問題之前,我們先了解些必要的數學基礎知識,這些在後面講解具體LDA原理時會用到。

二、瑞利商(Rayleigh Quotient)和廣義瑞利商(Generalized Rayleigh Quotient)

瑞利商是指這樣的函數 R(A,x)R(A,x)
R(A,x)=xHAxxHx R(A,x) = \frac{x^HAx}{x^Hx}
其中 xx 爲非零向量,而 AAn×nn×nHermiteHermite埃米爾特)矩陣。所謂的 HermiteHermite 矩陣就是滿足共軛轉置矩陣和自己相等的矩陣,即 AH=AA^H=A 。如果我們的矩陣 AA 是實矩陣,則滿足 AH=ATA^H=A^T 的矩陣即爲 HermiteHermite 矩陣。

瑞利商 R(A,x)R(A,x) 有一個非常重要的性質,即它的最大值等於矩陣 AA 最大的特徵值,而最小值等於矩陣 AA 的最小的特徵值,也就是滿足:
λminxHAxxHxλmax \lambda_{min} \leq \frac{x^HAx}{x^Hx} \leq \lambda_{max}
具體的證明大家可以參考這篇文章:瑞利商及其極值的計算
當向量 xx 是標準正交基時,即滿足 xHx=1x^Hx=1 時,瑞利商退化爲:R(A,x)=xHAxR(A,x)=x^HAx ,這個形式在譜聚類PCA中都有出現。

以上就是瑞利商的內容,現在我們再看看廣義瑞利商。廣義瑞利商是指這樣的函數 R(A,B,x)R(A,B,x)
R(A,B,x)=xHAxxHBx R(A, B, x) = \frac{x^HAx}{x^HBx}
其中 xx 爲非零向量,而 A,BA,Bn×nn×nHermiteHermite 矩陣。BB 爲正定矩陣。它的最大值和最小值是什麼呢?其實我們只要通過將其標準化就可以轉化爲瑞利商的格式。我們令 x=B1/2xx=B^{−1/2}x' ,則分母轉化爲:
xHBx=xH(B1/2)HBB1/2x=xHB1/2BB1/2x=xHx x^HBx = x'^H(B^{-1/2})^HBB^{-1/2}x' = x'^HB^{-1/2}BB^{-1/2}x' = x'^Hx'
而分子轉化爲:
xHAx=xHB1/2AB1/2x x^HAx = x'^HB^{-1/2}AB^{-1/2}x'
此時我們的 R(A,B,x)R(A,B,x) 轉化爲 R(A,B,x)R(A,B,x′)
R(A,B,x)=xHB1/2AB1/2xxHx R(A,B,x') = \frac{x'^HB^{-1/2}AB^{-1/2}x'}{x'^Hx'}
利用前面的瑞利商的性質,我們可以很快的知道,R(A,B,x)R(A,B,x') 的最大值爲矩陣 B1/2AB1/2B^{−1/2}AB^{−1/2} 的最大特徵值,或者說矩陣 B1AB^{−1}A 的最大特徵值,而最小值爲矩陣 B1AB^{−1}A 的最小特徵值。這裏使用了一些技巧,即對矩陣進行標準化 AijBiBj\frac{A_{ij}}{\sqrt{B_i \cdot B_j}}

三、二類LDA的原理

現在我們回到LDA的原理上,我們在第一小節介紹到了LDA希望投影后同種類別數據的投影點儘可能的接近,而不同類別的數據的類別中心之間的距離儘可能的大,但這只是一個感官的度量。現在我們首先從比較簡單的二類LDA入手,嚴謹的分析LDA的原理。

假設我們的數據集 D={(x1,y1),(x2,y2),...,((xm,ym))}D=\{(x_1, y_1),(x_2, y_2), ... , ((x_m,y_m))\} ,其中任意樣本 xix_inn 維向量,yi{0,1}y_i∈\{0,1\} 。我們定義 Nj(j=0,1)N_j(j=0,1) 爲第 jj 類樣本的個數,Xj(j=0,1)X_j(j=0,1) 爲第 jj 類樣本的集合,而 μj(j=0,1)μ_j(j=0,1) 爲第 jj 類樣本的均值向量,定義 Σj(j=0,1)\Sigma_j(j=0,1) 爲第 jj 類樣本的協方差矩陣(嚴格說是缺少分母部分的協方差矩陣)。

μj\mu_j 的表達式爲:
μj=1NjxXjx(j=0,1) \mu_j = \frac{1}{N_j} \sum_{x \in X_j} x \quad (j = 0, 1)
Σj\Sigma_j 的表達式爲:
Σj=xXj(xμj)(xμj)T(j=0,1) \Sigma_j = \sum_{x \in X_j} (x - \mu_j)(x - \mu_j)^T \quad (j = 0, 1)
由於是兩類數據,因此我們只需要將數據投影到一條直線上即可。假設我們的投影直線是向量 ww ,則對任意一個樣本 xix_i,它在直線 ww 的投影爲 wTxiw^Tx_i,對於我們的兩個類別的中心點 μ0,μ1μ_0, μ_1 ,在直線 ww 上的投影爲 wTμ0w^Tμ_0wTμ1w^Tμ_1 。由於LDA需要讓不同類別的數據的類別中心之間的距離儘可能的大,也就是我們要最大化 wTμ0wTμ122||w^Tμ_0−w^Tμ_1||_2^2 ,同時我們希望同種類別數據的投影點儘可能的接近,也就是要讓同類樣本投影點的協方差 wTΣ0ww^T\Sigma_0wwTΣ1ww^T\Sigma_1w 儘可能的小,即最小化 wTΣ0w+wTΣ1ww^T\Sigma_0w + w^T\Sigma_1w 。綜上所述,我們的優化目標爲:
argmaxw  J(w)=wTμ0wTμ122wTΣ0w+wTΣ1w=wT(μ0μ1)(μ0μ1)TwwT(Σ0+Σ1)w \underbrace{\arg \max}_w \; J(w) = \frac{||w^Tμ_0−w^Tμ_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}
我們一般定義類內散度矩陣 SwS_w 爲:
Sw=Σ0+Σ1=xX0(xμ0)(xμ0)T+xX1(xμ1)(xμ1)T S_w = \Sigma_0 + \Sigma_1 = \sum_{x \in X_0}(x - \mu_0)(x - \mu_0)^T + \sum_{x \in X_1}(x - \mu_1)(x - \mu_1)^T
同時定義類間散度矩陣 SbS_b爲:
Sb=(μ0μ1)(μ0μ1)T S_b = (\mu_0 - \mu_1)(\mu_0 - \mu_1)^T
這樣我們的優化目標重寫爲:
argmaxw  J(w)=wTSbwwTSww \underbrace{\arg \max}_w \; J(w) = \frac{w^TS_bw}{w^TS_ww}
仔細觀察上式,這不就是我們的廣義瑞利商嘛!那麼這就簡單了,利用我們第二小節講到的廣義瑞利商的性質,我們知道我們的 J(w)J(w') 最大值爲矩陣 Sw1/2SbSw1/2S^{−1/2}_wS_bS^{−1/2}_w 的最大特徵值,而對應的 ww' 其實爲 Sw1/2SbSw1/2S^{−1/2}_wS_bS^{−1/2}_w 的最大特徵值對應的特徵向量!而 Sw1SbS^{−1}_wS_b 的特徵值和 Sw1/2SbSw1/2S^{−1/2}_wS_bS^{−1/2}_w 的特徵值相同, Sw1SbS^{−1}_wS_b 的特徵向量 wwSw1/2SbSw1/2S^{−1/2}_wS_bS^{−1/2}_w 的特徵向量 ww' 滿足 w=Sw1/2ww = S^{−1/2}_ww' 的關係!

注意到對於二類的時候,SbwS_bw 的方向恆爲 μ0μ1μ_0 − μ_1 ,因爲:
Sbw=(μ0μ1)(μ0μ1)Tw S_bw = (\mu_0 - \mu_1)(\mu_0 - \mu_1)^T w
Sbw=(μ0μ1)(wT(μ0μ1))T=(μ0μ1)(wTμ0wTμ1)T \Leftrightarrow S_bw = (\mu_0 - \mu_1)(w^T(\mu_0 - \mu_1))^T = (\mu_0 - \mu_1)(w^T\mu_0 - w^T\mu_1)^T
我們在之前注意到了 wTμ0wTμ1w^T\mu_0 - w^T\mu_1 其實是一個標量,即上式可以表示爲:
Sbw=C(μ0μ1)其中C是一個常數 S_bw = C(\mu_0 - \mu_1) \quad \text{其中C是一個常數}
不妨令 Sbw=λ(μ0μ1)S_bw = \lambda (μ_0 − μ_1) ,將其帶入:(Sw1Sb)w=λw(S^{−1}_wS_b)w=\lambda w ,可以得到 w=Sw1(μ0μ1)w=S^{−1}_w(μ_0−μ_1) , 也就是說我們只要求出原始二類樣本的均值和方差就可以確定最佳的投影方向 ww

四、多類LDA原理

有了二類LDA的基礎,我們再來看看多類別LDA的原理。

假設我們的數據集 D={(x1,y1),(x2,y2),...,((xm,ym))}D=\{(x_1, y_1), (x_2, y_2), ..., ((x_m, y_m))\},其中任意樣本 xix_inn 維向量,yi{C1,C2,...,Ck}y_i \in \{C_1, C_2, ..., C_k\} 。我們定義 Nj(j=1,2,...,k)N_j(j=1, 2, ..., k) 爲第j類樣本的個數,Xj(j=1,2,...,k)X_j(j=1, 2, ..., k) 爲第 jj 類樣本的集合,而 μj(j=1,2,...,k)\mu_j(j=1, 2, ..., k) 爲第 jj 類樣本的均值向量,定義 Σj(j=1,2,...,k)\Sigma_j(j=1, 2, ..., k) 爲第 jj 類樣本的協方差矩陣。在二類LDA裏面定義的公式我們可以類推到多類LDA

由於我們是多類向低維空間投影,則此時投影到的低維空間就不是一條直線了,而是一個超平面。假設我們投影到的低維空間的維度爲 dd ,對應的基向量爲 (w1,w2,...,wd)(w_1, w_2, ..., w_d) ,基向量組成的矩陣爲 WW , 它是一個 n×dn×d 的矩陣。

此時我們的優化目標可以變成爲:
J(W)=WTSbWWTSwW J(W) = \frac{W^TS_bW}{W^TS_wW}
其中 Sb=j=1kNj(μjμ)(μjμ)TS_b = \sum_{j=1}^k N_j (\mu_j - \mu)(\mu_j - \mu)^Tμ\mu爲所有樣本的均值向量, Sw=j=1kSwj=j=1kxXj(xμj)(xμj)TS_w = \sum_{j=1}^k S_{wj} = \sum_{j=1}^k \sum_{x \in X_j} (x - \mu_j)(x - \mu_j)^T
但是這裏有一個問題,就是 WTSbWW^TS_bWWTSwWW^TS_wW 都是矩陣,不是標量,我們無法把它作爲一個標量函數來優化!也就是說,我們無法直接用二類LDA的優化方法,怎麼辦呢?一般來說,我們可以用其他的一些優化目標來進行替換。

常見的一個LDA多類優化目標函數定義爲:
argmaxW  J(W)=diagWTSbWdiagWTSwW \underbrace{\arg \max}_W \; J(W) = \frac{\prod_{diag} W^TS_bW}{\prod_{diag} W^TS_wW}
其中 diagA\prod_{diag} AAA 的主對角線元素的乘積,WWn×dn \times d 的矩陣。
J(W)J(W) 的優化過程可以轉化爲:
J(W)=i=1dWiTSbWii=1dWiTSwWi=i=1dWiTSbWiWiTSwWi J(W) = \frac{\prod_{i=1}^d W_i^TS_bW_i}{\prod_{i=1}^d W_i^TS_wW_i} = \prod_{i=1}^d \frac{W_i^TS_bW_i}{W_i^TS_wW_i}
仔細觀察上式最右邊的等式,這不就是廣義瑞利商嘛!最大值是矩陣 Sw1SbS^{−1}_wS_b 的最大特徵值,最大的 dd 個這樣的廣義瑞利商的值的乘積就是矩陣 Sw1SbS^{−1}_wS_b 的最大的 dd 個特徵值的乘積,此時對應的矩陣 WW 爲這最大的 dd 個特徵值對應的特徵向量張成的矩陣。

由於 WW 是一個利用了樣本的類別得到的投影矩陣,因此它降維能降到的維度 dd 的最大值爲 k1k-1 。爲什麼最大維度不是類別數 kk 呢?因爲 SbS_b 中每個 (μjμ)(μjμ)T(\mu_j − \mu)(\mu_j - \mu)^T 的秩爲 11 ,因此協方差矩陣相加後最大的秩爲 kk ( Rank(A+B)Rank(A)+Rank(B)Rank(A + B) \leq Rank(A) + Rank(B) ),但是由於如果我們知道前 k1k-1μj\mu_j 後,最後一個 μk\mu_k 可以由前 k1k-1μj\mu_j 線性表示(因爲這裏我們給定樣本之後,所有樣本的均值 μ\mu 是已知的),因此 SbS_b 的秩最大爲 k1k-1 ,即特徵向量最多有 k1k-1 個。

五、LDA算法實現的流程

在第三小節和第四小節我們給大家介紹了LDA的原理,現在我們對LDA降維的流程做一個總結。

輸入:數據集 D={(x1,y1),(x2,y2),...,((xm,ym))}D=\{(x_1, y_1), (x_2, y_2), ..., ((x_m, y_m))\},其中任意樣本 xix_inn 維向量,yi{C1,C2,...,Ck}y_i \in \{C_1, C_2, ..., C_k\} ,降維到的維度 dd

輸出:降維後的樣本集DD'

  • ① 計算類內散度矩陣 SwS_w

  • ② 計算類間散度矩陣 SbS_b

  • ③ 計算矩陣 Sw1SbS^{−1}_wS_b

  • ④ 計算 Sw1SbS^{−1}_wS_b 的最大的 dd 個特徵值和對應的 dd 個特徵向量 (w1,w2,...,wd)(w_1, w_2, ..., w_d) ,得到投影矩陣 WW

  • ⑤ 對樣本集中的每一個樣本特徵 xix_i ,轉化成爲新的樣本 zi=WTxiz_i=W^Tx_i

  • ⑥ 得到輸出樣本集 D={(z1,y1),(z2,y2),...,((zm,ym))}D′=\{(z_1, y_1), (z_2, y_2), ..., ((z_m, y_m))\}

以上就是使用LDA進行降維的算法流程。實際上LDA除了可以用於降維以外,還可以用於分類。一個常見的LDA分類基本思想是假設各個類別的樣本數據符合高斯分佈,這樣利用LDA進行投影后,可以利用極大似然估計計算各個類別投影數據的均值和方差,進而得到該類別高斯分佈的概率密度函數。當一個新的樣本到來後,我們可以將它投影,然後將投影后的樣本特徵分別帶入各個類別的高斯分佈概率密度函數,計算它屬於這個類別的概率,最大的概率對應的類別即爲該樣本的預測類別。

六、LDA與PCA之間的異同

LDA用於降維,和PCA有很多相同,也有很多不同的地方,因此值得我們好好的比較一下兩者的異同點。

首先我們看看相同點:

  • ① 兩者均可以對數據進行降維。

  • ② 兩者在降維時均使用了矩陣特徵分解的思想。

  • ③ 兩者都假設數據符合高斯分佈。

不同點:

  • LDA是有監督的降維方法,而PCA是無監督的降維方法

  • LDA降維最多降到類別數k-1的維數,而PCA沒有這個限制。

  • LDA除了可以用於降維,還可以用於分類。

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

在某些數據分佈下LDAPCA的降維效果更優,如下圖所示:
2
當然,某些某些數據分佈下PCALDA的降維效果更優,如下圖所示:
3

七、總結

LDA算法既可以用來降維,又可以用來分類,但是目前來說,主要還是用於降維。在我們進行圖像識別圖像識別相關的數據分析時,LDA是一個有力的工具。下面總結下LDA算法的優缺點。

LDA算法的主要優點有:

  • ① 在降維過程中可以使用類別的先驗知識經驗,而像PCA這樣的無監督學習則無法使用類別先驗知識。

  • LDA在樣本分類信息依賴均值而不是方差的時候,優於PCA之類的降維算法。

LDA算法的主要缺點有:

  • LDA不適合對非高斯分佈樣本進行降維,PCA也有這個問題。

  • LDA降維最多降到類別數k-1的維數,如果我們降維的維度大於k-1,則不能使用LDA。當然目前有一些LDA的進化版算法可以繞過這個問題。

  • LDA在樣本分類信息依賴方差而不是均值的時候,降維效果不是很好。

  • LDA可能過度擬合數據。

八、參考文獻

線性判別分析LDA原理總結 - 劉建平
線性代數之矩陣的屬性和運算

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