我进行了一个受惩罚的logistic回归,我用插入符号(glmnet)训练一个模型。
model_fit <- train(Data[,-1], Data[,1],
method = "glmnet",
family="binomial",
metric = "ROC",
maximize="TRUE",
trControl = ctrl,
preProc = c("center", "scale"),
tuneGrid=expand.grid(.alpha=0.5,.lambda=lambdaSeq)
)根据插入符号文档,函数train“.计算基于重采样的性能度量”和“在每个数据集中,计算被保留样本的性能,并总结每个组合的均值和标准差”。
results是“一个数据帧”(包含)“训练错误率和调优参数的值”。
model_fit$results$ROC是一个向量(其大小等于我的调优参数lambda的大小),它是跨重采样的性能度量的平均值吗?(而不是在重新估计整个样本对每个lambda值的模型之后,计算出整个样本的性能度量吗?)
发布于 2018-01-18 12:19:20
model_fit$results$ROC是一个向量(其大小等于我的调优参数lambda的大小),它是跨重采样的性能度量的平均值吗?
确切地说,长度将等于您的tuneGrid的行数,在这里它恰好与您的lambdaSeq的长度相一致(因为唯一的其他参数alpha是不变的)。
下面是一个来自 docs的快速示例(它使用了gbm和Accuracy度量,但想法是相同的):
library(caret)
library(mlbench)
data(Sonar)
set.seed(998)
inTraining <- createDataPartition(Sonar$Class, p = .75, list = FALSE)
training <- Sonar[ inTraining,]
testing <- Sonar[-inTraining,]
fitControl <- trainControl(method = "cv",
number = 5)
set.seed(825)
gbmGrid <- expand.grid(interaction.depth = 3,
n.trees = (1:3)*50,
shrinkage = 0.1,
n.minobsinnode = 20)
gbmFit1 <- train(Class ~ ., data = training,
method = "gbm",
trControl = fitControl,
tuneGrid = gbmGrid,
## This last option is actually one
## for gbm() that passes through
verbose = FALSE)在这里,gbmGrid有3行,即它仅由三(3)个不同的n.trees值组成,其他参数保持不变;因此,相应的gbmFit1$results$Accuracy将是长度为3的向量:
gbmGrid
# interaction.depth n.trees shrinkage n.minobsinnode
# 1 3 50 0.1 20
# 2 3 100 0.1 20
# 3 3 150 0.1 20
gbmFit1$results
# shrinkage interaction.depth n.minobsinnode n.trees Accuracy Kappa AccuracySD KappaSD
# 1 0.1 3 20 50 0.7450672 0.4862194 0.05960941 0.1160537
# 2 0.1 3 20 100 0.7829704 0.5623801 0.05364031 0.1085451
# 3 0.1 3 20 150 0.7765188 0.5498957 0.05263735 0.1061387
gbmFit1$results$Accuracy
# [1] 0.7450672 0.7829704 0.7765188返回的3个Accuracy值中的每一个都是我们作为重采样技术使用的5倍交叉验证的验证折叠中的度量结果;更准确地说,它是在这5倍中计算出的验证精度的平均值(您可以看到有一个AccuracySD列,也包含它的标准差)。
而不是在重新估计整个样本对每个lambda值的模型之后,计算出整个样本的性能度量吗?
对,不是那样的。
https://stackoverflow.com/questions/48301278
复制相似问题