LDA線性判別分析

LDA(Linear Discriminant Analysis)線性判別分析是一種有監(jiān)督數(shù)據(jù)降維算法,它與我們之前提到的PCA都是數(shù)據(jù)清洗過程中最常用的兩種數(shù)據(jù)降維技術(shù)。但它們又有所不同,PCA的核心是將現(xiàn)有數(shù)據(jù)轉(zhuǎn)換到低維度得空間中,數(shù)據(jù)的方差都變得最大。LDA的核心含義是對(duì)將現(xiàn)有數(shù)據(jù)進(jìn)行轉(zhuǎn)換,數(shù)據(jù)類別變得容易區(qū)分,其方差不一定是最大的。

LDA的作用:
1.將數(shù)據(jù)的維度降低,除去那些對(duì)結(jié)果影響不大的特征。如今我們的數(shù)據(jù)集中,數(shù)據(jù)的特征往往會(huì)達(dá)到成百上千維,可是這些維度都會(huì)對(duì)最終結(jié)果產(chǎn)生影響嗎?其實(shí)不然,所以需要對(duì)數(shù)據(jù)進(jìn)行降維處理。
2.將高維度的數(shù)據(jù)轉(zhuǎn)換為低維度的數(shù)據(jù),減小了計(jì)算時(shí)的數(shù)據(jù)量,相應(yīng)的提升了計(jì)算效率。

圖解LDA原理
如圖所示,我們現(xiàn)在有兩類數(shù)據(jù),‘-’,‘x’,外邊的橢圓形是數(shù)據(jù)的外圍輪廓。現(xiàn)在我們沿著圖中的這條新的軸線,對(duì)這兩類數(shù)據(jù)進(jìn)行投影。投影后,數(shù)據(jù)從二維變成了一維,我們希望兩類數(shù)據(jù)在低維空間中能更好的的區(qū)分,也就是離得越遠(yuǎn)越好。如圖所示,用紅色小圓點(diǎn)和紅色小三角形分別表示兩類數(shù)據(jù)的中心點(diǎn),這兩個(gè)點(diǎn)的距離越大越好,兩類數(shù)據(jù)分的越開。

LDA theory introduction.png

如下圖所示,u1,u2分別為紅色,藍(lán)色數(shù)據(jù)的中心點(diǎn),現(xiàn)我們分別將其沿著X1,X2軸進(jìn)行投影。
從圖中可以看出投影到X1軸,兩點(diǎn)之間的間距要大于投影到X2軸,但是投影到X1軸后,兩類數(shù)據(jù)將出現(xiàn)部分重疊,這顯然無法達(dá)到我們對(duì)數(shù)據(jù)進(jìn)行分類的目的。投影到X2軸,雖然u1與u2之間的距離較小,但是可以將兩類數(shù)據(jù)清楚地區(qū)分開。

綜上所述:對(duì)于投影后的數(shù)據(jù),須同時(shí)滿足兩個(gè)要求。1:兩類數(shù)據(jù)之間的距離越大越好,2:每類數(shù)據(jù)越聚集越好。

最終問題的落腳點(diǎn):怎樣找到這條最合適的投影軸?


LDA theory introduction 2.png

LDA的數(shù)學(xué)原理推導(dǎo)

LDA theory.jpg

SKlearn-LDA介紹
1.API文檔

sklearn.discriminant_analysis.LinearDiscriminantAnalysis(solver=’svd’, shrinkage=None, 
priors=None, n_components=None, store_covariance=False, tol=0.0001)

2.參數(shù)說明

  • solver:樣本數(shù)據(jù)的處理方法,字符型,默認(rèn)svd。當(dāng)solver = 'svd'時(shí),svd全稱singular value decomposition,此時(shí)lda不用計(jì)算協(xié)方差矩陣,當(dāng)數(shù)據(jù)特征比較多時(shí),推薦使用'svd'。當(dāng)solver = 'lsqr'時(shí),可與第二個(gè)參數(shù)shrinkage組合使用。當(dāng)solver = 'eigen',可與第二個(gè)參數(shù)Shrinkage組合使用。
  • shrinkage:是否使用參數(shù)收縮,默認(rèn)為None。當(dāng)shrinkage = 'auto'時(shí),使用Ledoit-Wolf lemma。當(dāng)shrinkage是一個(gè)0~1之間的浮點(diǎn)數(shù)的時(shí)候,按照比例進(jìn)行收縮。
  • n_components:int型,要保留的特征個(gè)數(shù),<= n_features - 1。

3.LDA屬性說明

  • covariance_ :協(xié)方差矩陣,[n_features,n_features]
  • explained_variance_ratio_ :方差的比例,[n_components]
  • means_:類均值,[n_classes,n_features]
  • priors_:歸一化的先驗(yàn)概率,[n_classes,]

4.樣例演示
數(shù)據(jù)集下載:鏈接:https://pan.baidu.com/s/1JgTFW0pGvbA6MxFvQ63Nlg
提取碼:j99o

import pandas as pd
from sklearn.preprocessing import LabelEncoder #對(duì)類別值進(jìn)行編碼,
#因?yàn)橛?jì)算機(jī)無法識(shí)別字符型數(shù)值,所以需將其轉(zhuǎn)化為數(shù)值型
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

#由于數(shù)據(jù)集中列沒有名稱,我們自己指定列名
columns = ['sepal length','sepal width','petal length','petal width','category']
data = pd.read_csv('D:\\Py_dataset\\iris.data',names = columns)

#將數(shù)據(jù)劃分為特征X與標(biāo)簽y
X = data[['sepal length','sepal width','petal length','petal width']]
y = data['category']

#對(duì)標(biāo)簽進(jìn)行編碼
lbn = LabelEncoder()
y = lbn.fit_transform(y)
#使用lda對(duì)數(shù)據(jù)進(jìn)行降維
lda = LinearDiscriminantAnalysis(n_components = 2)
X_lda = lda.fit_transform(X,y)
X_lda[:10]
array([[-8.0849532 ,  0.32845422],
       [-7.1471629 , -0.75547326],
       [-7.51137789, -0.23807832],
       [-6.83767561, -0.64288476],
       [-8.15781367,  0.54063935],
       [-7.72363087,  1.48232345],
       [-7.23514662,  0.3771537 ],
       [-7.62974497,  0.01667246],
       [-6.58274132, -0.98737424],
       [-7.36884116, -0.91362729]])

LDA除過能對(duì)數(shù)據(jù)進(jìn)行降維還能對(duì)數(shù)據(jù)進(jìn)行分類,下面是LDA的分類過程。

from sklearn.model_selection import train_test_split

X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.3)
lda = LinearDiscriminantAnalysis()
lda.fit(X_train,y_train)

lda.score(X_test,y_test)
1.0

5.LDA小結(jié)
LDA是有監(jiān)督的數(shù)據(jù)降維方式,其目的是尋找最合適的投影方向,以便將數(shù)據(jù)清楚地分出。
LDA既可用于降維,也可用于分類。
LDA不適用于對(duì)非高斯分布樣本進(jìn)行降維。
LDA最多可將樣本降至k-1維(k為類別的數(shù)量),最少為1維。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容