说我有维数:
> dim(traindf)
[1] 5000 25我想提取一个有用的logistic回归模型。为此,我使用了下面的插入符号代码,使用了10倍交叉验证的反向逐步选择。
trControl <- trainControl(method="cv", # K-folk Cross-validation
number = 10, # K = 10
savePredictions = T,
classProbs = T,
verboseIter = T,
summaryFunction = twoClassSummary)
caret_model <- train(Class~.,
traindf,
method="glmStepAIC", # Step wise AIC
family="binomial", # Logistic regression is specified
direction="backward", # Backward selection
trace = F,
trControl=trControl)代码工作正常,它返回一个0.86 ROC的模型。
我的问题是这个算法是如何工作的。
我不确定,对于每个k变量的模型,逐步选择的是偏差最小的模型还是AIC?
2-算法是否交叉验证每个k变量的最佳模型,并从所有这些变量中输出最佳模型,还是仅仅交叉验证基于AIC的最佳模型的步骤选择?
发布于 2022-02-02 07:49:37
caret方法glmStepAIC内部调用MASS::stepAIC,因此您的第一个问题的答案是AIC用于变量的选择。
回答你的第二个问题。卡雷特按照你在trainControl中定义的那样划分数据,在你的例子中,这是10倍的简历。对10个训练集中的每一个进行glmStepAIC,选择基于AIC的最优模型,并利用该模型对各自的CV测试集进行预测。这些预测的平均性能在caret_model$results下报告。在此基础上,对所提供的数据进行glmStepAIC运行,并选择基于AIC的最优模型,将模型存储在caret_model$finalModel中,用于对新数据的预测。
https://stackoverflow.com/questions/70938683
复制相似问题