在討論LDA之前,有必要將其自然語言處理領域的LDA區別開來,在自然語言處理領域, LDA是隱含狄利克雷分佈(Latent Dirichlet Allocation,簡稱LDA),他是一種處理文件的主題模型。我們本文只討論線性判別分析,因此後面所有的LDA均指線性判別分析。

線性判別分析(Linear Discriminant Analysis,以下簡稱LDA)是一種經典的線性學習方法,常被用於分類和降維任務中。在PyProphet的演算法中被應用為綜合評分的元件之一,故有必要對LDA演算法進行總結,本篇只講述經典的LDA演算法。

LDA方法

LDA是模式識別的經典演算法,在1996年由Belhumeur引入模式識別和人工智慧領域。LDA的思想可以用一句話概括,就是“投影后類內方差最小,類間方差最大”。具體是什麼意思呢? 給定訓練樣本集,設法選取一條直線並將樣本投影到直線上,投影后希望每一種類別資料的投影點儘可能的接近,而不同類別的資料的類別中心之間的距離儘可能的大。在對新樣本進行分類時,將其投影到選取的直線上,根據投影點的位置來確定新的樣本所屬的類別。

可能還是有點抽象,我們先看看最簡單的情況。假設我們有兩類資料分別為紅色和藍色,如下圖所示,這些資料特徵是二維的,我們希望將這些資料投影到一維的一條直線,讓每一種類別資料的投影點儘可能的接近,而紅色和藍色資料中心之間的距離儘可能的大。

線性判別分析LDA-經典

上圖是紅藍資料在選取的兩條直線上的投影,哪一種能更好的滿足我們的標準呢?從直觀上可以看出,右圖要比左圖的投影效果好,因為右圖的紅色資料和藍色資料在投影方向上分佈較為集中,且類別之間的距離明顯。而左圖在邊界處沒有明顯的分界線。

以上就是LDA的主要思想了,當然在實際應用中,我們的資料是多個類別的,我們的原始資料一般也是超過二維的,投影后的也一般不是直線,而是一個低維的超平面。

LDA公式推導

給定資料集

D=\left\{(x_i,y_i)\right\}_{i=1}^m

, 設定:

1。

X_i

:第

i

類樣本的集合

2。

\mu_i

:第

i

類樣本的均值向量

3。

\sum_i

:第

i

類樣本的協方差矩陣

由此可以得到第

i

類樣本中心在直線上的投影為

{\omega ^T}{\mu _i}

,協方差為

{\omega ^T}{\sum _i} {\omega}

(對映後協方差之和)。以二分類為例,

要保證同一類儘量靠近,那麼

{\omega ^T}{\sum _0}\omega+{\omega ^T}{\sum _1}\omega

要儘可能的小

要保證不同類間相隔很遠,需要讓

\left\| {\left. {\omega^T \mu_0-\omega^T \mu_1 } \right\|} \right.^2_2

儘可能的大

因此LDA最終需要達到的目標就是最大化

J

J=\frac{\left\| {\left. {\omega^T \mu_0-\omega^T \mu_1 } \right\|} \right.^2_2}{{\omega ^T}{\sum _0}\omega+{\omega ^T}{\sum _1}\omega}=\frac{{\omega ^T}(\mu_0-\mu_1)(\mu_0-\mu_1)^T{\omega}}{{\omega ^T}({\sum _0}+{\sum _1})\omega}

我們定義“類內散度矩陣”

S_w

(within-class scatter matrix)和“類間散度矩陣”

S_b

(between-class scatter matrix)

S_w=\sum_0+\sum_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=(\mu_0-\mu_1)(\mu_0-\mu_1)^T

所以有,

J=\frac{\omega^TS_b\omega}{\omega^T S_w \omega}

LDA想要

J

最大化,而如何去確定

\omega

呢?上式的分子和分母都是關於

\omega

的二次項,因此解與的長度無關,只與其方向有關。(如果是一個解,那麼對於任意常數

\alpha

\alpha\omega

也是一個解。)

我們設

J

的分母等於1,最大化

J

等價於求

\omega

使得

-\omega^TS_b\omega

最小。

\mathop {\min }\limits_\omega -\omega^TS_b\omega

{\omega^T S_w \omega}=1

由拉格朗日乘子法(見附錄),滿足下式的

\omega

即為所求:

S_b\omega=\lambda S_w\omega

其中

\lambda

是拉格朗日乘子,由

S_b

的公式注意到

S_b\omega

的方向恆為

\mu_0-\mu_1

,我們讓

S_b\omega=\lambda(\mu_0-\mu_1)

帶入有,

\omega=S_w^{-1}(\mu_0-\mu_1)

\omega

即為LDA想要求得的直線的斜率(和截距無關)。

考慮到數值解的穩定性,在實踐中,我們通常是用奇異值分解來得到

S_w^{-1}

S_w=U\sum V^T \to S_w^{-1}=V\sum ^{-1}U^T

最後補充兩點

從貝葉斯決策理論的角度可以證明LDA在兩類資料同先驗、滿足高斯分佈且協方差相等時,LDA可達到最優分類。

LDA核心是投影,這樣往往實現了降維,因而LDA也常被視為一種經典的監督降維技術。

附錄:拉格朗日乘子法

拉格朗日乘子法(Lagrange multipliers)是一種尋找多元函式在一組約束下的極值的方法,透過引入拉格朗日乘子

\lambda

,可將有

d

個變數與

k

個約束條件的最最佳化問題轉化為具有

d+k

個變數的無約束最佳化問題求解。

以等式的最佳化問題為例,假定

x

d

維向量,我們想要尋找

x

的某個取值

x^*

,使目標函式

f(x)

最小,同時滿足約束

g(x)=0

。從幾何的角度來看,是要在

g(x)

確定的

d-1

維曲面上尋找使

f(x)

最小的點

x^*

,可得到以下結論:

* 對於約束曲面上的任意點

x

,該點的梯度

\nabla g(x)

正交於約束曲面

* 在最優點

x^*

,目標函式在該點的梯度

\nabla f(x^*)

正交於約束曲面

所以存在

\lambda \ne 0

使得:

\nabla f(x^*)+\lambda \nabla g(x^*)=0

定義拉格朗日函式:

L(x,\lambda)=f(x)+\lambda g(x)

有:

\nabla_x L(x,\lambda) \to \nabla f(x^*)+\lambda \nabla g(x^*)=0

\nabla_\lambda L(x,\lambda)=0 \to g(x)=0