R 在插入符号交叉验证期间计算模型校准?

R 在插入符号交叉验证期间计算模型校准?,r,machine-learning,classification,r-caret,calibration,R,Machine Learning,Classification,R Caret,Calibration,第一次贴在这里,所以为新手的错误道歉 我使用R中的插入符号包进行分类。我在训练集中使用重复的10倍交叉验证来拟合一些模型(GBM、线性SVM、NB、LDA)。使用定制的trainControl,caret甚至为我提供了一整套模型性能指标,如ROC、Spec/sens、Kappa、测试精度。那真是太棒了。还有一个指标,我想有:一些模型校准措施 我注意到有一个内插入符号可以创建一个校准图来估计数据部分中模型性能的一致性。在交叉验证的模型构建过程中,是否可以让插入符号为每个测试折叠计算该值?或者它只能

第一次贴在这里,所以为新手的错误道歉

我使用R中的插入符号包进行分类。我在训练集中使用重复的10倍交叉验证来拟合一些模型(GBM、线性SVM、NB、LDA)。使用定制的trainControl,caret甚至为我提供了一整套模型性能指标,如ROC、Spec/sens、Kappa、测试精度。那真是太棒了。还有一个指标,我想有:一些模型校准措施

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

在某些情况下,目前我有这样的想法:

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)

fitControl校准
calibration
功能获取您提供的任何数据。您可以从
序列
子对象
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" ...
如果愿意,您可以平均每个
行索引的类概率


麦克斯

Ooo谢谢你!这就是我所想的——谢谢你的解决方案。我想对你的解决方案投赞成票,但我还没有任何名声。再次感谢你的帮助和伟大的包裹,马克斯。
> 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