天天看點

線性判别分析LDA

前言

在主成分分析(PCA)原理總結(機器學習(27)【降維】之主成分分析(PCA)詳解)中對降維算法PCA做了總結。這裡就對另外一種經典的降維方法線性判别分析(Linear Discriminant Analysis, 簡稱LDA)做一個總結。LDA在模式識别領域(比如人臉識别,艦艇識别等圖形圖像識别領域)中有非常廣泛的應用,是以我們有必要了解下它的算法原理。在學習LDA之前,有必要将其自然語言處理領域的LDA差別開來,在自然語言處理領域, LDA是隐含狄利克雷分布(Latent Dirichlet Allocation,簡稱LDA),是一種處理文檔的主題模型。本文隻讨論線性判别分析,是以後面所有的LDA均指線性判别分析。

LDA思想

LDA是一種監督學習的降維技術,也就是說它的資料集的每個樣本是有類别輸出的,這點和PCA不同。PCA是不考慮樣本類别輸出的無監督降維技術。LDA的思想可以用一句話概括,就是“投影後類内方差最小,類間方差最大”,如下圖所示。 我們要将資料在低次元上進行投影,投影後希望每一種類别資料的投影點盡可能的接近,而不同類别的資料的類别中心之間的距離盡可能的大。

線性判别分析LDA

可能還是有點抽象,先看看最簡單的情況。

假設有兩類資料,分别為紅色和藍色,如下圖所示,這些資料特征是二維的,希望将這些資料投影到一維的一條直線,讓每一種類别資料的投影點盡可能的接近,而紅色和藍色資料中心之間的距離盡可能的大。

線性判别分析LDA

上圖中提供了兩種投影方式,哪一種能更好的滿足我們的标準呢?從直覺上可以看出,右圖要比左圖的投影效果好,因為右圖的黑色資料和藍色資料各個較為集中,且類别之間的距離明顯。左圖則在邊界處資料混雜。以上就是LDA的主要思想了,當然在實際應用中,資料是多個類别的,我們的原始資料一般也是超過二維的,投影後的也一般不是直線,而是一個低維的超平面。

LDA原理與流程

線性判别分析LDA
線性判别分析LDA
線性判别分析LDA
線性判别分析LDA

LDA與PCA

LDA用于降維,和PCA有很多相同,也有很多不同的地方,是以值得好好的比較一下兩者的降維異同點。

相同點

1)兩者均可以對資料進行降維。

2)兩者在降維時均使用了矩陣特征分解的思想。

3)兩者都假設資料符合高斯分布。

不同點

1)LDA是有監督的降維方法,而PCA是無監督的降維方法

2)LDA降維最多降到類别數k-1的維數,而PCA沒有這個限制。

3)LDA除了可以用于降維,還可以用于分類。

4)LDA選擇分類性能最好的投影方向,而PCA選擇樣本點投影具有最大方差的方向。這點可以從下圖形象的看出,在某些資料分布下LDA比PCA降維較優。

線性判别分析LDA

當然,某些某些資料分布下PCA比LDA降維較優,如下圖所示:

線性判别分析LDA

LDA小結

LDA算法既可以用來降維,又可以用來分類,但是目前來說,主要還是用于降維。在進行圖像識别相關的資料分析時,LDA是一個有力的工具。下面總結下LDA算法的優缺點。

優點

1)在降維過程中可以使用類别的先驗知識經驗,而像PCA這樣的無監督學習則無法使用類别先驗知識。

2)LDA在樣本分類資訊依賴均值而不是方差的時候,比PCA之類的算法較優。

缺點

1)LDA不适合對非高斯分布樣本進行降維,PCA也有這個問題。

2)LDA降維最多降到類别數k-1的維數,如果我們降維的次元大于k-1,則不能使用LDA。當然目前有一些LDA的進化版算法可以繞過這個問題。

3)LDA在樣本分類資訊依賴方差而不是均值的時候,降維效果不好。

4)LDA可能過度拟合資料。

該文章轉載:https://blog.csdn.net/mbx8x9u/article/details/78739908

LDA代碼python實作:https://github.com/ruthy-wei/MachineLearning/tree/master/LDA

LDA詳解:http://sebastianraschka.com/Articles/2014_python_lda.html

前言

繼續閱讀