Предупреждающее сообщение пакета Caret: «В пересчитанных показателях производительности отсутствовали значения»

avatar
Hong
9 августа 2021 в 00:06
81
0
0

Я использую пакет caret для обучения нескольких моделей с помощью пакетов rpart и ranger.

Проблема в том, что когда я использую целевую метрику PRAUC, код возвращает предупреждающее сообщение:

# Warning message:
# In nominalTrainWorkflow(x = x, y = y, wts = weights, info = trainInfo,  :
#  There were missing values in resampled performance measures.

Для воспроизводимости я предоставляю код и данные, используя только rpart. Две самые простые версии данных находятся в моей учетной записи github здесь -- они имеют одинаковые зависимые переменные, но используют два разных предиктора, и проблема сохраняется в обеих версиях.

Я запускаю следующий код:

library(caret)

# Download df_1.Rda, df_2.Rda from "https://github.com/hyk0127/ML_ask/tree/master/data"
load("df_1.Rda") # alternatively, load("df_2.Rda")
df_set <- obj

# Define function replacing caret::prSummary to pass a specific 'lev' argument to trainControl
custom_prsummary <- function (data, lev = NULL, model){ 
  lev <- c("Yes", "No")
  pr_auc <- MLmetrics::PRAUC(y_pred = data[, lev[1]], 
                             y_true = ifelse(data$obs == lev[1], 1, 0))
  out <- 
    c(PRAUC = pr_auc, 
    Precision = caret::precision(data = data$pred, 
                                  reference = data$obs, relevant = lev[1]), 
    Recall = caret::recall(data = data$pred, reference = data$obs, relevant = lev[1]), 
    F = caret::F_meas(data = data$pred, reference = data$obs, relevant = lev[1]))
  return(out)
}

tc <- trainControl(
      method = "cv",
      number = 10,
      summaryFunction = custom_prsummary,
      allowParallel = TRUE,
      classProbs = TRUE,
      savePredictions = "final"
    )

out_rpart <- train(
      as.factor(depvar) ~ . 
      metric = "PRAUC",
      method = "rpart",
      trControl = tc,
      data = df_set$train
    )

Я проверил похожие вопросы в этой теме и этой теме и некоторых других, но они не относятся к моему случаю. out$resample не имеет значений NA, как и сами данные.

Я был бы очень признателен за любую информацию/решение проблемы. Спасибо!

Источник

Ответы (0)