1. 程式人生 > >線性判別法則(LDA)

線性判別法則(LDA)

線性判別法則(Linear Discriminant Analysis)

LDA是一種監督學習。也稱為Fisher's linear discriminant。

LDA的原理是,將帶上標籤的資料(點),通過投影的方法,投影到維度更低的空間中,使得投影后的點,會形成按類別區分,一簇一簇的情況,相同類別的點,將會在投影后的空間中更接近。要說明白LDA,首先得弄明白線性分類器(Linear Classifier):因為LDA是一種線性分類器。對於K-分類的一個分類問題,會有K個線性函式:

                                                                           image

 當滿足條件:對於所有的j,都有Yk > Yj,的時候,我們就說x屬於類別k。對於每一個分類,都有一個公式去算一個分值,在所有的公式得到的分值中,找一個最大的,就是所屬的分類。

 上式實際上就是一種投影,是將一個高維的點投影到一條高維的直線上,LDA最求的目標是,給出一個標註了類別的資料集,投影到了一條直線之後,能夠使得點儘量的按類別區分開,當k=2即二分類問題的時候,如下圖所示:

                                        

 紅色的方形的點為0類的原始點、藍色的方形點為1類的原始點,經過原點的那條線就是投影的直線,從圖上可以清楚的看到,紅色的點和藍色的點被原點明顯的分開了,這個資料只是隨便畫的,如果在高維的情況下,看起來會更好一點。

下面來推導一下二分類LDA問題的公式:

假設用來區分二分類的直線(投影函式)為:

image

    LDA分類的一個目標是使得不同類別之間的距離越遠越好,同一類別之中的距離越近越好,所以我們需要定義幾個關鍵的值。

    類別i的原始中心點為:(Di表示屬於類別i的點)image

    類別i投影后的中心點為:

image

    衡量類別i投影后,類別點之間的分散程度(方差)為:image

    最終我們可以得到一個下面的公式,表示LDA投影到w後的損失函式:

                                                                                      image

   我們分類的目標是,使得類別內的點距離越近越好(集中),類別間的點越遠越好。分母表示每一個類別內的方差之和,方差越大表示一個類別內的點越分散,分子為兩個類別各自的中心點的距離的平方,我們最大化J(w)就可以求出最優的w了。想要求出最優的w,可以使用拉格朗日乘子法,但是現在我們得到的J(w)裡面,w是不能被單獨提出來的,我們就得想辦法將w單獨提出來。

   我們定義一個投影前的各類別分散程度的矩陣,這個矩陣看起來有一點麻煩,其實意思是,如果某一個分類的輸入點集Di裡面的點距離這個分類的中心店mi越近,則Si裡面元素的值就越小,如果分類的點都緊緊地圍繞著mi,則Si裡面的元素值越更接近0.

                                                                            image

   帶入Si,將J(w)分母化為:

image

image

   同樣的將J(w)分子化為:

image

   這樣損失函式可以化成下面的形式:

 image

   這樣就可以用最喜歡的拉格朗日乘子法了,但是還有一個問題,如果分子、分母是都可以取任意值的,那就會使得有無窮解,我們將分母限制為長度為1(這是用拉格朗日乘子法一個很重要的技巧,在下面將說的PCA裡面也會用到,如果忘記了,請複習一下高數),並作為拉格朗日乘子法的限制條件,帶入得到:

image

   這樣的式子就是一個求特徵值的問題了。

   對於N(N>2)分類的問題,我就直接寫出下面的結論了:

image

   這同樣是一個求特徵值的問題,我們求出的第i大的特徵向量,就是對應的Wi了。