Caret依赖trainControl函数设置交叉验证参数,train函数具体训练和评估模型。首先是选择一系列需要评估的参数和参数值的组合,然后设置重采样评估方式,循环训练模型评估结果、计算模型的平均性能,根据设定的度量值选择最好的模型参数组合,使用全部训练集和最优参数组合完成模型的最终训练。

createDataPartition是拆分数据为训练集和测试集的函数。对于分类数据,按照每个类的大小成比例拆分;如果是回归数据,则先把响应值分为n个区间,再成比例拆分。
CreatemodelwithdefaultparameterstrControl-trainControl(method="repeatedcv",number=10,repeats=3)设置随机数种子,使得结果可重复(seed)rf_default-train(x=train_data,y=train_data_group,method="rf",trControl=trControl)saveRDS(rf_default,"rda/rf_")}print(rf_default)
RandomForest59samples7070predictors2classes:'DLBCL','FL'Nopre-processingResampling:Cross-Validated(10fold,repeated3times)Summaryofsamplesizes:53,53,54,53,53,54,Resamplingresultsacrosstuningparameters:=7069.
精确性随默认调参的变化
plot(rf_default)

str(rf_default)Caret比较不同算法的性能
Caret包的流程统一性在这就体现出来了,我之前没有看过ranger和parRF包,也不知道他们的具体使用。但我可以借助Caret很快地用他们构建一个初步模型,并与randomForest的结果进行比较。
RRF:RegularizedRandomForestif(('rda/RRF_')){RRF_default-readRDS("rda/RRF_")}else{(1)RRF_default-train(x=train_data,y=train_data_group,method="RRF",trControl=trControl)saveRDS(RRF_default,"rda/RRF_")}RRF_default
RegularizedRandomForest59samples7070predictors2classes:'DLBCL','FL'Nopre-processingResampling:Cross-Validated(10fold,repeated3times)Summaryofsamplesizes:53,53,54,53,53,54,Resamplingresultsacrosstuningparameters:=118,coefReg=1andcoefImp=0.
ranger是randomforest的快速版本,特别适用于高维数据,支持分类、回归和生存分析。
rangerisafastimplementationofrandomforests(Breiman2001)orrecursivepartitioning,,regression,RandomForest(Breiman2001),survivalforestsasinRandomSurvivalForests().if(('rda/ranger_')){ranger_default-readRDS("rda/ranger_")}else{(1)ranger_default-train(x=train_data,y=train_data_group,method="ranger",trControl=trControl)saveRDS(ranger_default,"rda/ranger_")}ranger_default
RandomForest59samples7070predictors2classes:'DLBCL','FL'Nopre-processingResampling:Cross-Validated(10fold,repeated3times)Summaryofsamplesizes:52,52,54,53,53,53,Resamplingresultsacrosstuningparameters:''washeldconstantataval=7069,splitrule==1.
parRF是并行随机森林算法。
这个结果时对时错,对Kappa值很高估,还没看什么原因bwplot(resamps)

这个结果跟输出的矩阵是吻合的
dotplot(resamps)

统计检验评估模型之间差异是否显著
(resamps)summary()
Call:(object=)p-valueadjustment:bonferroniUpperdiagonal:estimatesofthedifferenceLowerdiagonal:p-valueforH0:difference=0Caret训练最终模型
if(('rda/rf_')){rf_final-readRDS("rda/rf_")}else{设置随机数种子,使得结果可重复(seed)rf_final-train(x=train_data,y=train_data_group,method="rf",??#Areaunderthecurve:0.9821
ROC_(FPR=1-roc$specificities,TPR=roc$sensitivities)ROC_data-ROC_data[order(ROC_data$FPR),]p-ggplot(data=ROC_data,mapping=aes(x=FPR,y=TPR))+geom_step(color="red",size=1,direction="mid")+geom_segment(aes(x=0,x=1,y=0,y=1))+theme_classic()+xlab("Falsepositiverate")+ylab("Truepositiverate")+coord_fixed(1)+xlim(0,1)+ylim(0,1)+annotate('text',x=0.5,y=0.25,label=paste('AUC=',round(roc$auc,2)))p

机器学习系列教程
从随机森林开始,一步步理解决策树、随机森林、ROC/AUC、数据集、交叉验证的概念和实践。
版权声明:本站所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请举报,一经查实,本站将立刻删除。