高維數(shù)據(jù)如何預(yù)測(cè)分類(lèi)?來(lái)試試這個(gè)簡(jiǎn)單好用又冷門(mén)的機(jī)器學(xué)習(xí)算法——LDA

很多小伙伴經(jīng)??鄲雷约旱奈恼掠蒙鲜裁捶椒梢燥@得與眾不同呢?小云想來(lái)想去,終于想到了一個(gè)好用且冷門(mén)的機(jī)器學(xué)習(xí)算法!它就是一種用于數(shù)據(jù)降維以及分類(lèi)預(yù)測(cè)的機(jī)器學(xué)習(xí)方法——LDA。是不是很少見(jiàn)過(guò)這個(gè)名字?今天就讓小云帶你一起來(lái)學(xué)習(xí)一下吧!
早期的LDA只能處理二分類(lèi)問(wèn)題,后來(lái)被拓展為了“多類(lèi)別線性判別分析”又稱(chēng)“多元判別分析”,將LDA改進(jìn)為多分類(lèi)模型。那么它是如何降維的呢?其實(shí)LDA的本質(zhì)就是將數(shù)據(jù)集投影到具有良好分類(lèi)特征的低維空間上,投影后類(lèi)內(nèi)方差最小、類(lèi)間方差最大,用于表征數(shù)據(jù)結(jié)構(gòu)以及識(shí)別分類(lèi),因此它在高維數(shù)據(jù)集的分析中非常流行。與其它機(jī)器學(xué)習(xí)算法(例如神經(jīng)網(wǎng)絡(luò)、隨機(jī)森林等)相比,LDA的主要優(yōu)點(diǎn)是可更好避免過(guò)擬合以及計(jì)算簡(jiǎn)單。是不是感覺(jué)還不錯(cuò)?
多說(shuō)無(wú)益,代碼食用起來(lái)更佳,接下來(lái)小云將通過(guò)一個(gè)R語(yǔ)言實(shí)現(xiàn)鳶尾花分類(lèi)預(yù)測(cè)的分析案例來(lái)帶大家認(rèn)識(shí)LDA 。分析流程主要分為四步:
Step1:導(dǎo)入相關(guān)包
Step2:數(shù)據(jù)準(zhǔn)備
Step3:模型訓(xùn)練及預(yù)測(cè)
Step4:結(jié)果可視化
代碼展示:
1、導(dǎo)入相關(guān)包
library(MASS)
library(ggplot2)
2、數(shù)據(jù)準(zhǔn)備
下圖展示了鳶尾花數(shù)據(jù)的部分樣本表達(dá),每行代表一個(gè)樣本,每列為其不同的特征,其中Species列為每個(gè)樣本的種類(lèi),也是本次分析的目標(biāo)特征。

nx = 150
#獲取鳶尾花數(shù)據(jù)
irisdata = iris[1:nx, 1:4]
#獲取鳶尾花分類(lèi)結(jié)果
irisgrp = iris[1:nx, 5]
head(irisdata)
?
3、模型訓(xùn)練及預(yù)測(cè)
#模型搭建并訓(xùn)練
lda.sol = lda(irisdata, irisgrp)
#查看模型
lda.sol
#對(duì)數(shù)據(jù)的分類(lèi)進(jìn)行預(yù)測(cè)
result=predict(lda.sol, irisdata)
#展示預(yù)測(cè)分類(lèi)結(jié)果
table(irisgrp,result$class)
P = lda.sol$scaling
# 將均值向量降維
means = lda.sol$means %*% P
# 加權(quán)平均的出總的降維均值向量,權(quán)重就是lda.sol$prior
total_means = as.vector(lda.sol$prior %*% means)
#獲取所有樣本個(gè)數(shù)
n_samples = nrow(irisdata)
# 把樣本降維并平移
x<-as.matrix(irisdata) %*% P - (rep(1, n_samples) %o% total_means)
4、結(jié)果可視化
#查看關(guān)鍵特征下的樣本表達(dá)情況
head(result)
#使用ggplot方法對(duì)樣本分類(lèi)進(jìn)行散點(diǎn)圖繪制
ggplot(cbind(irisdata, x), aes(LD1, LD2, color = irisgrp)) +geom_point() +stat_ellipse(level = 0.95, show.legend = FALSE)
分析結(jié)果展示:



由分析結(jié)果圖可以看出,約98%的數(shù)據(jù)可以被LDA模型分類(lèi)到正確的類(lèi)別,說(shuō)明LDA分類(lèi)器的精度是可靠的,且根據(jù)可視化結(jié)果所得散點(diǎn)圖可以看出,樣本被分為3類(lèi),其中不同顏色代表不同的樣本種類(lèi),同時(shí)可以看到所有樣本在LD1軸上具有較好區(qū)分度,說(shuō)明LD1是最能體現(xiàn)出樣本類(lèi)間差異的重要特征,有了重要特征,小伙伴們就可以利用這個(gè)特征下的樣本表達(dá)情況來(lái)自由發(fā)揮啦!
整個(gè)LDA分析流程到這里就結(jié)束啦,是不是很簡(jiǎn)單?但是也不要掉以輕心哦!最好還是親自動(dòng)手試一試,用自己手頭的數(shù)據(jù)來(lái)試試LDA模型的降維效果以及分類(lèi)預(yù)測(cè)的性能,說(shuō)不定會(huì)有意想不到的驚喜哦!

