LDA算法原理及matlab实现
轉(zhuǎn)自:http://blog.csdn.net/porly/article/details/8020696
https://blog.csdn.net/dulingtingzi/article/details/53104335
1.?LDA是什么
線(xiàn)性判別式分析(Linear Discriminant Analysis),簡(jiǎn)稱(chēng)為L(zhǎng)DA。也稱(chēng)為Fisher線(xiàn)性判別(Fisher Linear Discriminant,FLD),是模式識(shí)別的經(jīng)典算法,在1996年由Belhumeur引入模式識(shí)別和人工智能領(lǐng)域。
基本思想是將高維的模式樣本投影到最佳鑒別矢量空間,以達(dá)到抽取分類(lèi)信息和壓縮特征空間維數(shù)的效果,投影后保證模式樣本在新的子空間有最大的類(lèi)間距離和最小的類(lèi)內(nèi)距離,即模式在該空間中有最佳的可分離性。
LDA與前面介紹過(guò)的PCA都是常用的降維技術(shù)。PCA主要是從特征的協(xié)方差角度,去找到比較好的投影方式。LDA更多的是考慮了標(biāo)注,即希望投影后不同類(lèi)別之間數(shù)據(jù)點(diǎn)的距離更大,同一類(lèi)別的數(shù)據(jù)點(diǎn)更緊湊。
下面給出一個(gè)例子,說(shuō)明LDA的目標(biāo)。
?
?????? 可以看到兩個(gè)類(lèi)別,一個(gè)綠色類(lèi)別,一個(gè)紅色類(lèi)別。左圖是兩個(gè)類(lèi)別的原始數(shù)據(jù),現(xiàn)在要求將數(shù)據(jù)從二維降維到一維。直接投影到x1軸或者x2軸,不同類(lèi)別之間會(huì)有重復(fù),導(dǎo)致分類(lèi)效果下降。右圖映射到的直線(xiàn)就是用LDA方法計(jì)算得到的,可以看到,紅色類(lèi)別和綠色類(lèi)別在映射之后之間的距離是最大的,而且每個(gè)類(lèi)別內(nèi)部點(diǎn)的離散程度是最小的(或者說(shuō)聚集程度是最大的)。
這里還有一個(gè)LDA的例子:
?
下圖是一個(gè)LDA和PCA區(qū)別的例子:
???????兩個(gè)類(lèi)別,class1的點(diǎn)都是圓圈,class2的點(diǎn)都是十字。圖中有兩條直線(xiàn),斜率在1左右的這條直線(xiàn)是PCA選擇的映射直線(xiàn),斜率在 -1左右的這條直線(xiàn)是LDA選擇的映射直線(xiàn)。其余不在這兩條直線(xiàn)上的點(diǎn)是原始數(shù)據(jù)點(diǎn)。可以看到由于LDA考慮了“類(lèi)別”這個(gè)信息(即標(biāo)注),映射后,可以很好的將class1和class2的點(diǎn)區(qū)分開(kāi)。也就是說(shuō),LDA是以分類(lèi)為導(dǎo)向的,考慮的是如何選擇投影方向使得分類(lèi)更好,是有監(jiān)督的;而PCA是一種無(wú)監(jiān)督的降維方式,它只是單純的降維,它考慮的是如何選擇投影面才能使得降維以后的樣本信息保留的最大(而這是通過(guò)方差大來(lái)體現(xiàn)的)。
2. LDA的一些說(shuō)明
?? 第一,降維后的維度是多少?
???? PCA降維是直接和數(shù)據(jù)維度相關(guān)的,比如原始數(shù)據(jù)是n維的,那么PCA后,可以任意選取1維、2維,一直到n維都行(當(dāng)然是對(duì)應(yīng)特征值大的那些)。LDA 降維是直接和類(lèi)別的個(gè)數(shù)相關(guān)的,與數(shù)據(jù)本身的維度沒(méi)關(guān)系,比如原始數(shù)據(jù)是n維的,一共有C個(gè)類(lèi)別,那么LDA降維之后,一般就是1維,2維到C-1維進(jìn)行選擇(當(dāng)然對(duì)應(yīng)的特征值也是最大的一些),舉個(gè)例子,假設(shè)圖象分類(lèi),兩個(gè)類(lèi)別正例反例,每個(gè)圖象10000維特征,那么LDA之后,就只有1維特征,并且這維特征的分類(lèi)能力最好。
PS:對(duì)于很多兩類(lèi)分類(lèi)的情況,LDA之后就剩下1維,找到分類(lèi)效果最好的一個(gè)閾值貌似就可以了。
?? 第二,投影的坐標(biāo)系是否正交
??? PCA投影的坐標(biāo)系都是正交的,而LDA根據(jù)類(lèi)別的標(biāo)注,關(guān)注分類(lèi)能力,因此不保證投影到的坐標(biāo)系是正交的(一般都不正交)。
3. LDA計(jì)算過(guò)程(兩個(gè)類(lèi)別)
這一節(jié),主要討論只有兩個(gè)類(lèi)別的數(shù)據(jù),LDA的計(jì)算。現(xiàn)在要找到一個(gè)向量w,將數(shù)據(jù)x投影到w上去之后,得到新的數(shù)據(jù)y。第一,為了實(shí)現(xiàn)投影后的兩個(gè)類(lèi)別的距離較遠(yuǎn),用映射后兩個(gè)類(lèi)別的均值差的絕對(duì)值來(lái)度量。第二,為了實(shí)現(xiàn)投影后,每個(gè)類(lèi)內(nèi)部數(shù)據(jù)點(diǎn)比較聚集,用投影后每個(gè)類(lèi)別的方差來(lái)度量。
類(lèi)別i的均值:
???
????類(lèi)別i投影后的均值(實(shí)際上等于mi的投影):
????
????投影后均值差的絕對(duì)值:
????
????投影后的方差(這里的y是類(lèi)別i中數(shù)據(jù)投影后的數(shù)據(jù),即y=w_t * x):
????
????目標(biāo)優(yōu)化函數(shù)為:
????
????下面通過(guò)展開(kāi)m'和s',定義S_B和S_W:
優(yōu)化目標(biāo)J(w)改寫(xiě)如下,這樣是為了方便推導(dǎo)出計(jì)算w的方法。
????
????推導(dǎo)過(guò)程忽略了,最后推導(dǎo)結(jié)果如下:
??
假設(shè)數(shù)據(jù)是n維特征,m個(gè)數(shù)據(jù),分類(lèi)個(gè)數(shù)為2。那么Sw實(shí)際上是每個(gè)類(lèi)別的協(xié)方差矩陣之和,每個(gè)類(lèi)別的協(xié)方差矩陣都是n*n的,因此Sw是n*n的,m1-m2是n*1的。計(jì)算得到的w是n*1的,即w將維特征映射為1維。
PS:這里不用糾結(jié)與Sw的協(xié)方差矩陣形式,實(shí)際上這是拆拆開(kāi)來(lái)w和w_t后的結(jié)果,實(shí)際上w*Sw*w_t后,仍舊是一個(gè)數(shù)值,即表示兩個(gè)類(lèi)的投影后方差之和。
4. LDA計(jì)算過(guò)程(多個(gè)類(lèi)別)
???? 對(duì)于S_w,就是“兩個(gè)類(lèi)別的協(xié)方差矩陣之和”變成了“多個(gè)類(lèi)別的協(xié)方差矩陣之和”。
?? ?
???? 對(duì)于S_b,以前是“兩個(gè)類(lèi)別的均值之差的絕對(duì)值”,現(xiàn)在多個(gè)類(lèi)別了,怎么計(jì)算呢?計(jì)算任意兩個(gè)類(lèi)別之間的均值之差的絕對(duì)值之和?這樣對(duì)于N個(gè)類(lèi)別,需要 C(N,2)次計(jì)算,這可能是一個(gè)方法,不過(guò)LDA使用的方法,計(jì)算每個(gè)類(lèi)別的均值與所有類(lèi)別均值的差異,并且對(duì)每個(gè)類(lèi)別的數(shù)據(jù)量進(jìn)行加權(quán)處理。下式中,m為所有類(lèi)別的均值,m_i為類(lèi)別i的均值,n_i為類(lèi)別i的數(shù)據(jù)量。
????
?????? 對(duì)于n維特征、C個(gè)類(lèi)別、m個(gè)樣本的數(shù)據(jù),是將n維數(shù)據(jù)映射為C-1維。即所求的w是一個(gè)n*(c-1)的矩陣。S_w是一個(gè)n*n的矩陣(沒(méi)有除以樣本數(shù)的協(xié)方差矩陣之和),S_B是一個(gè)C*C的矩陣,實(shí)際上S_B矩陣的的秩最多是C-1,這是因?yàn)閚_i*(m_i-m)這c向量實(shí)際上是線(xiàn)性相關(guān)的,因?yàn)樗麄兊暮褪蔷祄的常數(shù)倍。這導(dǎo)致后面求解w,實(shí)際上是求出C-1個(gè)向量一個(gè)構(gòu)成的一個(gè)w。
具體計(jì)算忽略。
下面就是一個(gè)三個(gè)類(lèi)別的例子:?
4. LDA其他變種
如果原始數(shù)據(jù)投影后,仍舊不能很好的分開(kāi),那么Kernel LDA是一個(gè)解決方法。
LDA在計(jì)算量上與數(shù)據(jù)的維度有關(guān),2DLDA能夠大大減小LDA計(jì)算量。
5. LDA的一些問(wèn)題
第一,LDA最多投影出C-1維特征,如果需要更多特征,則要引入其他方法。
第二,LDA假設(shè)數(shù)據(jù)服從單峰高斯分布,比如下面的復(fù)雜數(shù)據(jù)結(jié)構(gòu)。
5. 參考
Introduction to LDA
Linear Discriminant Analysis - A Brief Tutorial
??http://www.aiaccess.net/English/Glossaries/GlosMod/e_gm_fisher_discriminant.htm
線(xiàn)性判別分析(Linear Discriminant Analysis, LDA)算法分析
轉(zhuǎn)載自:http://blog.csdn.net/jnulzl/article/details/49894041http://blog.csdn.net/jnulzl/article/details/49894041
一、前言
最近由于研究需要,要用到線(xiàn)性判別分析(LDA)。于是找了很多資料來(lái)看,結(jié)果發(fā)現(xiàn)大部分講的都是理論知識(shí),因此最后還是看的一知半解,后來(lái)終于找到了個(gè)英文的文檔,作者由PCA引入LDA,看過(guò)后豁然開(kāi)朗,主要是文檔中有詳細(xì)的例子,為了保持原版在此就直接粘貼過(guò)來(lái)了——后面的例子是結(jié)合MATLAB實(shí)現(xiàn)的!
二、LDA理論詳解
三、LDA實(shí)例詳解
下面是作者文檔中配的一個(gè)具體例子,其中的代碼是MATLAB代碼。
四、相關(guān)的中文LDA資料
除了上面英文版的LDA外,我感覺(jué)以下關(guān)于LDA的中文文章講的也是挺不錯(cuò)的:
1、線(xiàn)性判別分析(Linear Discriminant Analysis)(一);
2、線(xiàn)性判別分析(Linear Discriminant Analysis, LDA)算法分析;
3、LDA 線(xiàn)性判別分析;
4、機(jī)器學(xué)習(xí)中的數(shù)學(xué)(4)-線(xiàn)性判別分析(LDA), 主成分分析(PCA)。
LDA詳細(xì)推導(dǎo):
總結(jié)
以上是生活随笔為你收集整理的LDA算法原理及matlab实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Podfile的简单使用
- 下一篇: 雷达篇(二)线性调频信号公式推导及mat