【视频】R语言LDA线性判别、QDA二次判别分析分类葡萄酒品质数据|数据分享(上):https://developer.aliyun.com/article/1497224
非线性模型 在 GAM 模型中,只有挥发性酸度的自由度等于 1,表明线性关联,而对所有其他 10 个变量应用平滑样条。
结果表明,酒精、柠檬酸、残糖、硫酸盐、固定酸度、挥发性酸度、氯化物和总二氧化硫是显着的预测因子(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。我们还执行了 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)。预测葡萄酒质量的最重要变量是酒精、挥发性酸度和硫酸盐。59-0.68),ROC 为 0.672。QDA模型显示ROC为0.784,准确率为0.71(95%CI:0.66-0.75)。
预测葡萄酒质量的最重要变量是酒精、挥发性酸度和硫酸盐。59-0.68),ROC 为 0.672。QDA模型显示ROC为0.784,准确率为0.71(95%CI:0.66-0.75)。预测葡萄酒质量的最重要变量是酒精、挥发性酸度和硫酸盐。
GAM 和 MARS 的优点是这两个模型都是非参数模型,并且能够处理高度复杂的非线性关系。具体来说,MARS 模型可以在模型中包含潜在的交互作用。然而,由于模型的复杂性、耗时的计算和高度的过拟合倾向是这两种模型的局限性。对于 KNN 模型,当 k 很大时,预测可能不准确。
### GAM se.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] <- "poo referetv = "good")
model.mars$finalModel
vpmodl.rs$inlodel)
# 绘制测试ROC图 ocmas <- roctestataqua, tes.pred.rob4god) ## Stting level: conrol = god, case= poor ## Settig diectio: cntrols> case plot(ro.mars legac.axes = TRE, prin.auc= RUE) plot(soothroc.mars), co = 4, ad =TRUE)
errr.tria.mas <-man(tainat$qul ! trai.red.ars) ### KNN Grid < epa.gri(k seq(from = 1, to = 40, by = 1)) seted(1 fknnrainqual ~., dta = trnData, mthd ="knn" metrrid = kid) ggplot(fitkn
# 建立混淆矩阵 ts.re.po7 < prdi(ft.kn, ewdt = estDaa type = "prb"
### QDA seteed1)%>% pyr:c-ual), y= trataq ethod "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)。我们还进行了随机森林方法来研究变量的重要性。因此,酒精是最重要的变量,其次是硫酸盐、挥发性酸度、总二氧化硫、密度、氯化物、固定酸度、柠檬酸、游离二氧化硫和残糖。pH 是最不重要的变量。对于随机森林模型,测试错误率为 0.163,准确率为 0.84(95%CI:0.80-0.87),ROC 为 0.900。树方法的一个潜在限制是它们对数据的变化很敏感,即数据的微小变化可能引起分类树的较大变化。
# 分类 ctr <- tintol(meod ="cv", number = 10, smmryFuton= twoClassSma et.se(1 rart_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,并调整了成本函数。我们发现具有最大化 ROChad 成本的模型 = 0.59078。该模型的 ROC 为 0.816,准确度为 0.75(测试误差为 0.25)(95%CI:0.71-0.79)。质量预测最重要的变量是酒精;挥发性酸度和总二氧化硫也是比较重要的变量。如果真实边界是非线性的,则具有径向核的 SVM 性能更好。
st.seed( svl.fi <- tain(qual~ . , data = trainData mehod= "mLar2", tueGri = data.frae(cos = ep(seq(-25,ln = 0))
## 带径向核的SVM svmr.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 最小。因此,我们选择随机森林模型作为我们数据的最佳预测分类模型。基于随机森林模型,酒精、硫酸盐、挥发性酸度、总二氧化硫和密度是帮助我们预测葡萄酒质量分类的前 5 个重要预测因子。由于酒精、硫酸盐和挥发性酸度等因素可能决定葡萄酒的风味和口感,所以这样的发现符合我们的预期。在查看每个模型的总结时,我们意识到KNN模型的AUC值最低,测试分类错误率最大,为0.367。其他九个模型的 AUC 值接近,约为 82%。
rsam = rsmes(list( summary(resamp)
comrin = sumaryes)$satitics$RO r_quare smary(rsamp)saisis$sqre kntr::ableomris[,1:6])
bpot(remp meic = "ROC")
f<- datafram(dl_Name, TainError,Test_Eror, Tes_RC) knir::abe(df)
结论
模型构建过程表明,在训练数据集中,酒精、硫酸盐、挥发性酸度、总二氧化硫和密度是葡萄酒质量分类的前 5 个重要预测因子。我们选择了随机森林模型,因为它的 AUC 值最大,分类错误率最低。该模型在测试数据集中也表现良好。因此,这种随机森林模型是葡萄酒品质分类的有效方法。