在Caret中选择不同的ROC设定点

时间:2017-12-11 15:42:53

标签: r r-caret roc

是否可以在Caret Train功能中选择不同的ROC设定点,而不是使用metric = ROC(我认为最大化AUC)。

例如:

random.forest.orig <- train(pass ~ x+y, 
                 data = meter.train,
                 method = "rf",
                 tuneGrid = tune.grid,
                 metric = "ROC",
                 trControl = train.control)

具体来说,我有两类问题(失败或通过),我想最大化失败预测,同时仍然保持> 80%的失败准确度(或负预测值)。即每10次失败,我预测其中至少有8次是正确的。

1 个答案:

答案 0 :(得分:0)

您可以自定义caret::trainControl()对象以使用AUC而不是精确度来调整模型的参数。有关详细信息,请查看caret documentation。 (内置函数twoClassSummary将计算ROC曲线下的灵敏度,特异性和面积。)

注意:为了计算类概率,pass要素必须是因子

下面是使用5倍CV的例子:

fitControl <- caret::trainControl(
  method = "cv",
  number = 5,
  summaryFunction = twoClassSummary,
  classProbs = TRUE,
  verboseIter = TRUE
)

所以你的代码会稍微调整一下:

random.forest.orig <- train(pass ~ x+y, 
             data = meter.train,
             method = "rf",
             tuneGrid = tune.grid,
             metric = "ROC",
             trControl = fitControl)

# Print model to console to examine the output
random.forest.orig