最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【視頻】R語言LDA線性判別、QDA二次判別分析分類葡萄酒品質(zhì)數(shù)據(jù)

2023-06-30 23:19 作者:拓端tecdat  | 我要投稿

全文鏈接:https://tecdat.cn/?p=33031

原文出處:拓端數(shù)據(jù)部落公眾號

分析師:Donglei Niu

判別分析(Discriminant analysis)是一種統(tǒng)計分析方法,旨在通過將一組對象(例如觀察數(shù)據(jù))分類到已知類別的組中,來發(fā)現(xiàn)不同組之間的差異。

什么是判別分析

判別分析有兩種主要形式:線性判別分析(LDA)和二次判別分析(QDA)。LDA假設(shè)每個類別的協(xié)方差矩陣相同,并尋找最優(yōu)的判別方向來最大化類別之間的距離。QDA假設(shè)每個類別的協(xié)方差矩陣都不同,并尋找最優(yōu)的判別方向來最大化類別之間的距離,同時也考慮了每個類別的協(xié)方差矩陣。

線性判別分析(LDA)

當(dāng)我們有一個由n個樣本和p 個特征組成的數(shù)據(jù)集時,LDA的目標(biāo)是找到一個線性變換,將數(shù)據(jù)從p維空間映射到k維空間(k <p),使得在新的空間中,同一類別內(nèi)的數(shù)據(jù)點(diǎn)盡可能相似,不同類別之間的數(shù)據(jù)點(diǎn)盡可能分離。

線性判別分析的數(shù)學(xué)原理

目標(biāo)函數(shù)

將上面的公式化簡,得到:

我們最終可以目標(biāo)函數(shù)為

二次判別分析(QDA)

QDA (Quadratic Discriminant Analysis)是一種有監(jiān)督的機(jī)器學(xué)習(xí)算法,用于分類問題。它是 LDA (Linear Discriminant Analysis,線性判別分析)的一種擴(kuò)展形式,與LDA類似,QDA 也是一種基于貝葉斯決策理論的分類器。與LDA不同的是,QDA假設(shè)每個類別的協(xié)方差矩陣不相同,因此在分類時使用的決策邊界是二次曲線。

介紹

數(shù)據(jù)包含有關(guān)葡萄牙“Vinho Verde”葡萄酒的信息。該數(shù)據(jù)集有1599個觀測值和12個變量,分別是固定酸度、揮發(fā)性酸度、檸檬酸、殘?zhí)?、氯化物、游離二氧化硫、總二氧化硫、密度、pH值、硫酸鹽、酒精和質(zhì)量。固定酸度、揮發(fā)性酸度、檸檬酸、殘?zhí)?、氯化物、游離二氧化硫、總二氧化硫、密度、pH、硫酸鹽和酒精是自變量并且是連續(xù)的。質(zhì)量是因變量,根據(jù) 0 到 10 的分?jǐn)?shù)來衡量。

探索性分析

總共有 855 款葡萄酒被歸類為“好”品質(zhì),744 款葡萄酒被歸類為“差”品質(zhì)。固定酸度、揮發(fā)性酸度、檸檬酸、氯化物、游離二氧化硫、總二氧化硫、密度、硫酸鹽和酒精度與葡萄酒質(zhì)量顯著相關(guān)( t 檢驗(yàn)的 P 值 < 0.05),這表明了重要的預(yù)測因子。我們還構(gòu)建了密度圖來探索 11 個連續(xù)變量在“差”和“好”葡萄酒質(zhì)量上的分布。從圖中可以看出,品質(zhì)優(yōu)良的葡萄酒在PH方面沒有差異,而不同類型的葡萄酒在其他變量上存在差異,這與t檢驗(yàn)結(jié)果一致。

