【机器学习】LDA 浅谈
1 Linear Discriminant Analysis
相較于FLD(Fisher Linear Decriminant),LDA假設(shè):1.樣本數(shù)據(jù)服從正態(tài)分布,2.各類得協(xié)方差相等。雖然這些在實(shí)際中不一定滿足,但是LDA被證明是非常有效的降維方法,其線性模型對(duì)于噪音的魯棒性效果比較好,不容易過擬合。
2 二分類問題
原理小結(jié):對(duì)于二分類LDA問題,簡(jiǎn)單點(diǎn)來說,是將帶有類別標(biāo)簽的高維樣本投影到一個(gè)向量w(一維空間)上,使得在該向量上樣本的投影值達(dá)到類內(nèi)距離最小、類內(nèi)間距離最大(分類效果,具有最佳可分離性)。問題轉(zhuǎn)化成一個(gè)確定w的優(yōu)化問題。其實(shí)w就是二分類問題的超分類面的法向量。類似于SVM和kernel PCA,也有kernel FDA,其原理是將原樣本通過非線性關(guān)系映射到高維空間中,在該高緯空間利用FDA算法,這里的關(guān)鍵是w可以用原樣本均值的高維投影值表示,這樣可以不需知道具體的映射關(guān)系而給出kernel的形式就可以了。和PCA一樣,F(xiàn)DA也可以看成是一種特征提取(feature extraction)的方法,即將原來的n維特征變成一維的特征了(針對(duì)該分類只要有這一個(gè)特征就足夠了)。
我們將整個(gè)問題從頭說起。
問題:PCA、ICA之余對(duì)樣本數(shù)據(jù)來言,可以是沒有類別標(biāo)簽y的。回想我們做回歸時(shí),如果特征太多,那么會(huì)產(chǎn)生不相關(guān)特征引入、過度擬合等問題。我們可以使用PCA來降維,但PCA沒有將類別標(biāo)簽考慮進(jìn)去,屬于無監(jiān)督的。舉一個(gè)例子,假設(shè)我們對(duì)一張100*100像素的圖片做人臉識(shí)別,每個(gè)像素是一個(gè)特征,那么會(huì)有10000個(gè)特征,而對(duì)應(yīng)的類別標(biāo)簽y僅僅是0/1值,1代表是人臉。這么多特征不僅訓(xùn)練復(fù)雜,而且不必要特征對(duì)結(jié)果會(huì)帶來不可預(yù)知的影響,但我們想得到降維后的一些最佳特征(與y關(guān)系最密切的),怎么辦呢?
回顧我們之前的logistic回歸方法,給定m個(gè)n維特征的訓(xùn)練樣例(i從1到m),每個(gè)對(duì)應(yīng)一個(gè)類標(biāo)簽。我們就是要學(xué)習(xí)出參數(shù),使得(g是sigmoid函數(shù))。
首先給定特征為d維的N個(gè)樣例,,其中有個(gè)樣例屬于類別,另外個(gè)樣例屬于類別。現(xiàn)在我們覺得原始特征數(shù)太多,想將d維特征降到只有一維,而又要保證類別能夠“清晰”地反映在低維數(shù)據(jù)上,也就是這一維就能決定每個(gè)樣例的類別。假設(shè)這個(gè)最佳映射向量為w(d維),那么樣例x(d維)到w上的投影可以表示為
為了方便說明,假設(shè)樣本向量包含2個(gè)特征值(d=2),我們就是要找一條直線(方向?yàn)閣)來做投影,然后尋找最能使樣本點(diǎn)分離的直線。如下圖:
直觀上,右圖相較于左圖可以在映射后,更好地將不同類別的樣本點(diǎn)分離。
接下來我們從定量的角度來找到這個(gè)最佳的w。
首先,每類樣本的投影前后的均值點(diǎn)分別為(此處樣本總數(shù)C=2),Ni表示每類樣本的個(gè)數(shù):
由此可知,投影后的的均值也就是樣本中心點(diǎn)的投影。
什么是最佳的投影向量w呢?我們首先發(fā)現(xiàn),能夠使投影后的兩類樣本均值點(diǎn)盡量間隔較遠(yuǎn)的就可能是最佳的,定量表示就是:
J(w)越大越好。但是只考慮J(w)行不行呢?不行,看下圖
樣本點(diǎn)均勻分布在橢圓里,投影到橫軸x1上時(shí)能夠獲得更大的中心點(diǎn)間距J(w),但是由于有重疊,x1不能分離樣本點(diǎn)。投影到縱軸x2上,雖然J(w)較小,但是能夠分離樣本點(diǎn)。因此我們還需要考慮樣本點(diǎn)之間的方差,方差越大,樣本點(diǎn)越難以分離。我們使用另外一個(gè)度量值——散列值(Scatter)。對(duì)投影后的類求散列值,如下
從公式中可以看出,只是少除以樣本數(shù)量的方差值,散列值的幾何意義是樣本點(diǎn)的密集程度,值越大,越分散,反之,越集中。而我們想要的投影后的樣本點(diǎn)的樣子是:不同類別的樣本點(diǎn)越分開越好,同類的越聚集越好,也就是均值點(diǎn)間距離越大越好,散列值越小越好。正好,我們可以使用J(w)和S(w)來度量。定義最終的度量公式:
接下來的事就比較明顯了,我們只需尋找使J(w)最大的w即可。展開散列值公式:
定義:
該協(xié)方差矩陣稱為散列矩陣(Scatter matrices)。利用該定義,上式可簡(jiǎn)寫為:
定義樣本集的Within-Class Scatter Matrix——類內(nèi)離散度矩陣為:
使用以上3個(gè)等式,可以得到
展開分子:
稱為Between-Class Scatter Matrix即類間離散度矩陣。是兩個(gè)向量的外積,是個(gè)秩為1的矩陣。
那么J(w)最終可以化簡(jiǎn)表示為:
在我們求導(dǎo)之前,需要對(duì)分母進(jìn)行歸一化,因?yàn)椴蛔鰵w一的話,w擴(kuò)大任何倍,都成立,我們就無法確定w。這里w并不是唯一的,倘若w對(duì)應(yīng)J(w)的極大值點(diǎn),則a*w仍舊可以達(dá)到J(w)的極大值點(diǎn)。
令,即目標(biāo)函數(shù)J(w)化簡(jiǎn)為等于其分子部分,且受約束。加入拉格朗日乘子并求導(dǎo)得到:
利用矩陣微積分,求導(dǎo)時(shí)可以簡(jiǎn)單地把當(dāng)做看待。如果可逆(非奇異),那么將求導(dǎo)后的結(jié)果兩邊都乘以,得
這個(gè)可喜的結(jié)果就是w就是矩陣的特征向量了。這個(gè)公式稱為Fisher Linear Discrimination。
等等,讓我們?cè)儆^察一下,發(fā)現(xiàn)前面的公式
那么
代入最后的特征值公式得
由于對(duì)w擴(kuò)大縮小任何倍不影響結(jié)果,因此可以約去兩邊的未知常數(shù)和,得到
至此,我們只需要求出原始樣本的均值和方差就可以求出最佳的方向w,這就是Fisher于1936年提出的線性判別分析。
看上面二維樣本的投影結(jié)果圖:
3 多分類情形
假設(shè)類別變成多個(gè)了,那么要怎么改變,才能保證投影后類別能夠分離呢?我們之前討論的是如何將d維降到一維,現(xiàn)在類別多了,一維可能已經(jīng)不能滿足要求。假設(shè)我們有C個(gè)類別,將其投影到K個(gè)基向量。
將這K個(gè)向量表示為,投影上的結(jié)果表示為,簡(jiǎn)寫之:
為了像上節(jié)一樣度量J(w),我們打算仍然從類間散列度和類內(nèi)散列度來考慮。為了便于分析,假設(shè)樣本向量包含2個(gè)特征值時(shí),從幾何意義上考慮:
其中和與上節(jié)的意義一樣,是類別1的樣本點(diǎn)相對(duì)于該類中心點(diǎn)的散列程度。變成類別1中心點(diǎn)相對(duì)于樣本中心點(diǎn)的協(xié)方差矩陣,即類1相對(duì)于的散列程度。
為
其中
需要變,原來度量的是兩個(gè)均值點(diǎn)的散列情況,現(xiàn)在度量的是每類均值點(diǎn)相對(duì)于樣本中心的散列情況。類似于將看作樣本點(diǎn),是均值的協(xié)方差矩陣。如果某類里面的樣本點(diǎn)較多,那么其權(quán)重稍大,權(quán)重用Ni/N表示,但由于J(w)對(duì)倍數(shù)不敏感,因此使用Ni即可。
其中
是所有樣本的均值。
我們可以知道矩陣的實(shí)際意義是一個(gè)協(xié)方差矩陣,這個(gè)矩陣所刻畫的是該類與樣本總體之間的關(guān)系。矩陣對(duì)角線元素是該類相對(duì)樣本總體的方差(即分散度),非對(duì)角線元素是該類樣本總體均值的協(xié)方差(即該類和總體樣本的相關(guān)聯(lián)度或稱冗余度),即是各個(gè)樣本根據(jù)自己所屬的類計(jì)算出樣本與總體的協(xié)方差矩陣的總和,這從宏觀上描述了所有類和總體之間的離散冗余程度。同理為分類內(nèi)各個(gè)樣本和所屬類之間的協(xié)方差矩陣之和,它所刻畫的是從總體來看類內(nèi)各個(gè)樣本與所屬類之間(這里所刻畫的類特性是由是類內(nèi)各個(gè)樣本的平均值矩陣構(gòu)成)離散度,其實(shí)從中可以看出不管是類內(nèi)的樣本期望矩陣還是總體樣本期望矩陣,它們都只是充當(dāng)一個(gè)媒介作用,不管是類內(nèi)還是類間離散度矩陣都是從宏觀上刻畫出類與類之間的樣本的離散度和類內(nèi)樣本和樣本之間的離散度。
上面討論的都是在投影前的公式變化,但真正的J(w)的分子分母都是在投影后計(jì)算的。下面我們看樣本點(diǎn)投影后的公式改變:
這兩個(gè)是第i類樣本點(diǎn)在某個(gè)基向量上投影后的均值計(jì)算公式。
下面兩個(gè)是在某個(gè)基向量上投影后的和
其實(shí)就是將換成了。實(shí)際上,2類問題和也是基于上列2個(gè)式子算出,只不過使用的為化簡(jiǎn)形式。
綜合各個(gè)投影向量(w)上的和,更新這兩個(gè)參數(shù),得到
W是基向量矩陣,是投影后的各個(gè)類內(nèi)部的散列矩陣之和,是投影后各個(gè)類中心相對(duì)于全樣本中心投影的散列矩陣之和。回想我們上節(jié)的公式J(w),分子是兩類中心距,分母是每個(gè)類自己的散列度。現(xiàn)在投影方向是多維了(好幾條直線),分子需要做一些改變,我們不是求兩兩樣本中心距之和(這個(gè)對(duì)描述類別間的分散程度沒有用),而是求每類中心相對(duì)于全樣本中心的散列度之和。
然而,最后的J(w)的形式是
由于我們得到的分子分母都是散列矩陣,要將矩陣變成實(shí)數(shù),需要取行列式。又因?yàn)?strong>行列式的值實(shí)際上是矩陣特征值的積,一個(gè)特征值可以表示在該特征向量上的發(fā)散程度。因此我們使用行列式來計(jì)算(此處我感覺有點(diǎn)牽強(qiáng),道理不是那么有說服力)。
整個(gè)問題又回歸為求J(w)的最大值了,同理我們“固定”分母為1,然后求導(dǎo),得出最后結(jié)果:
與上節(jié)得出的結(jié)論一樣:
最后還歸結(jié)到了求矩陣的特征值上來了。首先求出的特征值,然后取前最大的K(投影向量的個(gè)數(shù))個(gè)特征向量組成W矩陣即可。注意:由于中的秩為1,因此的秩至多為C(類的個(gè)數(shù)C,矩陣的秩小于等于各個(gè)相加矩陣的秩的和)。由于知道了前C-1個(gè)(ui-u0)后,最后一個(gè)uc-u0可以有前面的來線性表示(見第2部分推導(dǎo)),因此的秩至多為C-1。那么投影向量個(gè)數(shù)K最大為C-1,即投影后,樣本特征向量維度最為C-1。特征值大的對(duì)應(yīng)的特征向量分割性能最好。
由于不一定是對(duì)稱陣,因此得到的K個(gè)特征向量不一定正交,這也是與PCA不同的地方。
將3維空間上的球體樣本點(diǎn)投影到二維上,W1相比W2能夠獲得更好的分離效果。
4.若干問題
4.1 類內(nèi)離散度矩陣為奇異陣
即此種情況一般發(fā)生在小樣本問題上,即樣本的維度少于樣本的個(gè)數(shù)。先經(jīng)過PCA降維再用LDA。
4.2 多類問題目標(biāo)函數(shù)為什么選擇行列式
看原文解釋:
4.3 與PCA比較
(1)PCA無需樣本標(biāo)簽,屬于無監(jiān)督學(xué)習(xí)降維;LDA需要樣本標(biāo)簽,屬于有監(jiān)督學(xué)習(xí)降維。二者均是尋找一定的特征向量w來降維的,其中,LDA抓住樣本的判別特征,PCA則側(cè)重描敘特征。概括來說,PCA選擇樣本點(diǎn)投影具有最大方差的方向,LDA選擇分類性能最好的方向。
(2)PCA降維是直接和特征維度相關(guān)的,比如原始數(shù)據(jù)是d維的,那么PCA后,可以任意選取1維、2維,一直到d維都行(當(dāng)然是對(duì)應(yīng)特征值大的那些)。LDA降維是直接和類別的個(gè)數(shù)C相關(guān)的,與數(shù)據(jù)本身的維度沒關(guān)系,比如原始數(shù)據(jù)是d維的,一共有C個(gè)類別,那么LDA降維之后,一般就是1維,2維到C-1維進(jìn)行選擇(當(dāng)然對(duì)應(yīng)的特征值也是最大的一些)。要求降維后特征向量維度大于C-1的,不能使用LDA。
對(duì)于很多兩類分類的情況,LDA之后就剩下1維,找到分類效果最好的一個(gè)閾值貌似就可以了。舉個(gè)例子,假設(shè)圖象分類,兩個(gè)類別正例反例,每個(gè)圖象10000維特征,那么LDA之后,就只有1維特征,并且這維特征的分類能力最好。
(3)PCA投影的坐標(biāo)系都是正交的,而LDA根據(jù)類別的標(biāo)注關(guān)注分類能力,因此不保證投影到的坐標(biāo)系是正交的(一般都不正交)
具體參考【5】【7】。PCA和LDA的投影實(shí)例如下。
4.4 使用限制
(1)LDA至多可生成C-1維子空間
LDA降維后的維度區(qū)間在[1,C-1],與原始特征數(shù)n無關(guān),對(duì)于二值分類,最多投影到1維。
(2)LDA不適合對(duì)非高斯分布樣本進(jìn)行降維。
LDA假設(shè)數(shù)據(jù)服從單峰高斯分布,比如上面面的復(fù)雜數(shù)據(jù)結(jié)構(gòu),則難以處理。上圖中紅色區(qū)域表示一類樣本,藍(lán)色區(qū)域表示另一類,由于是2類,所以最多投影到1維上。不管在直線上怎么投影,都難使紅色點(diǎn)和藍(lán)色點(diǎn)內(nèi)部凝聚,類間分離。
(3)LDA在樣本分類信息依賴方差而不是均值時(shí),效果不好。
上圖中,樣本點(diǎn)依靠方差信息進(jìn)行分類,而不是均值信息。LDA不能夠進(jìn)行有效分類,因?yàn)長(zhǎng)DA過度依靠均值信息。
(4)LDA可能過度擬合數(shù)據(jù)。
5 LDA的變種
(1)非參數(shù)LDA。非參數(shù)LDA使用本地信息和K臨近樣本點(diǎn)來計(jì)算,使得是全秩的,這樣我們可以抽取多余C-1個(gè)特征向量。而且投影后分離效果更好。
(2)正交LDA。先找到最佳的特征向量,然后找與這個(gè)特征向量正交且最大化fisher條件的向量。這種方法也能擺脫C-1的限制。
(3)一般化LDA。引入了貝葉斯風(fēng)險(xiǎn)等理論。
(4)核函數(shù)LDA。將特征,使用核函數(shù)來計(jì)算原始數(shù)據(jù)投影后,仍舊不能很好的分開的情形。
(5)2DLDA 和 step-wise LDA
6 例程
LDA既然叫做線性判別分析,應(yīng)該具有一定的預(yù)測(cè)功能,比如新來一個(gè)樣例x,如何確定其類別?拿二值分來來說,我們可以將其投影到直線上,得到y(tǒng),然后看看y是否在超過某個(gè)閾值y0,超過是某一類,否則是另一類。而怎么尋找這個(gè)y0呢?
看根據(jù)中心極限定理,獨(dú)立同分布的隨機(jī)變量和符合高斯分布,然后利用極大似然估計(jì)求。然后用決策理論里的公式來尋找最佳的y0,詳情請(qǐng)參閱PRML。
本文參考:
1. JerryLead 的博文《線性判別分析(Linear Discriminant Analysis)(一)》
2. JerryLead 的博文《線性判別分析(Linear Discriminant Analysis)(二)》
3. LeftNotEasy 的博文《機(jī)器學(xué)習(xí)中的數(shù)學(xué)(4)-線性判別分析(LDA),主成分分析(PCA)》
4. webdancer 的博文《LDA-linear discriminant analysis》
5. xiaodongrush 的博文《線性判別式分析-LDA-Linear Discriminant Analysis》
6. peghoty 的博文《關(guān)于協(xié)方差矩陣的理解》
7. peghoty 的博文《UFLDL教程學(xué)習(xí)筆記(四)主成分分析》
關(guān)注公眾號(hào) 海量干貨等你
總結(jié)
以上是生活随笔為你收集整理的【机器学习】LDA 浅谈的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WinAPI使用: 时间,线程,中断
- 下一篇: oceanbase 资源池删除说明