首页 文章

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

提问于
浏览
0

我执行一个惩罚的逻辑回归,我用插入符号(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 "[...] calculates a resampling based performance measure"和"Across each data set, the performance of held-out samples is calculated and the mean and standard deviation is summarized for each combination."

results 是"A data frame"(含)"the training error rate and values of the tuning parameters."

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

1 回答

  • 2

    model_fit $结果$ 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 列,也包含其标准偏差) .

    对于每个lambda值,在整个样本上重新估计模型之后,不是对整个样本计算的性能指标?

    正确,不是那样的 .

相关问题