na.oit() %>muate(qal= ase_hen(ality>5 ~good", quaity <=5 ~ "poor")) %>%muate(qua= s.fatrqual)) %>%dpeme1 <- rsparentTme(trans = .4)plot = "density", pch = "|",auto.key = list(columns = 2))

圖 1. 葡萄酒品質(zhì)和預(yù)測特征之間的描述圖。
表 1. 優(yōu)質(zhì)和劣質(zhì)葡萄酒的基本特征。

# 在表1中創(chuàng)建一個我們想要的變量b1 <- CeatTableOe(vars ?litars, straa = ’qual’ da winetab

?

模型

我們隨機(jī)選擇 70% 的觀測值作為訓(xùn)練數(shù)據(jù),其余的作為測試數(shù)據(jù)。所有 11 個預(yù)測變量都被納入分析。我們使用線性方法、非線性方法、樹方法和支持向量機(jī)來預(yù)測葡萄酒質(zhì)量的分類。對于線性方法,我們訓(xùn)練(懲罰)邏輯回歸模型和線性判別分析(LDA)。邏輯回歸的假設(shè)包括相互獨(dú)立的觀察結(jié)果以及自變量和對數(shù)幾率的線性關(guān)系。LDA 和 QDA 假設(shè)具有正態(tài)分布的特征,即預(yù)測變量對于“好”和“差”的葡萄酒質(zhì)量都是正態(tài)分布的。對于非線性模型,我們進(jìn)行了廣義加性模型(GAM)、多元自適應(yīng)回歸樣條(MARS)、KNN模型和二次判別分析(QDA)。對于樹模型,我們進(jìn)行了分類樹和隨機(jī)森林模型。還執(zhí)行了具有線性和徑向內(nèi)核的 SVM。我們計算了模型選擇的 ROC 和準(zhǔn)確度,并調(diào)查了變量的重要性。10 折交叉驗(yàn)證 (CV) 用于所有模型。?

inTrai <- cateatPariti(y ?winequal, p = 0.7, lit =FASE)traiData <- wine[inexTr, teDt <wi[-idxTrain,]

線性模型 多元邏輯回歸顯示,在 11 個預(yù)測因子中,揮發(fā)性酸度、檸檬酸、游離二氧化硫、總二氧化硫、硫酸鹽和酒精與葡萄酒質(zhì)量顯著相關(guān)(P 值 < 0.05),解釋了總方差的 25.1%。酒質(zhì)。將該模型應(yīng)用于測試數(shù)據(jù)時,準(zhǔn)確度為 0.75(95%CI:0.71-0.79),ROC 為 0.818,表明數(shù)據(jù)擬合較好。在進(jìn)行懲罰性邏輯回歸時,我們發(fā)現(xiàn)最大化ROC時,最佳調(diào)優(yōu)參數(shù)為alpha=1和lambda=0.00086,準(zhǔn)確度為0.75(95%CI:0.71-0.79),ROC也為0.818。由于 lambda 接近于零且 ROC 與邏輯回歸模型相同,因此懲罰相對較小,

但是,由于邏輯回歸要求自變量之間存在很少或沒有多重共線性,因此模型可能會受到 11 個預(yù)測變量之間的共線性(如果有的話)的干擾。至于LDA,將模型應(yīng)用于測試數(shù)據(jù)時,ROC為0.819,準(zhǔn)確率為0.762(95%CI:0.72-0.80)。預(yù)測葡萄酒品質(zhì)的最重要變量是酒精度、揮發(fā)性酸度和硫酸鹽。與邏輯回歸模型相比,LDA 在滿足正常假設(shè)的情況下,在樣本量較小或類別分離良好的情況下更有幫助。

### 邏輯回歸cl - tranControlmehod =cv" number ?10,summayFunio = TRUE)set.seed(1)moel.gl<- train(x = tainDaa %>% dpyr::selct(-ual),y = trainDaa$qualmetod "glm",metic = OC",tContrl = crl# 檢查預(yù)測因素的重要性summary(odel.m)

# 建立混淆矩陣tetred.prb <- rdct(mod.gl, newdat = tstDattye = "robtest.ped <- rep("good", length(pred.prconfusionMatrix(data = as.factor(test.pred),

?

# 繪制測試ROC圖oc.l <- roc(testa$al, es.pr.rob$god)

## 測試誤差和訓(xùn)練誤差er.st. <- mean(tett$qul!= tt.pred)tranped.obgl <-pric(moel.lmnewda= taiDaa,type = "robmoe.ln <-tai(xtraDa %>% dlyr:seec-qal),y = traDmethd = "met",tueGid = lGrid,mtc = "RO",trontrol ?ctl)plotodel.gl, xTras =uction() lg(x)

#選擇最佳參數(shù)mol.mn$bestune

?

# 混淆矩陣tes.red2 <- rp"good" ngth(test.ed.prob2$good))tst.red2[tespre.prob2$good < 0.5] <- "poorconuionMatridata = as.fcto(test.prd2),

?




?

非線性模型 在 GAM 模型中,只有揮發(fā)性酸度的自由度等于 1,表明線性關(guān)聯(lián),而對所有其他 10 個變量應(yīng)用平滑樣條。

結(jié)果表明,酒精、檸檬酸、殘?zhí)?、硫酸鹽、固定酸度、揮發(fā)性酸度、氯化物和總二氧化硫是顯著的預(yù)測因子(P值<0.05)。

總的來說,這些變量解釋了葡萄酒質(zhì)量總變化的 39.1%。使用測試數(shù)據(jù)的混淆矩陣顯示,GAM 的準(zhǔn)確度為 0.76(95%CI:0.72-0.80),ROC 為 0.829。

MARS 模型表明,在最大化 ROC 時,我們在 11 個預(yù)測變量中包含了 5 個項(xiàng),其中 nprune 等于 5,度數(shù)為 2。這些預(yù)測變量和鉸鏈函數(shù)總共解釋了總方差的 32.2%。根據(jù) MARS 輸出,三個最重要的預(yù)測因子是總二氧化硫、酒精和硫酸鹽。

將 MARS 模型應(yīng)用于測試數(shù)據(jù)時,準(zhǔn)確度為 0.75(95%CI:0.72,0.80),ROC 為 0.823。我們還執(zhí)行了 KNN 模型進(jìn)行分類。當(dāng) k 等于 22 時,ROC 最大化。KNNmodel 的準(zhǔn)確度為 0.63(95%CI:0.59-0.68),ROC 為 0.672。

QDA模型顯示ROC為0.784,準(zhǔn)確率為0.71(95%CI:0.66-0.75)。預(yù)測葡萄酒質(zhì)量的最重要變量是酒精、揮發(fā)性酸度和硫酸鹽。59-0.68),ROC 為 0.672。QDA模型顯示ROC為0.784,準(zhǔn)確率為0.71(95%CI:0.66-0.75)。

預(yù)測葡萄酒質(zhì)量的最重要變量是酒精、揮發(fā)性酸度和硫酸鹽。59-0.68),ROC 為 0.672。QDA模型顯示ROC為0.784,準(zhǔn)確率為0.71(95%CI:0.66-0.75)。預(yù)測葡萄酒質(zhì)量的最重要變量是酒精、揮發(fā)性酸度和硫酸鹽。

