插入符号中基于重采样的性能测量

问题描述 投票:0回答:1

我执行一个惩罚的逻辑回归,我用插入符号(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是“A数据帧”(包含)“训练错误率和调整参数值”。

model_fit$results$ROC是一个向量(大小等于我的调整参数lambda的大小)的重新采样性能指标的平均值吗? (对于lambda的每个值,在整个样本上重新估计模型后,并不是对整个样本计算的性能指标?)

r machine-learning r-caret glmnet
1个回答
2
投票

model_fit$results$ROC是一个向量(大小等于我的调整参数lambda的大小)的重新采样性能指标的平均值吗?

它是;确切地说,长度将等于你的tuneGrid的行数,这里它恰好与你的lambdaSeq的长度一致(因为唯一的其他参数,alpha,保持不变)。

这是一个快速的例子,改编自caret docs(它与gbmAccuracy度量,但想法是相同的):

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列,也包含其标准偏差)。

并且,对于λ的每个值,在整个样本上重新估计模型之后,不是对整个样本计算的性能度量?

正确,不是那样的。

© www.soinside.com 2019 - 2024. All rights reserved.