机器学习-降维方法-有监督学习:LDA算法(线性判别分析)【流程:①类内散度矩阵Sw->②类间散度矩阵Sb->计算Sw^-1Sb的特征值、特征向量W->得到投影矩阵W->将样本X通过W投影进行降维】
LDA (Linear Discriminant Analysis, 線性判別分析)是一種有監督學習算法,同時經常被用來對數據進行降維。
相比于PCA,LDA可以作為一種有監督的降維算法。在PCA中,算法沒有考慮數據的標簽(類別),PCA只是把原數據映射到一些方差比較大的方向上而已。
LDA是一種監督學習的降維技術,也就是說它的數據集的每個樣本是有類別輸出的。這點和PCA不同。PCA是不考慮樣本類別輸出的無監督降維技術。
LDA的中心思想:投影后類內方差最小,類間方差最大。要將數據在低維度上進行投影,投影后希望每一種類別數據的投影點盡可能的接近,而不同類別的數據的類別中心之間的距離盡可能的大。
上圖中國提供了兩種投影方式,哪一種能更好的滿足我們的標準呢?從直觀上可以看出,右圖要比左圖的投影效果好,因為:
- 右圖的紅色數據和藍色數據各個較為集中,且類別之間的距離明顯。
- 左圖則在邊界處數據混雜。
以上就是LDA的主要思想了,當然在實際應用中,我們的數據是多個類別的,我們的原始數據一般也是超過二維的,投影后的也一般不是直線,而是一個低維的超平面。
一、LDA數學推導
1、“協方差矩陣”、“散度矩陣” 的關系
在機器學習模式識別中,經常需要應用到協方差矩陣C和散布矩陣S。如在PCA主成分分析中,需要計算樣本的散度矩陣,有的論文是計算協方差矩陣。實質上二者意義差不多,散布矩陣(散度矩陣)前乘以系數1/(n-1)就可以得到協方差矩陣了。
在模式識別的教程中,散布矩陣也稱為散度矩陣,有的也稱為類內離散度矩陣或者類內離差陣,用一個等式關系可表示為:
散度矩陣=類內離散度矩陣=類內離差陣=協方差矩陣×(n-1)\text{散度矩陣=類內離散度矩陣=類內離差陣=協方差矩陣×(n-1)}散度矩陣=類內離散度矩陣=類內離差陣=協方差矩陣×(n-1)
2、LDA的原理
現在我們首先從比較簡單的二類LDA入手,嚴謹的分析LDA的原理:
- 假設我們的數據集D={(x1,y1),(x2,y2),...,((xm,ym))}D=\{(x_1,y_1), (x_2,y_2), ...,((x_m,y_m))\}D={(x1?,y1?),(x2?,y2?),...,((xm?,ym?))},其中任意樣本xix_ixi?為n維向量,yi∈{0,1}y_i \in \{0,1\}yi?∈{0,1}。我們定義Nj(j=0,1)N_j(j=0,1)Nj?(j=0,1)為第j類樣本的個數,Xj(j=0,1)X_j(j=0,1)Xj?(j=0,1)為第j類樣本的集合,而μj(j=0,1)\mu_j(j=0,1)μj?(j=0,1)為第j類樣本的均值向量,定義Σj(j=0,1)\Sigma_j(j=0,1)Σj?(j=0,1)為第j類樣本的協方差矩陣(嚴格說是缺少分母部分的協方差矩陣)。
- μj\mu_jμj?的表達式為:μj=1Nj∑x∈Xjx(j=0,1)\mu_j = \frac{1}{N_j}\sum\limits_{x \in X_j}x\;\;(j=0,1)μj?=Nj?1?x∈Xj?∑?x(j=0,1)
- Σj\Sigma_jΣj?的表達式為:Σj=∑x∈Xj(x?μj)(x?μj)T(j=0,1)\Sigma_j = \sum\limits_{x \in X_j}(x-\mu_j)(x-\mu_j)^T\;\;(j=0,1)Σj?=x∈Xj?∑?(x?μj?)(x?μj?)T(j=0,1)
- 由于是兩類數據,因此我們只需要將數據投影到一條直線上即可。假設我們的投影直線是向量www,則對任意一個樣本本xix_ixi?,它在直線www的投影為wTxiw^Tx_iwTxi?,對于我們的兩個類別的中心點μ0,μ1\mu_0,\mu_1μ0?,μ1?,在在直線www的投影為wTμ0w^T\mu_0wTμ0?和wTμ1w^T\mu_1wTμ1?。由于LDA需要讓不同類別的數據的類別中心之間的距離盡可能的大,也就是我們要最大化∣∣wTμ0?wTμ1∣∣22||w^T\mu_0-w^T\mu_1||_2^2∣∣wTμ0??wTμ1?∣∣22?,同時我們希望同一種類別數據的投影點盡可能的接近,也就是要同類樣本投影點的協方差wTΣ0ww^T\Sigma_0wwTΣ0?w和wTΣ1ww^T\Sigma_1wwTΣ1?w盡可能的小,即最小化wTΣ0w+wTΣ1ww^T\Sigma_0w+w^T\Sigma_1wwTΣ0?w+wTΣ1?w。綜上所述,我們的優化目標為:argmax?wJ(w)=∣∣wTμ0?wTμ1∣∣22wTΣ0w+wTΣ1w=wT(μ0?μ1)(μ0?μ1)TwwT(Σ0+Σ1)w\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}wargmax??J(w)=wTΣ0?w+wTΣ1?w∣∣wTμ0??wTμ1?∣∣22??=wT(Σ0?+Σ1?)wwT(μ0??μ1?)(μ0??μ1?)Tw?
- 我們一般定義類內散度矩陣SwS_wSw?為:Sw=Σ0+Σ1=∑x∈X0(x?μ0)(x?μ0)T+∑x∈X1(x?μ1)(x?μ1)TS_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)^TSw?=Σ0?+Σ1?=x∈X0?∑?(x?μ0?)(x?μ0?)T+x∈X1?∑?(x?μ1?)(x?μ1?)T
- 同時定義類間散度矩陣SbS_bSb?為:Sb=(μ0?μ1)(μ0?μ1)TS_b = (\mu_0-\mu_1)(\mu_0-\mu_1)^TSb?=(μ0??μ1?)(μ0??μ1?)T
- 這樣我們的優化目標重寫為:argmax?wJ(w)=wTSbwwTSww\underbrace{arg\;max}_w\;\;J(w) = \frac{w^TS_bw}{w^TS_ww} wargmax??J(w)=wTSw?wwTSb?w?
- 要最大化 J(w)J(w)J(w),只需要對 www 求偏導,并令導數等于0:
- 于是得出,
- 由于在簡化的二分類問題中ωTSwω和ωTSBω是兩個數,我們令
- 于是得:
- 整理得:
- 從這里我們可以看出,我們最大化的目標對應了一個矩陣的特征值,于是LDA降維變成了一個求矩陣特征向量的問題。J(ω)就對應了矩陣 Sw?1SBS_w^{?1}S_BSw?1?SB?最大的特征值,而投影方向就是這個特征值對應的特征向量。
- 對于二分類這一問題,由于 SB=(μ1?μ2)(μ1?μ2)TS_B=(\mu_1-\mu_2)(\mu_1-\mu_2)^TSB?=(μ1??μ2?)(μ1??μ2?)T,因此 SBωS_BωSB?ω的方向始終與(μ1?μ2)(μ_1?μ_2)(μ1??μ2?)一致,如果只考慮ω的方向,不考慮其長度,可以得到
ω=Sw?1(μ1?μ2)ω = S_w^{?1}(\mu_1-\mu_2)ω=Sw?1?(μ1??μ2?)
換句話說,我們只需要求 樣本的均值 和 類內方差,就可以馬上得出最佳的投影方向 ωωω。這便是Fisher在1936年提出的線性判別分析。
二、LDA算法流程
輸入:數據集 D={(x1,y1),(x2,y2),...,((xm,ym))}D=\{(x_1,y_1), (x_2,y_2), ...,((x_m,y_m))\}D={(x1?,y1?),(x2?,y2?),...,((xm?,ym?))},其中任意樣本 xix_ixi? 為 nnn 維向量,yi∈{C1,C2,...,Ck}y_i \in \{C_1,C_2,...,C_k\}yi?∈{C1?,C2?,...,Ck?},降維到的維度 ddd。
輸出:降維后的樣本集 D′D'D′
以上就是使用LDA進行降維的算法流程。
實際上LDA除了可以用于降維以外,還可以用于分類。
一個常見的LDA分類基本思想是假設各個類別的樣本數據符合高斯分布,這樣利用LDA進行投影后,可以利用極大似然估計計算各個類別投影數據的均值和方差,進而得到該類別高斯分布的概率密度函數。
當一個新的樣本到來后,我們可以將它投影,然后將投影后的樣本特征分別帶入各個類別的高斯分布概率密度函數,計算它屬于這個類別的概率,最大的概率對應的類別即為預測類別。
由于LDA應用于分類現在似乎也不是那么流行,至少我們公司里沒有用過,這里我就不多講了。
三、PCA與LDA對比
首先我們看看相同點:
我們接著看看不同點:
這點可以從下圖形象的看出,在某些數據分布下LDA比PCA降維較優。
當然,某些某些數據分布下PCA比LDA降維較優,如下圖所示:
1、從數學推導的角度,PCA與LDA有何區別與聯系?
相同點:都轉化為求解矩陣特征值、特征向量的問題。
不同點:
- PCA選擇的是投影后數據方差最大的方向。由于它是無監督的,因此PCA假設方差越大,信息量越多,用主成分來表示原始數據可以去除冗余的維度,達到降維。
- LDA選擇的是投影后類內方差小、類間方差大的方向。其用到了類別標簽信息,為了找到數據中具有判別性的維度,使得原始數據在這些方向上投影后,不同類別盡可能區分開。
2、如何從應用的角度分析其原理的異同?
- 從應用的角度,我們可以掌握一個基本的原則:對無監督的任務使用PCA進行降維,對有監督的則應用LDA。
- LDA是一種監督學習的降維技術,也就是說它的數據集的每個樣本是有類別輸出的。這點和PCA不同。
- PCA是不考慮樣本類別輸出的無監督降維技術。
四、LDA算法小結
LDA算法既可以用來降維,又可以用來分類,但是目前來說,主要還是用于降維。在我們進行圖像識別圖像識別相關的數據分析時,LDA是一個有力的工具。下面總結下LDA算法的優缺點。
LDA算法的主要優點有:
LDA算法的主要缺點有:
參考資料:
線性判別分析LDA原理總結
LDA和PCA降維總結
線性判別分析LDA降維只能降到“類別數-1”的原因
用線性判別分析 LDA 降維
協方差矩陣和散布矩陣(散度矩陣)的意義
總結
以上是生活随笔為你收集整理的机器学习-降维方法-有监督学习:LDA算法(线性判别分析)【流程:①类内散度矩阵Sw->②类间散度矩阵Sb->计算Sw^-1Sb的特征值、特征向量W->得到投影矩阵W->将样本X通过W投影进行降维】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 看拉扎维《模拟CMOS集成电路设计》的一
- 下一篇: http协议 文件下载原理详解