GAM 和 MARS 的優(yōu)點(diǎn)是這兩個模型都是非參數(shù)模型,并且能夠處理高度復(fù)雜的非線性關(guān)系。具體來說,MARS 模型可以在模型中包含潛在的交互作用。然而,由于模型的復(fù)雜性、耗時的計算和高度的過擬合傾向是這兩種模型的局限性。對于 KNN 模型,當(dāng) k 很大時,預(yù)測可能不準(zhǔn)確。

### GAMse.see(1)md.gam<- ran(x =trainDta %%dplr::slect(-qal),y = traiat$ual,thod = "am",metri = "RO",trCotrol = ctrl)moel.gm$finlMdel

summary(mel.gam)

# 建立混淆矩陣test.pr.pob3 - prdict(mod.ga nwdata =tstData,tye = "prb")testped3 - rep"good" legt(test.predpob3$goo))testprd3[test.predprob3good < 0.5] <- "pooreferetv = "good")



?

model.mars$finalModel

vpmodl.rs$inlodel)

?



# 繪制測試ROC圖ocmas <- roctestataqua, tes.pred.rob4god)## Stting level: conrol = god, case= poor## Settig diectio: cntrols> caseplot(ro.mars legac.axes = TRE, prin.auc= RUE)plot(soothroc.mars), co = 4, ad =TRUE)

?

