機器學習算法原理筆記(三)—— LDA線性判別分析

一、簡述

線性判別分析(Linear discriminant Analysis希停,LDA)是一種監(jiān)督學習的降維技術仅乓,與PCA不同的是,PCA是尋找數據集中方差最大的方向作為主成分分量的軸巢寡,而LDA是最優(yōu)化分類的特征子空間喉脖。

LDA的思想可以用一句話概括,就是“投影后類內方差最小抑月,類間方差最大”树叽。也就是說,要將數據在低維度上進行投影谦絮,投影后希望每一種類別數據的投影點盡可能的接近题诵,而不同類別的數據的類別中心之間的距離盡可能的大:

與PCA之間的對比:

可以看出,如果是PCA的話层皱,為了方差最大化性锭,會選擇投影到左邊,而LDA則會選擇投影到下面奶甘。


二篷店、二類LDA

假設我們的數據集 D=\{(x_1,y_1), (x_2,y_2), ...,((x_m,y_m))\} ,其中任意樣本xi為n維向量臭家,yi∈{0,1}疲陕。我們定義N_{j}(j=0,1)為第j類樣本的個數,X_{j}(j=0,1)為第j類樣本的集合钉赁,而μ_{j}(j=0,1)為第j類樣本的均值向量蹄殃,定義Σ_{j}(j=0,1)為第j類樣本的協(xié)方差矩陣(嚴格說是缺少分母部分的協(xié)方差矩陣)。

μj的表達式為:

\mu_j = \frac{1}{N_j}\sum\limits_{x \in X_j}x\;\;(j=0,1)

Σj的表達式為:

\Sigma_j = \sum\limits_{x \in X_j}(x-\mu_j)(x-\mu_j)^T\;\;(j=0,1)

由于是兩類數據你踩,因此我們只需要將數據投影到一條直線上即可诅岩。假設我們的投影直線是向量w讳苦,則對任意一個樣本本xi,它在直線w的投影為 w^Tx_i吩谦,我們希望同一種類別數據的投影點盡可能的接近鸳谜,也就是要同類樣本投影點的協(xié)方差w^T\Sigma_0ww^T\Sigma_1w盡可能的小,即最小化下面的式子:

w^T\Sigma_0w+w^T\Sigma_1w

另一方面式廷,我們希望讓不同類別的數據盡可能地遠離咐扭,考慮類的中心(也就是均值) \mu_0,\mu_1,只要使得 ||w^T\mu_0-w^T\mu_1||_2^2盡可能大即可滑废。

綜合上面的考量蝗肪,我們可以得出下面的優(yōu)化目標:

\underbrace{arg\;max}_w\;\;J(w) = \frac{||w^T\mu_0-w^T\mu_1||_2^2}{w^T\Sigma_0w+w^T\Sigma_1w} = \frac{w^T(\mu_0-\mu_1)(\mu_0-\mu_1)^Tw}{w^T(\Sigma_0+\Sigma_1)w}

為了表示方便,我們做如下定義:

S_w = \Sigma_0 + \Sigma_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

優(yōu)化目標重寫為:

\underbrace{arg\;max}_w\;\;J(w) = \frac{w^TS_bw}{w^TS_ww}

利用凸優(yōu)化的知識蠕趁,我們使用和SVM中同樣的技巧薛闪,約束{w^TS_ww}=1(和SVM中一樣,上下式子一同縮放不影響最后求\underbrace{arg\;max}_w\;\;J(w)的結果)俺陋,這樣使用拉格朗日乘子法就可以得到:

J(w)=w^TS_bw-\lambda(w^TS_ww-1)

\frac{dJ}{dw}=2S_bw-2\lambda S_ww=0

S_bw=\lambda S_ww

如果S_w可逆豁延,就又變回了求特征向量的套路:

S_w^{-1}S_bw=\lambda w

當然,在實際問題中倔韭,S_w 常出現不可逆的問題术浪,不過一般情況下可以通過其他方法解決:

  • S_w=S_w+\gamma I,其中\gamma是一個特別小的數寿酌,這樣S_w一定可逆

  • 先使用PCA對數據進行降維胰苏,使得在降維后的數據上S_w可逆,再使用LDA

再往前一步:

