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

歡迎光臨散文網 會員登陸 & 注冊

數據分享|R語言邏輯回歸、線性判別分析LDA、GAM、MARS、KNN、QDA、決策樹、隨機森林、

2022-11-25 18:20 作者:拓端tecdat  | 我要投稿

全文鏈接:http://tecdat.cn/?p=27384

在本文中,數據包含有關葡萄牙“Vinho Verde”葡萄酒的信息?(?點擊文末“閱讀原文”獲取完整代碼數據********?)?。最近我們被客戶要求撰寫關于葡萄酒的研究報告,包括一些圖形和統(tǒng)計輸出。

介紹

該數據集(查看文末了解數據獲取方式)有1599個觀測值和12個變量,分別是固定酸度、揮發(fā)性酸度、檸檬酸、殘?zhí)恰⒙然?、游離二氧化硫、總二氧化硫、密度、pH值、硫酸鹽、酒精和質量。固定酸度、揮發(fā)性酸度、檸檬酸、殘?zhí)?、氯化物、游離二氧化硫、總二氧化硫、密度、pH、硫酸鹽和酒精是自變量并且是連續(xù)的。質量是因變量,根據 0 到 10 的分數來衡量。

相關視頻

**

拓端

,贊15

**

拓端

,贊21

**

拓端

,贊18

**

拓端

,贊19

探索性分析

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

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. 葡萄酒品質和預測特征之間的描述圖。
表 1. 優(yōu)質和劣質葡萄酒的基本特征。

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

點擊標題查閱往期內容

R語言主成分分析(PCA)葡萄酒可視化:主成分得分散點圖和載荷圖

左右滑動查看更多

01

02

03

04

模型

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

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

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

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

###?邏輯回歸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#?檢查預測因素的重要性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)

##?測試誤差和訓練誤差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)

#選擇最佳參數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,表明線性關聯,而對所有其他 10 個變量應用平滑樣條。

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

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

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

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

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

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

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

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

#?分類ctr?<-?tintol(meod?="cv",?number?=?10,smmryFuton=?twoClassSmaet.se(1rart_grid?=?a.fra(cp?=?exp(eq(10,-,?len?=0)))clsste?=?traqua~.,?rainDta,metho?="rprt tueGrid?=?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

#?隨機森林和變量重要性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?<-?inqual mthd=?"ranger", meric?=?"ROC", ?=?ctrl gglt(rf.it,hiliht??TRE)

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




支持向量機

我們使用帶有線性核的 SVM,并調整了成本函數。我們發(fā)現具有最大化 ROChad 成本的模型 = 0.59078。該模型的 ROC 為 0.816,準確度為 0.75(測試誤差為 0.25)(95%CI:0.71-0.79)。質量預測最重要的變量是酒精;揮發(fā)性酸度和總二氧化硫也是比較重要的變量。如果真實邊界是非線性的,則具有徑向核的 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)




模型比較

模型建立后,我們根據所有模型的訓練和測試性能進行模型比較。下表顯示了所有模型的交叉驗證分類錯誤率和 ROC。結果中,隨機森林模型的 AUC 值最大,而 KNN 最小。因此,我們選擇隨機森林模型作為我們數據的最佳預測分類模型。基于隨機森林模型,酒精、硫酸鹽、揮發(fā)性酸度、總二氧化硫和密度是幫助我們預測葡萄酒質量分類的前 5 個重要預測因子。由于酒精、硫酸鹽和揮發(fā)性酸度等因素可能決定葡萄酒的風味和口感,所以這樣的發(fā)現符合我們的預期。在查看每個模型的總結時,我們意識到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)

結論

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

數據獲取

在下面公眾號后臺回復“葡萄酒數****據”,可獲取完整數據。

點擊文末?“閱讀原文”

獲取全文完整資料。

本文選自《R語言懲罰邏輯回歸、線性判別分析LDA、廣義加性模型GAM、多元自適應回歸樣條MARS、KNN、二次判別分析QDA、決策樹、隨機森林、支持向量機SVM分類優(yōu)質劣質葡萄酒十折交叉驗證和ROC可視化》。

點擊標題查閱往期內容

R語言貝葉斯廣義線性混合(多層次/水平/嵌套)模型GLMM、邏輯回歸分析教育留級影響因素數據
邏輯回歸Logistic模型原理R語言分類預測冠心病風險實例
數據分享|用加性多元線性回歸、隨機森林、彈性網絡模型預測鮑魚年齡和可視化
R語言高維數據懲罰回歸方法:主成分回歸PCR、嶺回歸、lasso、彈性網絡elastic net分析基因數據(含練習題)
Python中LARS和Lasso回歸之最小角算法Lars分析波士頓住房數據實例
R語言Bootstrap的嶺回歸和自適應LASSO回歸可視化
R語言Lasso回歸模型變量選擇和糖尿病發(fā)展預測模型R語言實現貝葉斯分位數回歸、lasso和自適應lasso貝葉斯分位數回歸分析
基于R語言實現LASSO回歸分析
R語言用LASSO,adaptive LASSO預測通貨膨脹時間序列
R語言自適應LASSO 多項式回歸、二元邏輯回歸和嶺回歸應用分析
R語言懲罰logistic邏輯回歸(LASSO,嶺回歸)高維變量選擇的分類模型案例
Python中的Lasso回歸之最小角算法LARS
r語言中對LASSO回歸,Ridge嶺回歸和彈性網絡Elastic Net模型實現
r語言中對LASSO回歸,Ridge嶺回歸和Elastic Net模型實現
R語言實現LASSO回歸——自己編寫LASSO回歸算法
R使用LASSO回歸預測股票收益
python使用LASSO回歸預測股票收益


數據分享|R語言邏輯回歸、線性判別分析LDA、GAM、MARS、KNN、QDA、決策樹、隨機森林、的評論 (共 條)

分享到微博請遵守國家法律
苏州市| 光泽县| 阳信县| 蓝山县| 新密市| 潞城市| 达州市| 无为县| 买车| 禹州市| 巫溪县| 孟津县| 道孚县| 阳泉市| 呼和浩特市| 富顺县| 武胜县| 北流市| 西昌市| 开平市| 深圳市| 芜湖县| 德兴市| 通城县| 汉寿县| 邵阳县| 宜都市| 通河县| 保德县| 博白县| 东阳市| 新巴尔虎左旗| 敖汉旗| 茶陵县| 泰州市| 若尔盖县| 台安县| 太康县| 贵定县| 阜阳市| 苏尼特右旗|