LDA算法——线性判别
目錄
一、前言
二、什么是LDA?
三、LDA原理
1.二分類問題
2.多分類問題
3.幾點(diǎn)說明
?四、算法實(shí)現(xiàn)
一、前言
? ? ? ? 之前我們已經(jīng)介紹過PCA算法,這是一種無監(jiān)督的降維方法,可以將高維數(shù)據(jù)轉(zhuǎn)化為低維數(shù)據(jù)處理。然而,PCA總是能適用嗎?
? ? ? ? 考慮如下數(shù)據(jù)點(diǎn):
? ? ? ? ?由PCA的原理我們可知,這些數(shù)據(jù)點(diǎn)在經(jīng)PCA處理后會被映射到x軸上,如下所示:
? ? ? ? 可以發(fā)現(xiàn),投影后,紅色數(shù)據(jù)點(diǎn)和藍(lán)色數(shù)據(jù)點(diǎn)并不能很好地區(qū)分開。思考其背后的原因,在這個(gè)例子中,我們的數(shù)據(jù)點(diǎn)有了類別標(biāo)簽,而PCA是一種無監(jiān)督學(xué)習(xí)算法,它會對所有類別的數(shù)據(jù)點(diǎn)?一視同仁,所以在分類問題中,PCA總是顯得乏力。事實(shí)上,相比于X軸,將數(shù)據(jù)點(diǎn)投影到Y(jié)軸是一個(gè)更優(yōu)選擇:
? ? ? ? ?如上圖所示,將數(shù)據(jù)點(diǎn)投影到Y(jié)軸可以將兩個(gè)類別的數(shù)據(jù)點(diǎn)很好地區(qū)分開來。那么我們該如何找到這種投影方式呢,下面我們將介紹一種新的降維方法——LDA算法。
二、什么是LDA?
? ? ? ? 線性判別分析(LDA),同PCA類似,也是一種降維算法,不一樣的是,LDA是一種監(jiān)督算法,它需要用到類別信息。LDA算法的思路同PCA一致,即通過某種線性投影,將原本高維空間中的一些數(shù)據(jù),映射到更低維度的空間中,但LDA算法要求投影后的數(shù)據(jù)滿足:1.同類別的數(shù)據(jù)之間盡可能地接近。2.不同類別的數(shù)據(jù)之間盡可能地遠(yuǎn)離。
三、LDA原理
1.二分類問題
? ? ? ? 從最簡單的二分類問題開始討論。根據(jù)LDA的投影目標(biāo),我們可以得到我們要優(yōu)化的目標(biāo)如下:
? ? ? ? 其中,代表投影后兩個(gè)類別的數(shù)據(jù)的中心點(diǎn),代表投影后兩個(gè)類別的數(shù)據(jù)的標(biāo)準(zhǔn)差。同PCA一致,我們一般用方差來表示數(shù)據(jù)的離散散程度,觀察優(yōu)化目標(biāo),分子衡量的是投影后兩個(gè)類別的數(shù)據(jù)中心點(diǎn)的距離,而分母衡量的是投影后兩個(gè)類別的數(shù)據(jù)各自的離散程度。同類別的數(shù)據(jù)越接近(LDA投影目標(biāo)1),分母越小,越大;不同類別的數(shù)據(jù)越遠(yuǎn)離(LDA投影目標(biāo)2),分子越大,越大,目標(biāo)合理。
? ? ? ? 方便起見,設(shè)為原始數(shù)據(jù)點(diǎn),分別為原始數(shù)據(jù)的中心點(diǎn),為投影向量,則有:
? ? ? ? 優(yōu)化目標(biāo)即為:
? ? ? ? 不妨設(shè),則可簡化為。
? ? ? ? 對求導(dǎo),應(yīng)有:
? ? ? ? 化簡,得:
? ? ? ? 等式兩邊同除以,得:
? ? ? ? ? ?變形,得:
? ? ? ? 顯然,這又是一個(gè)矩陣分解問題,是矩陣的特征值,同時(shí)也是我們優(yōu)化的目標(biāo),而即為對應(yīng)的特征值,也是投影向量,所以我們將矩陣分解得到的特征值從大到小排列,然后取最大的幾個(gè)特征值對應(yīng)的特征向量作為我們的投影向量。
? ? ? ? 觀察式子,由于,代入,得:
? ? ? ? 由于代表的是投影后兩類數(shù)據(jù)中心點(diǎn)間的距離,我們可以用常數(shù)代替,于是有:
? ? ? ? 對于投影向量,我們只需要求得它的方向,對于它的大小(縮放程度)并無要求,所以我們最終求得的投影向量即為。通過這種方法,我們并不需要對矩陣進(jìn)行分解便能求得投影向量,大大減少了計(jì)算量。
2.多分類問題
? ? ? ?對二分類問題進(jìn)行推廣,考慮多分類問題。同樣,投影的目的仍是使得同類數(shù)據(jù)點(diǎn)盡可能近,不同類別的數(shù)據(jù)點(diǎn)盡可能遠(yuǎn)。這里需要對優(yōu)化目標(biāo)做適當(dāng)改變,如下:
? ? ? ? 其中,和二分類問題一致,仍是第i類數(shù)據(jù)的中心點(diǎn)和標(biāo)準(zhǔn)差,而則代表所有數(shù)據(jù)的中心,代表第i個(gè)類別的數(shù)據(jù)個(gè)數(shù)。仔細(xì)觀察,可以發(fā)現(xiàn),目標(biāo)的分母仍為各類別數(shù)據(jù)投影后的離散程度,而分子則是投影后各類別數(shù)據(jù)中心距所有數(shù)據(jù)中心點(diǎn)的距離的加權(quán)平方和,同樣是衡量不同類別數(shù)據(jù)點(diǎn)的分離程度。優(yōu)化的目標(biāo)同二分類問題一致,重點(diǎn)關(guān)注LDA投影目標(biāo),萬變不離其宗。
? ? ? ? 以二分類問題為例進(jìn)行驗(yàn)證,有:
? ? ? ? 同樣,我們只需要知道投影的方向,所以對于常數(shù)項(xiàng),其只控制投影后數(shù)據(jù)點(diǎn)的縮放,并不影響最終結(jié)果,可以忽略??梢园l(fā)現(xiàn),用多分類問題的公式計(jì)算出來的結(jié)果同二分類的計(jì)算公式完全一致。
3.幾點(diǎn)說明
? ? ? ? (1).維度必減少
? ? ? ? PCA算法降維可以理解為旋轉(zhuǎn)坐標(biāo)軸,新的坐標(biāo)下每條軸作為一個(gè)維度也即成分,對于差距不大的維度可以略去從而達(dá)到降維的目的,也就是說實(shí)際上PCA算法可以將N維數(shù)據(jù)仍然變換為N維數(shù)據(jù),然后可視情況刪減維度。但LDA算法不盡然,使用LDA算法時(shí),新的坐標(biāo)維度必會減少。
? ? ? ? 以二分類為例,觀察式子,由于,可知為奇異矩陣(它的秩最多為C-1),從而可以知道也必為奇異矩陣,所以它分解后必有一個(gè)特征值為0,我們只能得到C-1個(gè)投影向量,C為類別個(gè)數(shù)。
? ? ? ? (2).投影后各維度之間不一定正交
????????不一定是實(shí)對稱矩陣,所以它分解后得到的特征向量未必正交。
? ? ? ? (3).可能無解
? ? ? ? 當(dāng)樣本點(diǎn)個(gè)數(shù)少于樣本維度時(shí),會變?yōu)槠娈惥仃?#xff0c;無法求逆。在這種情況下可能需要先用PCA降維,再使用LDA。
? ? ? ? (4).無法適用
? ? ? ? LDA并不是萬能的,當(dāng)同類別數(shù)據(jù)組成對角時(shí),如下所示:
? ? ? ? 對于這種情況,我們可以發(fā)現(xiàn),無論怎么投影均無法將兩類數(shù)據(jù)點(diǎn)很好地區(qū)分開來。事實(shí)上,對于這種情況,普通的線性投影均束手無策,應(yīng)該先增加維度再考慮區(qū)分。
? ? ? ? 此外,當(dāng)不同類別的數(shù)據(jù)的中心重合,即時(shí),有=0,此時(shí)LDA也不再適用。
? ? ? ? (5).對某些分類問題,PCA性能可能優(yōu)于LDA
? ? ? ? 當(dāng)數(shù)據(jù)重合度過高時(shí),如下所示:
? ? ? ? LDA會選擇往Y軸方向進(jìn)行投影,而PCA?由于不考慮類別信息,它會選擇往X軸上進(jìn)行投影。在這種情境下,PCA不失為一種更優(yōu)選擇。
?四、算法實(shí)現(xiàn)
? ? ? ? 同樣,根據(jù)前面的介紹,我們可以得到線性判別分析的一般步驟:給定樣本,先中心化,然后求矩陣和,再對矩陣進(jìn)行特征分解,代碼實(shí)現(xiàn)如下:
? ? ? ? 當(dāng)然,也可以不進(jìn)行特征分解,直接套用公式?:
? ? ? ? ?sklearn庫里直接封裝好了模型,可以直接使用:
? ? ? ? ?三種方法得到的特征向量分別為[0, -1],[0,-2],[0,8],標(biāo)準(zhǔn)化之后均為[0, 1],結(jié)果一致,即均投影到y(tǒng)軸上。觀察特征分解結(jié)果,可以發(fā)現(xiàn),有一個(gè)特征值為0,與前面對LDA的探討一致。,
總結(jié)
以上是生活随笔為你收集整理的LDA算法——线性判别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: linux九九乘法表,linux she
- 下一篇: 用 C, C++ 读取DICOM文件
