機器學習中的數學:線性判別分析、主成分分析

如果學習分類算法,最好從線性的入手,線性分類器最簡單的就是LDA,它可以看做是簡化版的SVM,如果想理解SVM這種分類器,那理解LDA就是很有必要的了。

談到LDA,就不得不談談PCA,PCA是一個和LDA非常相關的算法,從推導、求解、到算法最終的結果,都有著相當的相似。

本次的內容主要是以推導數學公式為主,都是從算法的物理意義出發,然后一步一步最終推導到最終的式子,LDA和PCA最終的表現都是解一個矩陣特征值的問題,但是理解了如何推導,才能更深刻的理解其中的含義。本次內容要求讀者有一些基本的線性代數基礎,比如說特征值、特征向量的概念,空間投影,點乘等的一些基本知識等。除此之外的其他公式、我都盡量講得更簡單清楚。

LDA:

LDA的全稱是Linear Discriminant Analysis(線性判別分析),是一種supervised learning。有些資料上也稱為是Fisher’s Linear Discriminant,因為它被Ronald Fisher發明自1936年,Discriminant這次詞我個人的理解是,一個模型,不需要去通過概率的方法來訓練、預測數據,比如說各種貝葉斯方法,就需要獲取數據的先驗、后驗概率等等。LDA是在目前機器學習、數據挖掘領域經典且熱門的一個算法,據我所知,百度的商務搜索部里面就用了不少這方面的算法。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

這里想多談談特征值,特征值在純數學、量子力學、固體力學、計算機等等領域都有廣泛的應用,特征值表示的是矩陣的性質,當我們取到矩陣的前N個最大的特征值的時候,我們可以說提取到的矩陣主要的成分(這個和之后的PCA相關,但是不是完全一樣的概念)。在機器學習領域,不少的地方都要用到特征值的計算,比如說圖像識別、pagerank、LDA、還有之后將會提到的PCA等等。

下圖是圖像識別中廣泛用到的特征臉(eigen face),提取出特征臉有兩個目的,首先是為了壓縮數據,對于一張圖片,只需要保存其最重要的部分就是了,然后是為了使得程序更容易處理,在提取主要特征的時候,很多的噪聲都被過濾掉了。跟下面將談到的PCA的作用非常相關。

特征值的求法有很多,求一個D * D的矩陣的時間復雜度是O(D^3), 也有一些求Top M的方法,比如說power method,它的時間復雜度是O(D^2 * M), 總體來說,求特征值是一個很費時間的操作,如果是單機環境下,是很局限的。

PCA:

主成分分析(PCA)與LDA有著非常近似的意思,LDA的輸入數據是帶標簽的,而PCA的輸入數據是不帶標簽的,所以PCA是一種unsupervised learning。LDA通常來說是作為一個獨立的算法存在,給定了訓練數據后,將會得到一系列的判別函數(discriminate function),之后對于新的輸入,就可以進行預測了。而PCA更像是一個預處理的方法,它可以將原本的數據降低維度,而使得降低了維度的數據之間的方差最大(也可以說投影誤差最小,具體在之后的推導里面會談到)。

方差這個東西是個很有趣的,有些時候我們會考慮減少方差(比如說訓練模型的時候,我們會考慮到方差-偏差的均衡),有的時候我們會盡量的增大方差。方差就像是一種信仰(強哥的話),不一定會有很嚴密的證明,從實踐來說,通過盡量增大投影方差的PCA算法,確實可以提高我們的算法質量。

說了這么多,推推公式可以幫助我們理解。我下面將用兩種思路來推導出一個同樣的表達式。首先是最大化投影后的方差,其次是最小化投影后的損失(投影產生的損失最小)。

最大化方差法:

假設我們還是將一個空間中的點投影到一個向量中去。首先,給出原空間的中心點:

假設u1為投影向量,投影之后的方差為:

上面這個式子如果看懂了之前推導LDA的過程,應該比較容易理解,如果線性代數里面的內容忘記了,可以再溫習一下,優化上式等號右邊的內容,還是用拉格朗日乘子法:

將上式求導,使之為0,得到:

這是一個標準的特征值表達式了,λ對應的特征值,u對應的特征向量。上式的左邊取得最大值的條件就是λ1最大,也就是取得最大的特征值的時候。假設我們是要將一個D維的數據空間投影到M維的數據空間中(M < D), 那我們取前M個特征向量構成的投影矩陣就是能夠使得方差最大的矩陣了。

最小化損失法:

假設輸入數據x是在D維空間中的點,那么,我們可以用D個正交的D維向量去完全的表示這個空間(這個空間中所有的向量都可以用這D個向量的線性組合得到)。在D維空間中,有無窮多種可能找這D個正交的D維向量,哪個組合是最合適的呢?

假設我們已經找到了這D個向量,可以得到:

我們可以用近似法來表示投影后的點:

上式表示,得到的新的x是由前M 個基的線性組合加上后D – M個基的線性組合,注意這里的z是對于每個x都不同的,而b對于每個x是相同的,這樣我們就可以用M個數來表示空間中的一個點,也就是使得數據降維了。但是這樣降維后的數據,必然會產生一些扭曲,我們用J描述這種扭曲,我們的目標是,使得J最小:

上式的意思很直觀,就是對于每一個點,將降維后的點與原始的點之間的距離的平方和加起來,求平均值,我們就要使得這個平均值最小。我們令:

將上面得到的z與b帶入降維的表達式:

將上式帶入J的表達式得到:

再用上拉普拉斯乘子法(此處略),可以得到,取得我們想要的投影基的表達式為:

這里又是一個特征值的表達式,我們想要的前M個向量其實就是這里最大的M個特征值所對應的特征向量。證明這個還可以看看,我們J可以化為:

也就是當誤差J是由最小的D – M個特征值組成的時候,J取得最小值。跟上面的意思相同。

下圖是PCA的投影的一個表示,黑色的點是原始的點,帶箭頭的虛線是投影的向量,Pc1表示特征值最大的特征向量,pc2表示特征值次大的特征向量,兩者是彼此正交的,因為這原本是一個2維的空間,所以最多有兩個投影的向量,如果空間維度更高,則投影的向量會更多。

總結:

本次主要講了兩種方法,PCA與LDA,兩者的思想和計算方法非常類似,但是一個是作為獨立的算法存在,另一個更多的用于數據的預處理的工作。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,533評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,055評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,365評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,561評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,346評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,889評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,978評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,118評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,637評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,558評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,739評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,246評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,980評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,619評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,347評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,702評論 2 370

推薦閱讀更多精彩內容