插入符号中的手动摘要功能 - 使所有预测=失败

时间:2017-12-20 17:16:27

标签: r r-caret

我在理解Caret中的手动汇总功能如何工作方面遇到了一些问题。我创建了一个简单的代码来最大化所有预测,因为"失败"。但由于某些原因,它似乎并未将所有实例预测为失败(在训练数据集上)。

请参阅下面的代码:

将所有预测最大化为失败函数:

BS <- function (data, lev = NULL, model = NULL) {
   negpredictions  <- sum(data$pred == "fail")
   names(negpredictions) <- c("Min_Precision")
   negpredictions
 } 

培训脚本:

 train.control <- trainControl(method = "repeatedcv",
                          number = 10,
                          repeats = 3,
                          classProbs = TRUE,
                          #sampling = "smote",
                          summaryFunction = BS,
                          search = "grid")


 tune.grid <- expand.grid(.mtry = seq(from = 1, to = 10, by = 1))


 cl <- makeCluster(3, type = "SOCK")
 registerDoSNOW(cl)
 random.forest.orig <- train(pass ~ manufacturer+meter.type+premise+size+age+avg.winter+totalizer, 
                 data = meter.train,
                 method = "rf",
                 tuneGrid = tune.grid,
                 metric = "Min_Precision",
                 maximize = TRUE,
                 trControl = train.control)
  stopCluster(cl)

1 个答案:

答案 0 :(得分:0)

random.forest.orig$bestTune中指定的指标不是损失函数,而是选择最优模型的指标(在大多数情况下是超参数的最佳组合)。因此,通过指定BS功能,您只需选择最大化“失败”预测的mtry。

来自功能帮助:

  

度量
  一个字符串,指定将使用哪个摘要度量标准来选择最佳模型。默认情况下,对于回归,可能的值为“RMSE”和“Rsquared”,对于分类,可能的值为“Accuracy”和“Kappa”。如果使用自定义性能指标(通过trainControl中的summaryFunction参数,则度量值应与其中一个参数匹配。如果不匹配,则发出警告并使用summaryFunction给出的第一个指标。(注意:如果给定) ,这个论点必须命名。)

如果你检查

sys.path

你会看到最好的曲调是最大化BS功能的曲调。但是,这并不会改变原生模型的损失函数。