Я использую пакет 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, как и сами данные.
Я был бы очень признателен за любую информацию/решение проблемы. Спасибо!