errr.tria.mas <-man(tainat$qul ! trai.red.ars)### KNNGrid < epa.gri(k seq(from = 1, to = 40, by = 1))seted(1fknnrainqual ~.,dta = trnData,mthd ="knn"metrrid = kid)ggplot(fitkn

?


# 建立混淆矩陣ts.re.po7 < prdi(ft.kn, ewdt = estDaatype = "prb"

?


### QDAseteed1)%>% pyr:c-ual),y= trataqethod "d"mric = "OC",tContol =ctl)# 建立混淆矩陣tet.pprob <-pedct(mol.da,nedaa = teDta,te = "pb")testred6<- rep(o", leng(est.ped.pob6$goo))

?

?

?

樹方法


基于分類樹,最大化AUC時最終的樹大小為41。測試錯誤率為 0.24,ROC 為 0.809。此分類樹的準(zhǔn)確度為 0.76(95%CI:0.72-0.80)。我們還進(jìn)行了隨機(jī)森林方法來研究變量的重要性。因此,酒精是最重要的變量,其次是硫酸鹽、揮發(fā)性酸度、總二氧化硫、密度、氯化物、固定酸度、檸檬酸、游離二氧化硫和殘?zhí)?。pH 是最不重要的變量。對于隨機(jī)森林模型,測試錯誤率為 0.163,準(zhǔn)確率為 0.84(95%CI:0.80-0.87),ROC 為 0.900。樹方法的一個潛在限制是它們對數(shù)據(jù)的變化很敏感,即數(shù)據(jù)的微小變化可能引起分類樹的較大變化。

# 分類ctr <- tintol(meod ="cv", number = 10,smmryFuton= twoClassSmaet.se(1rart_grid = a.fra(cp = exp(eq(10,-, len =0)))clsste = traqua~., rainDta,metho ="rprttueGrid = patid,trCtrl ?cr)ggt(class.tee,highight =TRE)


## 計算測試誤差rpartpred = icla.te edta =testata, ye = "aw)te.ero.sree = mean(testa$a !=rartpre)rprred_trin ?reic(ss.tre,newdta = raiata, tye ?"raw")# 建立混淆矩陣teste.pob8 <-rdic(cste, edata =tstData,pe = "po"tet.pd8 - rpgod" legthtetred.rb8d))


# 繪制測試ROC圖ro.r <-oc(testaual, tstedrob$od)pot(rc.ctreegy.axes ?TU pit.a = TRE)plo(ooth(c.tre, col= 4, ad = TRE

?

# 隨機(jī)森林和變量重要性ctl <traontr(mthod= "cv, numbr = 10,clasPos = RUEoClssSummry)rf.grid - xpa.gr(mt = 1:10,spltrule "gini"min.nd.sie =seq(from = 1,to ?12, by = 2))se.sed(1)rf.fit <- inqualmthd= "ranger",meric = "ROC", = ctrlgglt(rf.it,hiliht ?TRE)

