线性判别分析(Linear Discriminant Analysis)(一)
1. 問題
???? 之前我們討論的PCA、ICA也好,對樣本數據來言,可以是沒有類別標簽y的。回想我們做回歸時,如果特征太多,那么會產生不相關特征引入、過度擬合等問題。我們可以使用PCA來降維,但PCA沒有將類別標簽考慮進去,屬于無監督的。
???? 比如回到上次提出的文檔中含有“learn”和“study”的問題,使用PCA后,也許可以將這兩個特征合并為一個,降了維度。但假設我們的類別標簽y是判斷這篇文章的topic是不是有關學習方面的。那么這兩個特征對y幾乎沒什么影響,完全可以去除。
???? 再舉一個例子,假設我們對一張100*100像素的圖片做人臉識別,每個像素是一個特征,那么會有10000個特征,而對應的類別標簽y僅僅是0/1值,1代表是人臉。這么多特征不僅訓練復雜,而且不必要特征對結果會帶來不可預知的影響,但我們想得到降維后的一些最佳特征(與y關系最密切的),怎么辦呢?
2. 線性判別分析(二類情況)
???? 回顧我們之前的logistic回歸方法,給定m個n維特征的訓練樣例(i從1到m),每個對應一個類標簽。我們就是要學習出參數,使得(g是sigmoid函數)。
???? 現在只考慮二值分類情況,也就是y=1或者y=0。
???? 為了方便表示,我們先換符號重新定義問題,給定特征為d維的N個樣例,,其中有個樣例屬于類別,另外個樣例屬于類別。
???? 現在我們覺得原始特征數太多,想將d維特征降到只有一維,而又要保證類別能夠“清晰”地反映在低維數據上,也就是這一維就能決定每個樣例的類別。
???? 我們將這個最佳的向量稱為w(d維),那么樣例x(d維)到w上的投影可以用下式來計算
????
???? 這里得到的y值不是0/1值,而是x投影到直線上的點到原點的距離。
???? 當x是二維的,我們就是要找一條直線(方向為w)來做投影,然后尋找最能使樣本點分離的直線。如下圖:
????
???? 從直觀上來看,右圖比較好,可以很好地將不同類別的樣本點分離。
???? 接下來我們從定量的角度來找到這個最佳的w。
???? 首先我們尋找每類樣例的均值(中心點),這里i只有兩個
????
???? 由于x到w投影后的樣本點均值為
????
???? 由此可知,投影后的的均值也就是樣本中心點的投影。
???? 什么是最佳的直線(w)呢?我們首先發現,能夠使投影后的兩類樣本中心點盡量分離的直線是好的直線,定量表示就是:
????
???? J(w)越大越好。
???? 但是只考慮J(w)行不行呢?不行,看下圖
????
???? 樣本點均勻分布在橢圓里,投影到橫軸x1上時能夠獲得更大的中心點間距J(w),但是由于有重疊,x1不能分離樣本點。投影到縱軸x2上,雖然J(w)較小,但是能夠分離樣本點。因此我們還需要考慮樣本點之間的方差,方差越大,樣本點越難以分離。
???? 我們使用另外一個度量值,稱作散列值(scatter),對投影后的類求散列值,如下
????
???? 從公式中可以看出,只是少除以樣本數量的方差值,散列值的幾何意義是樣本點的密集程度,值越大,越分散,反之,越集中。
???? 而我們想要的投影后的樣本點的樣子是:不同類別的樣本點越分開越好,同類的越聚集越好,也就是均值差越大越好,散列值越小越好。正好,我們可以使用J(w)和S來度量,最終的度量公式是
????
???? 接下來的事就比較明顯了,我們只需尋找使J(w)最大的w即可。
???? 先把散列值公式展開
????
???? 我們定義上式中中間那部分
????
???? 這個公式的樣子不就是少除以樣例數的協方差矩陣么,稱為散列矩陣(scatter matrices)
???? 我們繼續定義
????
???? 稱為Within-class scatter matrix。
???? 那么回到上面的公式,使用替換中間部分,得
????
????
???? 然后,我們展開分子
????
???? 稱為Between-class scatter,是兩個向量的外積,雖然是個矩陣,但秩為1。
???? 那么J(w)最終可以表示為
????
???? 在我們求導之前,需要對分母進行歸一化,因為不做歸一的話,w擴大任何倍,都成立,我們就無法確定w。因此我們打算令,那么加入拉格朗日乘子后,求導
????
???? 其中用到了矩陣微積分,求導時可以簡單地把當做看待。
???? 如果可逆,那么將求導后的結果兩邊都乘以,得
????
???? 這個可喜的結果就是w就是矩陣的特征向量了。
???? 這個公式稱為Fisher linear discrimination。
???? 等等,讓我們再觀察一下,發現前面的公式
????
???? 那么
????
???? 代入最后的特征值公式得
????
???? 由于對w擴大縮小任何倍不影響結果,因此可以約去兩邊的未知常數和,得到
????
???? 至此,我們只需要求出原始樣本的均值和方差就可以求出最佳的方向w,這就是Fisher于1936年提出的線性判別分析。
???? 看上面二維樣本的投影結果圖:
????
3. 線性判別分析(多類情況)
???? 前面是針對只有兩個類的情況,假設類別變成多個了,那么要怎么改變,才能保證投影后類別能夠分離呢?
我們之前討論的是如何將d維降到一維,現在類別多了,一維可能已經不能滿足要求。假設我們有C個類別,需要K維向量(或者叫做基向量)來做投影。
???? 將這K維向量表示為。
???? 我們將樣本點在這K維向量投影后結果表示為,有以下公式成立
????
????
???? 為了像上節一樣度量J(w),我們打算仍然從類間散列度和類內散列度來考慮。
???? 當樣本是二維時,我們從幾何意義上考慮:
????
???? 其中和與上節的意義一樣,是類別1里的樣本點相對于該類中心點的散列程度。變成類別1中心點相對于樣本中心點的協方差矩陣,即類1相對于的散列程度。
???? 為
????
???? 的計算公式不變,仍然類似于類內部樣本點的協方差矩陣
????
???? 需要變,原來度量的是兩個均值點的散列情況,現在度量的是每類均值點相對于樣本中心的散列情況。類似于將看作樣本點,是均值的協方差矩陣,如果某類里面的樣本點較多,那么其權重稍大,權重用Ni/N表示,但由于J(w)對倍數不敏感,因此使用Ni。
????
???? 其中
????
???? 是所有樣本的均值。
???? 上面討論的都是在投影前的公式變化,但真正的J(w)的分子分母都是在投影后計算的。下面我們看樣本點投影后的公式改變:
???? 這兩個是第i類樣本點在某基向量上投影后的均值計算公式。
????
????
???? 下面兩個是在某基向量上投影后的和
????
????
???? 其實就是將換成了。
???? 綜合各個投影向量(w)上的和,更新這兩個參數,得到
????
????
???? W是基向量矩陣,是投影后的各個類內部的散列矩陣之和,是投影后各個類中心相對于全樣本中心投影的散列矩陣之和。
???? 回想我們上節的公式J(w),分子是兩類中心距,分母是每個類自己的散列度。現在投影方向是多維了(好幾條直線),分子需要做一些改變,我們不是求兩兩樣本中心距之和(這個對描述類別間的分散程度沒有用),而是求每類中心相對于全樣本中心的散列度之和。
???? 然而,最后的J(w)的形式是
????
???? 由于我們得到的分子分母都是散列矩陣,要將矩陣變成實數,需要取行列式。又因為行列式的值實際上是矩陣特征值的積,一個特征值可以表示在該特征向量上的發散程度。因此我們使用行列式來計算(此處我感覺有點牽強,道理不是那么有說服力)。
???? 整個問題又回歸為求J(w)的最大值了,我們固定分母為1,然后求導,得出最后結果(我翻查了很多講義和文章,沒有找到求導的過程)
????
???? 與上節得出的結論一樣
????
???? 最后還歸結到了求矩陣的特征值上來了。首先求出的特征值,然后取前K個特征向量組成W矩陣即可。
???? 注意:由于中的 秩為1,因此的秩至多為C(矩陣的秩小于等于各個相加矩陣的秩的和)。由于知道了前C-1個后,最后一個可以有前面的來線性表示,因此的秩至多為C-1。那么K最大為C-1,即特征向量最多有C-1個。特征值大的對應的特征向量分割性能最好。
???? 由于不一定是對稱陣,因此得到的K個特征向量不一定正交,這也是與PCA不同的地方。
總結
以上是生活随笔為你收集整理的线性判别分析(Linear Discriminant Analysis)(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 聚焦互联网应用和深度学习
- 下一篇: Google研究员Ilya Sutske