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

问题描述 投票:0回答:1

我在理解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)
r r-caret
1个回答
0
投票

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

从功能帮助:

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

如果你检查

random.forest.orig$bestTune

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

© www.soinside.com 2019 - 2024. All rights reserved.