首页 文章

在插入符号的交叉验证过程中计算模型校准?

提问于
浏览
1

第一次在这里发布海报,为新秀错误道歉

我使用R中的插入包进行分类 . 我在训练集上使用重复的10倍交叉验证来拟合一些模型(GBM,线性SVM,NB,LDA) . 使用自定义trainControl,插入符号甚至可以为我提供一系列模型性能指标,如ROC,Spec / sens,Kappa,测试折叠的准确度 . 这太棒了 . 我希望还有一个衡量标准:模型校准的一些衡量标准 .

我注意到插入符号中有一个function可以创建一个校准图来估计部分数据的模型性能的一致性 . 在交叉验证的模型构建过程中,是否可以为每个测试折叠计算插入符号?或者它只能应用于我们正在预测的一些新的数据?

对于某些情况,目前我有这样的事情:

fitControl <- trainControl(method = "repeatedcv", repeats=2, number = 10, classProbs = TRUE, summaryFunction = custom.summary)
gbmGrid <-  expand.grid(.interaction.depth = c(1,2,3),.n.trees = seq(100,800,by=100),.shrinkage = c(0.01))
gbmModel <- train(y= train_target, x = data.frame(t_train_predictors),
              method = "gbm",
              trControl = fitControl,
              tuneGrid = gbmGrid,
              verbose = FALSE)

如果它有帮助,我使用~25个数字预测值,N = 2,200,预测一个两级因子 .

非常感谢您的任何帮助/建议 . 亚当

1 回答

  • 6

    calibration 函数接受您提供的任何数据 . 您可以从 train 子对象 pred 获取重新采样的值:

    > set.seed(1)
    > dat <- twoClassSim(2000)
    > 
    > set.seed(2)
    > mod <- train(Class ~ ., data = dat, 
    +              method = "lda",
    +              trControl = trainControl(savePredictions = TRUE,
    +                                       classProbs = TRUE))
    > 
    > str(mod$pred)
    'data.frame':   18413 obs. of  7 variables:
     $ pred     : Factor w/ 2 levels "Class1","Class2": 1 2 2 1 1 2 1 1 2 1 ...
     $ obs      : Factor w/ 2 levels "Class1","Class2": 1 2 2 1 1 2 1 1 2 2 ...
     $ Class1   : num  0.631 0.018 0.138 0.686 0.926 ...
     $ Class2   : num  0.369 0.982 0.8616 0.3139 0.0744 ...
     $ rowIndex : int  1 3 4 10 12 13 18 22 25 27 ...
     $ parameter: Factor w/ 1 level "none": 1 1 1 1 1 1 1 1 1 1 ...
     $ Resample : chr  "Resample01" "Resample01" "Resample01" "Resample01" ...
    

    然后你可以使用:

    > cal <- calibration(obs ~ Class1, data = mod$pred)
    > xyplot(cal)
    

    请记住,使用许多重新采样方法,单个训练集实例将被多次保留:

    > table(table(mod$pred$rowIndex))
    
      2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17 
      2  11  30  77 135 209 332 314 307 231 185  93  48  16   6   4
    

    如果您愿意,可以按 rowIndex 平均类概率 .

    马克斯

相关问题