我們考慮到兩類的這種情況下醇疼,其實s_b w(\mu_1 - \mu_2) 是平行的硕并,所以:

S_b w= (\mu_1 - \mu_2) (\mu_1 - \mu_2)^T w = (\mu_1 - \mu_2) * k

那么就算在式子兩邊左乘S_w^{-1}也是成立的,那么原先的式子就可以轉化為:

S_w^{-1} S_b w = S_w^{-1} (\mu_1 - \mu_2) * k = w * \lambda

兩邊同除以 k 對式子沒有影響秧荆,所以倔毙,就可以得到得到特征向量:

w = S_w^{-1}{(\mu_1 - \mu_2)}

也就是說我們只要求出原始二類樣本的均值和方差就可以確定最佳的投影方向w了


三、廣義瑞利商求解二類LDA

瑞利商 R(A,x) 的定義:

R(A,x) = \frac{x^HAx}{x^Hx}

其中乙濒,x為非零向量陕赃,而A為n×n的Hermitan矩陣(Hermitan矩陣就是滿足共軛轉置矩陣和自己相等的矩陣,即A^H=A颁股,如果矩陣A是實矩陣么库,則滿足A^T = A的矩陣即為Hermitan矩陣)

瑞利商R(A,x)有一個非常重要的性質,即它的最大值等于矩陣A最大的特征值甘有,而最小值等于矩陣A的最小的特征值诉儒,也就是滿足(證明可以參考范數不等式):

\lambda_{min} \leq \frac{x^HAx}{x^Hx} \leq \lambda_{max}

廣義瑞利商R(A,B,x)的定義:

R(A,x) = \frac{x^HAx}{x^HBx}

其中,x為非零向量亏掀,而A,B為n×n的Hermitan矩陣忱反,B為正定矩陣

廣義瑞利商是不是很眼熟泛释,我們完全可以套用廣義瑞利商來求解之前的最大值問題,但先要得到廣義瑞利商的最大最小值温算。

通過將廣義瑞利商通過標準化就可以轉化為瑞利商的形式怜校,從而得到廣義廣義瑞利商的最大最小值:

x=B^{-1/2}x',則:

分母:x^HBx = x'^H(B^{-1/2})^HBB^{-1/2}x' = x'^HB^{-1/2}BB^{-1/2}x' = x'^Hx'

分子:x^HAx = x'^HB^{-1/2}AB^{-1/2}x'

最后我們就可以得到:

R(A,B,x') = \frac{x'^HB^{-1/2}AB^{-1/2}x'}{x'^Hx'}

R(A,B,x)的最大值為矩陣B^{-1/2}AB^{-1/2}的最大特征值米者,或者說矩陣B^{-1}A的最大特征值韭畸,而最小值為矩陣B^{-1}A的最小特征值。


四蔓搞、多類LDA

假設我們的數據集D=\{(x_1,y_1), (x_2,y_2), ...,((x_m,y_m))\},其中任意樣本x_i為n維向量,y_i∈{C1,C2,...,Ck}随橘。我們定義N_j(j=1,2...k)為第j類樣本的個數喂分,X_j(j=1,2...k)為第j類樣本的集合,而μ_j(j=1,2...k)為第j類樣本的均值向量机蔗,定義Σ_j(j=1,2...k)為第j類樣本的協(xié)方差矩陣蒲祈。

假設我們投影到的低維空間的維度為d,對應的基向量為(w_1,w_2,...w_d)萝嘁,基向量組成的矩陣為W梆掸,它是一個n×d的矩陣,按我們在二類里的經驗牙言,此時我們的優(yōu)化目標應該可以寫成為:

\frac{W^TS_bW}{W^TS_wW}

S_w 不難寫出酸钦,畢竟二類里是兩個炒辉,那多類里就是多弄幾個而已:
S_w = \sum\limits_{j=1}^{k}S_{wj} = \sum\limits_{j=1}^{k}\sum\limits_{x \in X_j}(x-\mu_j)(x-\mu_j)^T

S_b 應該怎么考慮呢度液,直接按之前的套路復雜度太高了,有沒有什么可以代替的好辦法呢尔店?

我們先考慮整體的散度矩陣蚕断,也就是:

S_t = \sum\limits_{x \in X_j}(x- \overline{x})(x- \overline{x})^T

其中欢伏,\overline{x}是整體的均值

那么S_b 可以用 S_t - S_w 來表示(下面的推導來自熊貓學寫字的博客,符號有一些差異)

其中:

代入原式:

也就是:
S_b = \sum\limits_{j=1}^{k}N_j(\mu_j-\mu)(\mu_j-\mu)^T

現在我們的優(yōu)化目標完全求解出來了亿乳,但是還有一個問題就是現在 W^TS_bWW^TS_wW 都是矩陣硝拧,不是標量,無法作為一個標量函數來優(yōu)化:

\underbrace{arg\;max}_W\;\;J(W) = \frac{W^TS_bW}{W^TS_wW}

一種解決方法是使用行列式的值來替換矩陣葛假,解釋是說實際上是矩陣特征值的積障陶,一個特征值可以表示在該特征向量上的發(fā)散程度,因此我們可以使用行列式來計算桐款。

也就是說我們的優(yōu)化目標變?yōu)椋?/p>