scle.ermutatin.iportace ?TRU)barplt(sort(rangr::imoranc(random

?

?



支持向量機(jī)

我們使用帶有線性核的 SVM,并調(diào)整了成本函數(shù)。我們發(fā)現(xiàn)具有最大化 ROChad 成本的模型 = 0.59078。該模型的 ROC 為 0.816,準(zhǔn)確度為 0.75(測試誤差為 0.25)(95%CI:0.71-0.79)。質(zhì)量預(yù)測最重要的變量是酒精;揮發(fā)性酸度和總二氧化硫也是比較重要的變量。如果真實(shí)邊界是非線性的,則具有徑向核的 SVM 性能更好。

st.seed(svl.fi <- tain(qual~ . ,data = trainDatamehod= "mLar2",tueGri = data.frae(cos = ep(seq(-25,ln = 0))

?

?


?

?

## 帶徑向核的SVMsvmr.grid ?epand.gid(C = epseq(1,4,le=10)),iga = expsq(8,len=10)))svmr.it<- tan(qual ~ .,da = taiDataRialSigma",preProcess= c("cer" "scale"),tunnrol = c)

?

?

?

模型比較 ?

模型建立后,我們根據(jù)所有模型的訓(xùn)練和測試性能進(jìn)行模型比較。下表顯示了所有模型的交叉驗(yàn)證分類錯誤率和 ROC。結(jié)果中,隨機(jī)森林模型的 AUC 值最大,而 KNN 最小。因此,我們選擇隨機(jī)森林模型作為我們數(shù)據(jù)的最佳預(yù)測分類模型?;陔S機(jī)森林模型,酒精、硫酸鹽、揮發(fā)性酸度、總二氧化硫和密度是幫助我們預(yù)測葡萄酒質(zhì)量分類的前 5 個重要預(yù)測因子。由于酒精、硫酸鹽和揮發(fā)性酸度等因素可能決定葡萄酒的風(fēng)味和口感,所以這樣的發(fā)現(xiàn)符合我們的預(yù)期。在查看每個模型的總結(jié)時,我們意識到KNN模型的AUC值最低,測試分類錯誤率最大,為0.367。其他九個模型的 AUC 值接近,約為 82%。

rsam = rsmes(list(summary(resamp)



comrin = sumaryes)$satitics$ROr_quare ?smary(rsamp)saisis$sqrekntr::ableomris[,1:6])

?

bpot(remp meic = "ROC")

?

f<- datafram(dl_Name, TainError,Test_Eror, Tes_RC)knir::abe(df)

結(jié)論

模型構(gòu)建過程表明,在訓(xùn)練數(shù)據(jù)集中,酒精、硫酸鹽、揮發(fā)性酸度、總二氧化硫和密度是葡萄酒質(zhì)量分類的前 5 個重要預(yù)測因子。我們選擇了隨機(jī)森林模型,因?yàn)樗?AUC 值最大,分類錯誤率最低。該模型在測試數(shù)據(jù)集中也表現(xiàn)良好。因此,這種隨機(jī)森林模型是葡萄酒品質(zhì)分類的有效方法。?

關(guān)于作者

在此對Donglei Niu對本文所作的貢獻(xiàn)表示誠摯感謝,他在上海大學(xué)完成了運(yùn)籌學(xué)與最優(yōu)控制的碩士學(xué)位,專注機(jī)器學(xué)習(xí)算法、數(shù)學(xué)建模領(lǐng)域。擅長Python、R語言、Matlab。

最受歡迎的見解

1.PYTHON用戶流失數(shù)據(jù)挖掘:建立邏輯回歸、XGBOOST、隨機(jī)森林、決策樹、支持向量機(jī)、樸素貝葉斯模型和KMEANS聚類用戶畫像

2.R語言基于樹的方法:決策樹,隨機(jī)森林

3.python中使用scikit-learn和pandas決策樹

4.機(jī)器學(xué)習(xí):在SAS中運(yùn)行隨機(jī)森林?jǐn)?shù)據(jù)分析報告

5.R語言用隨機(jī)森林和文本挖掘提高航空公司客戶滿意度

6.機(jī)器學(xué)習(xí)助推快時尚精準(zhǔn)銷售時間序列

7.用機(jī)器學(xué)習(xí)識別不斷變化的股市狀況——隱馬爾可夫模型的應(yīng)用

8.python機(jī)器學(xué)習(xí):推薦系統(tǒng)實(shí)現(xiàn)(以矩陣分解來協(xié)同過濾)

9.python中用pytorch機(jī)器學(xué)習(xí)分類預(yù)測銀行客戶流失


【視頻】R語言LDA線性判別、QDA二次判別分析分類葡萄酒品質(zhì)數(shù)據(jù)的評論 (共 條)

分享到微博請遵守國家法律
健康| 德昌县| 青浦区| 宜兰市| 台安县| 淮南市| 灵武市| 吉木萨尔县| 玛多县| 大城县| 米易县| 桑植县| 盖州市| 怀来县| 邢台市| 探索| 西乡县| 麟游县| 景洪市| 冷水江市| 济宁市| 陇川县| 新密市| 五大连池市| 册亨县| 周宁县| 高青县| 安仁县| 靖州| 犍为县| 乐陵市| 泊头市| 长阳| 汉寿县| 湄潭县| 黑河市| 木兰县| 唐山市| 连州市| 和顺县| 清丰县|