\underbrace{arg\;max}_W\;\;J(W) = \frac{|W^TS_bW|}{|W^TS_wW|}

這樣使用之前的拉格朗日乘子法就可以輕松解決咸这,結果也和上面是一樣的。

不過需要注意的是由于S_b的秩最大為k?1魔眨,所以S_2^{-1}S_b的特征向量數目不會超過k?1媳维,所以我們投影后的d<=(k?1)酿雪。(因為S_b中每個μ_j ? μ的秩為1,因此協(xié)方差矩陣相加后最大的秩為k(矩陣的秩小于等于各個相加矩陣的秩的和)侄刽,但是由于如果我們知道前k-1個μ_j后指黎,最后一個μ_k可以由前k-1個μ_j線性表示,因此S_b的秩最大為k-1州丹,即特征向量最多有k-1個醋安。

另一種解決方法是取矩陣對角線之和,也就是特征值之和:

\underbrace{arg\;max}_W\;\;J(W) = \frac{\prod\limits_{diag}W^TS_bW}{\prod\limits_{diag}W^TS_wW}

優(yōu)化過程可以轉化為:

J(W) = \frac{\prod\limits_{i=1}^dw_i^TS_bw_i}{\prod\limits_{i=1}^dw_i^TS_ww_i} = \prod\limits_{i=1}^d\frac{w_i^TS_bw_i}{w_i^TS_ww_i}

那么根據廣義廣義瑞利商即可求得和上面一樣的結果墓毒。


五吓揪、LDA算法流程

輸入:數據集D=\{(x_1,y_1), (x_2,y_2), ...,((x_m,y_m))\},其中任意樣本x_i為n維向y_i \in \{C_1,C_2,...,C_k\}所计,降維到的維度d:

  1. 計算S_w 柠辞、S_bS_w^{-1}S_b

  2. 計算 S_w^{-1}S_b的最大的d個特征值和對應的d個特征向量(w_1,w_2,...w_d),得到投影矩陣W

  3. 對樣本集中的每一個樣本特征x_i,轉化為新的樣本z_i=W^Tx_i

  4. 得到降維后的數據


六主胧、LDA和PCA

LDA的優(yōu)缺點:


LDA和PCA的比較:


七叭首、sklearn實現

class sklearn.discriminant_analysis.LinearDiscriminantAnalysis(solver='svd', shrinkage=None, priors=None, n_components=None, store_covariance=False, tol=0.0001)
Parameters:
  • solver: str類型,默認值為‘svd’
    svd:使用奇異值分解求解踪栋,不用計算協(xié)方差矩陣焙格,適用于特征數量很大的情形,無法使用參數收縮(shrinkage)
    lsqr:最小平方QR分解夷都,可以結合shrinkage使用
    eigen:特征值分解眷唉,可以結合shrinkage使用

  • shrinkage: str or float類型,默認值為None
    是否使用參數收縮
    None:不使用參數收縮
    auto:str损肛,使用Ledoit-Wolf lemma
    浮點數:自定義收縮比例

  • components:int類型厢破,需要保留的特征個數,小于等于n-1

Attributes:
  • covariances_:每個類的協(xié)方差矩陣治拿, shape = [n_features, n_features]

  • means_:類均值摩泪,shape = [n_classes, n_features]

  • priors_:歸一化的先驗概率

  • rotations_:LDA分析得到的主軸,shape [n_features, n_component]

  • scalings_:數組列表劫谅,每個高斯分布的方差σ

import numpy as np
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
y = np.array([1, 1, 1, 2, 2, 2])

clf = LinearDiscriminantAnalysis()
clf.fit(X, y)

LinearDiscriminantAnalysis(n_components=None, priors=None, shrinkage=None,
              solver='svd', store_covariance=False, tol=0.0001)

print(clf.predict([[-0.8, -1]]))

>> [1]


參考:

  1. 線性判別分析LDA詳解
  2. 線性判別分析LDA原理總結
  3. https://blog.csdn.net/liuweiyuxiang/article/details/78874106
  4. https://blog.csdn.net/u013719780/article/details/78298264
  5. https://www.cnblogs.com/solong1989/p/9593555.html
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末见坑,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子捏检,更是在濱河造成了極大的恐慌荞驴,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贯城,死亡現場離奇詭異熊楼,居然都是意外死亡,警方通過查閱死者的電腦和手機能犯,發(fā)現死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門鲫骗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來犬耻,“玉大人,你說我怎么就攤上這事执泰≌泶牛” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵术吝,是天一觀的道長计济。 經常有香客問我,道長排苍,這世上最難降的妖魔是什么沦寂? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮淘衙,結果婚禮上凑队,老公的妹妹穿的比我還像新娘。我一直安慰自己幔翰,他們只是感情好,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布西壮。 她就那樣靜靜地躺著遗增,像睡著了一般。 火紅的嫁衣襯著肌膚如雪款青。 梳的紋絲不亂的頭發(fā)上做修,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天,我揣著相機與錄音抡草,去河邊找鬼饰及。 笑死,一個胖子當著我的面吹牛康震,可吹牛的內容都是我干的燎含。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼腿短,長吁一口氣:“原來是場噩夢啊……” “哼屏箍!你這毒婦竟也來了?” 一聲冷哼從身側響起橘忱,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤赴魁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后钝诚,有當地人在樹林里發(fā)現了一具尸體颖御,經...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年凝颇,在試婚紗的時候發(fā)現自己被綠了潘拱。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疹鳄。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖泽铛,靈堂內的尸體忽然破棺而出尚辑,到底是詐尸還是另有隱情,我是刑警寧澤盔腔,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布杠茬,位于F島的核電站,受9級特大地震影響弛随,放射性物質發(fā)生泄漏瓢喉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一舀透、第九天 我趴在偏房一處隱蔽的房頂上張望栓票。 院中可真熱鬧,春花似錦愕够、人聲如沸走贪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽坠狡。三九已至,卻和暖如春遂跟,著一層夾襖步出監(jiān)牢的瞬間逃沿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工幻锁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留凯亮,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓哄尔,卻偏偏與公主長得像假消,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子究飞,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內容

  • LDA的原理是置谦,將帶上標簽的數據(點),通過投影的方法亿傅,投影到維度更低的空間中媒峡,使得投影后的點,會形成按類別區(qū)分葵擎,...
    五秋木閱讀 2,914評論 0 2
  • 沒能深入的理解到溝通的作用谅阿,導致重復的造輪子,造的輪子還不能運行,交流溝通至關重要签餐。 在同一臺 電腦上啟多個服務寓涨,...
    zizl_zq閱讀 343評論 2 1
  • 我寫我的詩詞戒良,你讀你的感受,可能感同身受冠摄,也可以無關你我——副標題 詩人 應該具有比常人更加細致的觀察能力或習慣糯崎,...
    望舍閱讀 227評論 3 10
  • 銀行家算法銀行家算法是一種最有代表性的避免[死鎖]的算法。在避免死鎖方法中允許進程動態(tài)地申請資源河泳,但系統(tǒng)在進行資源...
    natewang閱讀 817評論 0 0
  • 人們總喜歡做飛蛾沃呢,撲火。當然我也不例外拆挥。希望自己別太固執(zhí)
    Amoonlight閱讀 159評論 0 0